@flamingo-stack/openframe-frontend-core 0.0.383-snapshot.20260708154433 → 0.0.383
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-FBUTS5UQ.js → chunk-6SR7HXGW.js} +4 -4
- package/dist/{chunk-FV2FQQYF.cjs → chunk-7TU6MLIQ.cjs} +12 -12
- package/dist/{chunk-FV2FQQYF.cjs.map → chunk-7TU6MLIQ.cjs.map} +1 -1
- package/dist/{chunk-Q6EGRFVE.cjs → chunk-AHCBZ6TC.cjs} +62 -62
- package/dist/{chunk-Q6EGRFVE.cjs.map → chunk-AHCBZ6TC.cjs.map} +1 -1
- package/dist/{chunk-UOLDL3U3.js → chunk-AJJF43ZL.js} +2 -2
- package/dist/{chunk-FQR2CNKB.js → chunk-B45U4FY5.js} +2 -2
- package/dist/{chunk-Q2OBKYTK.cjs → chunk-BALSUWWU.cjs} +37 -37
- package/dist/{chunk-Q2OBKYTK.cjs.map → chunk-BALSUWWU.cjs.map} +1 -1
- package/dist/{chunk-VZ4NJBQT.js → chunk-CNDLMBFN.js} +283 -345
- package/dist/chunk-CNDLMBFN.js.map +1 -0
- package/dist/{chunk-MVLWQ6OZ.js → chunk-EBOK7SG7.js} +2 -2
- package/dist/{chunk-KJ3O7A65.js → chunk-EGFLSQEJ.js} +4 -4
- package/dist/{chunk-MMYAOMD4.cjs → chunk-FL6YJLPC.cjs} +7 -7
- package/dist/{chunk-MMYAOMD4.cjs.map → chunk-FL6YJLPC.cjs.map} +1 -1
- package/dist/{chunk-XGE53EOX.js → chunk-KBG3PLKS.js} +2 -2
- package/dist/{chunk-KJTGCH3I.cjs → chunk-KFTCNBSJ.cjs} +5 -5
- package/dist/{chunk-KJTGCH3I.cjs.map → chunk-KFTCNBSJ.cjs.map} +1 -1
- package/dist/{chunk-FSN3GIUJ.cjs → chunk-KGSOMSHT.cjs} +25 -25
- package/dist/{chunk-FSN3GIUJ.cjs.map → chunk-KGSOMSHT.cjs.map} +1 -1
- package/dist/{chunk-K7YBWMJ6.js → chunk-KQQ6U4UW.js} +4 -4
- package/dist/{chunk-JEADRVBL.js → chunk-LI7OAUSA.js} +4 -4
- package/dist/{chunk-LMIN2CWQ.js → chunk-MY7TV47R.js} +2 -2
- package/dist/{chunk-KI5QS5C2.cjs → chunk-S2V4EPKL.cjs} +15 -15
- package/dist/{chunk-KI5QS5C2.cjs.map → chunk-S2V4EPKL.cjs.map} +1 -1
- package/dist/{chunk-EEUUTWFQ.js → chunk-SGMZQTP6.js} +2 -2
- package/dist/{chunk-NGWYDTZZ.cjs → chunk-VQCV3GGI.cjs} +120 -182
- package/dist/chunk-VQCV3GGI.cjs.map +1 -0
- package/dist/{chunk-AZOME5YC.cjs → chunk-W456FUZG.cjs} +57 -57
- package/dist/{chunk-AZOME5YC.cjs.map → chunk-W456FUZG.cjs.map} +1 -1
- package/dist/{chunk-H7PRWFAQ.cjs → chunk-WVJFSCXR.cjs} +26 -26
- package/dist/{chunk-H7PRWFAQ.cjs.map → chunk-WVJFSCXR.cjs.map} +1 -1
- package/dist/{chunk-FG4J67VX.cjs → chunk-YW6K7IYF.cjs} +31 -31
- package/dist/{chunk-FG4J67VX.cjs.map → chunk-YW6K7IYF.cjs.map} +1 -1
- package/dist/{chunk-U22GJXOD.js → chunk-ZD6GZX7E.js} +2 -2
- package/dist/{chunk-WRAECAST.cjs → chunk-ZFIDR55N.cjs} +9 -9
- package/dist/{chunk-WRAECAST.cjs.map → chunk-ZFIDR55N.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/approval-batch-message.d.ts +0 -20
- package/dist/components/chat/approval-batch-message.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +2 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +1 -3
- 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/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-tile.d.ts +2 -8
- package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/types.d.ts +1 -11
- package/dist/components/features/notifications/types.d.ts.map +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 +120 -122
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +9 -11
- package/dist/components/index.js.map +1 -1
- 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 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +1 -3
- package/dist/index.cjs +2 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -3
- package/package.json +1 -1
- package/src/components/chat/approval-batch-message.tsx +15 -28
- package/src/components/features/notifications/approval-request-notification-tile.tsx +46 -70
- package/src/components/features/notifications/notification-tile.tsx +41 -125
- package/src/components/features/notifications/types.ts +1 -11
- package/src/stories/NotificationDrawer.stories.tsx +31 -220
- package/dist/chunk-NGWYDTZZ.cjs.map +0 -1
- package/dist/chunk-VZ4NJBQT.js.map +0 -1
- /package/dist/{chunk-FBUTS5UQ.js.map → chunk-6SR7HXGW.js.map} +0 -0
- /package/dist/{chunk-UOLDL3U3.js.map → chunk-AJJF43ZL.js.map} +0 -0
- /package/dist/{chunk-FQR2CNKB.js.map → chunk-B45U4FY5.js.map} +0 -0
- /package/dist/{chunk-MVLWQ6OZ.js.map → chunk-EBOK7SG7.js.map} +0 -0
- /package/dist/{chunk-KJ3O7A65.js.map → chunk-EGFLSQEJ.js.map} +0 -0
- /package/dist/{chunk-XGE53EOX.js.map → chunk-KBG3PLKS.js.map} +0 -0
- /package/dist/{chunk-K7YBWMJ6.js.map → chunk-KQQ6U4UW.js.map} +0 -0
- /package/dist/{chunk-JEADRVBL.js.map → chunk-LI7OAUSA.js.map} +0 -0
- /package/dist/{chunk-LMIN2CWQ.js.map → chunk-MY7TV47R.js.map} +0 -0
- /package/dist/{chunk-EEUUTWFQ.js.map → chunk-SGMZQTP6.js.map} +0 -0
- /package/dist/{chunk-U22GJXOD.js.map → chunk-ZD6GZX7E.js.map} +0 -0
|
@@ -826,18 +826,15 @@ function CommandBlock({ command, className }) {
|
|
|
826
826
|
// src/components/chat/approval-batch-message.tsx
|
|
827
827
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
828
828
|
var COMMAND_BODY_KEYS = new Set(COMMAND_BODY_ARG_KEYS);
|
|
829
|
-
function
|
|
830
|
-
const suffix =
|
|
829
|
+
function renderStatusTag(status, isClient, resolvedByName) {
|
|
830
|
+
const suffix = isClient && resolvedByName ? ` by ${resolvedByName}` : "";
|
|
831
831
|
if (status === "approved") {
|
|
832
832
|
return /* @__PURE__ */ jsx5(Tag, { label: `Approved${suffix}`, variant: "success", icon: /* @__PURE__ */ jsx5(CheckCircleIcon, { className: "w-4 h-4" }) });
|
|
833
833
|
}
|
|
834
834
|
if (status === "cancelled") {
|
|
835
835
|
return /* @__PURE__ */ jsx5(Tag, { label: `Canceled${suffix}`, variant: "grey", icon: /* @__PURE__ */ jsx5(XmarkIcon, { className: "w-4 h-4" }) });
|
|
836
836
|
}
|
|
837
|
-
|
|
838
|
-
return /* @__PURE__ */ jsx5(Tag, { label: `Rejected${suffix}`, variant: "error", icon: /* @__PURE__ */ jsx5(XmarkCircleIcon, { className: "w-4 h-4" }) });
|
|
839
|
-
}
|
|
840
|
-
return null;
|
|
837
|
+
return /* @__PURE__ */ jsx5(Tag, { label: `Rejected${suffix}`, variant: "error", icon: /* @__PURE__ */ jsx5(XmarkCircleIcon, { className: "w-4 h-4" }) });
|
|
841
838
|
}
|
|
842
839
|
function getArgEntries(call) {
|
|
843
840
|
const args = call.toolCallArguments;
|
|
@@ -919,7 +916,7 @@ function ToolCallRow({ call, expanded, onToggle, batchStatus, execution, showExe
|
|
|
919
916
|
);
|
|
920
917
|
}
|
|
921
918
|
var ApprovalBatchMessage = forwardRef2(
|
|
922
|
-
({ className, data, onApprove, onReject, status = "pending", maxBodyHeight, resolvedByName, showExecutionStatus = true, assistantType,
|
|
919
|
+
({ className, data, onApprove, onReject, status = "pending", maxBodyHeight, resolvedByName, showExecutionStatus = true, assistantType, ...props }, ref) => {
|
|
923
920
|
const [expandedId, setExpandedId] = useState3(null);
|
|
924
921
|
const [isProcessing, setIsProcessing] = useState3(false);
|
|
925
922
|
const isClient = assistantType === "fae";
|
|
@@ -940,7 +937,7 @@ var ApprovalBatchMessage = forwardRef2(
|
|
|
940
937
|
setIsProcessing(false);
|
|
941
938
|
}
|
|
942
939
|
};
|
|
943
|
-
const showFooterBlock = explanations.length > 0 ||
|
|
940
|
+
const showFooterBlock = explanations.length > 0 || status !== void 0;
|
|
944
941
|
return /* @__PURE__ */ jsxs4(
|
|
945
942
|
"div",
|
|
946
943
|
{
|
|
@@ -991,7 +988,7 @@ var ApprovalBatchMessage = forwardRef2(
|
|
|
991
988
|
),
|
|
992
989
|
children: [
|
|
993
990
|
explanations.length > 0 && /* @__PURE__ */ jsx5("ul", { className: "list-disc pl-5 text-h6 text-ods-text-primary w-full", children: explanations.map((expl, i) => /* @__PURE__ */ jsx5("li", { children: expl }, i)) }),
|
|
994
|
-
|
|
991
|
+
status === "pending" ? /* @__PURE__ */ jsxs4("div", { className: "flex gap-[var(--spacing-system-xsf)] items-center", children: [
|
|
995
992
|
/* @__PURE__ */ jsx5(
|
|
996
993
|
Button,
|
|
997
994
|
{
|
|
@@ -1023,12 +1020,12 @@ var ApprovalBatchMessage = forwardRef2(
|
|
|
1023
1020
|
}
|
|
1024
1021
|
)
|
|
1025
1022
|
] }) : /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
1026
|
-
|
|
1023
|
+
renderStatusTag(status, isClient, resolvedByName),
|
|
1027
1024
|
!isClient && resolvedByName && /* @__PURE__ */ jsxs4("span", { className: "text-h6 text-ods-text-secondary", children: [
|
|
1028
1025
|
"by ",
|
|
1029
1026
|
resolvedByName
|
|
1030
1027
|
] })
|
|
1031
|
-
] })
|
|
1028
|
+
] })
|
|
1032
1029
|
]
|
|
1033
1030
|
}
|
|
1034
1031
|
)
|
|
@@ -11552,7 +11549,7 @@ function OnboardingGuideCard({
|
|
|
11552
11549
|
}
|
|
11553
11550
|
|
|
11554
11551
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
11555
|
-
import { useState as
|
|
11552
|
+
import { useState as useState100 } from "react";
|
|
11556
11553
|
import { ThumbsUp, ThumbsDown } from "lucide-react";
|
|
11557
11554
|
|
|
11558
11555
|
// src/components/chat/entity-cards/roadmap-vote-button.tsx
|
|
@@ -11593,7 +11590,7 @@ function RoadmapVoteButton({
|
|
|
11593
11590
|
init_button();
|
|
11594
11591
|
|
|
11595
11592
|
// src/components/ui/image-gallery-modal.tsx
|
|
11596
|
-
import { useState as
|
|
11593
|
+
import { useState as useState99, useEffect as useEffect74 } from "react";
|
|
11597
11594
|
|
|
11598
11595
|
// src/components/ui/allowed-domains-input.tsx
|
|
11599
11596
|
init_cn();
|
|
@@ -24102,7 +24099,7 @@ function OrganizationCard({
|
|
|
24102
24099
|
|
|
24103
24100
|
// src/components/ui/service-card.tsx
|
|
24104
24101
|
init_cn();
|
|
24105
|
-
import { useMemo as useMemo35, useState as
|
|
24102
|
+
import { useMemo as useMemo35, useState as useState86 } from "react";
|
|
24106
24103
|
import { ExternalLink as ExternalLink7 } from "lucide-react";
|
|
24107
24104
|
|
|
24108
24105
|
// src/components/providers/dynamic-theme-provider.tsx
|
|
@@ -31051,51 +31048,20 @@ init_button2();
|
|
|
31051
31048
|
init_cn();
|
|
31052
31049
|
|
|
31053
31050
|
// src/components/features/notifications/notification-tile.tsx
|
|
31054
|
-
import { useMemo as useMemo28, useEffect as useEffect52
|
|
31051
|
+
import { useMemo as useMemo28, useEffect as useEffect52 } from "react";
|
|
31052
|
+
init_button();
|
|
31055
31053
|
init_cn();
|
|
31056
31054
|
import { jsx as jsx247, jsxs as jsxs194 } from "react/jsx-runtime";
|
|
31057
|
-
var variantBySeverity = {
|
|
31058
|
-
INFO: "info",
|
|
31059
|
-
SUCCESS: "success",
|
|
31060
|
-
WARNING: "warning",
|
|
31061
|
-
DANGER: "error"
|
|
31062
|
-
};
|
|
31063
|
-
var typeColorByVariant = {
|
|
31064
|
-
default: "text-ods-text-secondary",
|
|
31065
|
-
info: "text-ods-text-secondary",
|
|
31066
|
-
success: "text-ods-success",
|
|
31067
|
-
warning: "text-ods-warning",
|
|
31068
|
-
error: "text-ods-error"
|
|
31069
|
-
};
|
|
31070
|
-
var headerControlClass = "absolute inset-0 flex items-center justify-center text-ods-text-secondary transition-opacity duration-200 hover:text-ods-text-primary";
|
|
31071
31055
|
function NotificationTile({
|
|
31072
31056
|
notification,
|
|
31073
31057
|
liveDurationMs = 4e3,
|
|
31074
31058
|
onComplete,
|
|
31075
31059
|
onSettle,
|
|
31076
31060
|
className,
|
|
31077
|
-
actions,
|
|
31078
31061
|
children,
|
|
31079
31062
|
paused = false
|
|
31080
31063
|
}) {
|
|
31081
|
-
const {
|
|
31082
|
-
id,
|
|
31083
|
-
variant = "default",
|
|
31084
|
-
severity,
|
|
31085
|
-
type,
|
|
31086
|
-
icon,
|
|
31087
|
-
imageUrl,
|
|
31088
|
-
title,
|
|
31089
|
-
description,
|
|
31090
|
-
createdAt,
|
|
31091
|
-
read,
|
|
31092
|
-
settled
|
|
31093
|
-
} = notification;
|
|
31094
|
-
const accentVariant = (severity ? variantBySeverity[severity] : void 0) ?? variant;
|
|
31095
|
-
const [failedImageUrl, setFailedImageUrl] = useState72(null);
|
|
31096
|
-
const image = imageUrl && imageUrl !== failedImageUrl ? imageUrl : void 0;
|
|
31097
|
-
const createdAtDate = new Date(createdAt);
|
|
31098
|
-
const createdAtIso = Number.isNaN(createdAtDate.getTime()) ? null : createdAtDate.toISOString();
|
|
31064
|
+
const { id, variant = "default", title, description, createdAt, read, settled } = notification;
|
|
31099
31065
|
const initialElapsed = useMemo28(() => Date.now() - createdAt, [createdAt]);
|
|
31100
31066
|
const isLive = !read && !settled && initialElapsed < liveDurationMs;
|
|
31101
31067
|
const counting = isLive && !paused;
|
|
@@ -31119,75 +31085,37 @@ function NotificationTile({
|
|
|
31119
31085
|
"div",
|
|
31120
31086
|
{
|
|
31121
31087
|
className: cn(
|
|
31122
|
-
"relative flex
|
|
31123
|
-
|
|
31088
|
+
"relative flex items-center gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)]",
|
|
31089
|
+
children ? "border-b border-ods-border" : null
|
|
31124
31090
|
),
|
|
31125
31091
|
children: [
|
|
31126
|
-
/* @__PURE__ */
|
|
31127
|
-
|
|
31128
|
-
"span",
|
|
31129
|
-
{
|
|
31130
|
-
className: cn(
|
|
31131
|
-
"flex size-4 shrink-0 items-center justify-center",
|
|
31132
|
-
typeColorByVariant[accentVariant]
|
|
31133
|
-
),
|
|
31134
|
-
children: image ? /* @__PURE__ */ jsx247(
|
|
31135
|
-
"img",
|
|
31136
|
-
{
|
|
31137
|
-
src: image,
|
|
31138
|
-
alt: "",
|
|
31139
|
-
onError: () => setFailedImageUrl(image),
|
|
31140
|
-
className: "size-4 rounded-[2px] object-cover"
|
|
31141
|
-
}
|
|
31142
|
-
) : icon ?? /* @__PURE__ */ jsx247("span", { className: cn("size-1.5 rounded-full", dotColorByVariant[accentVariant]) })
|
|
31143
|
-
}
|
|
31144
|
-
),
|
|
31145
|
-
type ? /* @__PURE__ */ jsx247(
|
|
31146
|
-
"p",
|
|
31147
|
-
{
|
|
31148
|
-
className: cn("min-w-0 flex-1 truncate text-h5", typeColorByVariant[accentVariant]),
|
|
31149
|
-
title: type,
|
|
31150
|
-
children: type
|
|
31151
|
-
}
|
|
31152
|
-
) : /* @__PURE__ */ jsx247("span", { className: "min-w-0 flex-1" }),
|
|
31153
|
-
!isLive && createdAtIso ? /* @__PURE__ */ jsx247(
|
|
31154
|
-
"time",
|
|
31155
|
-
{
|
|
31156
|
-
dateTime: createdAtIso,
|
|
31157
|
-
className: "shrink-0 whitespace-nowrap text-h6 text-ods-text-secondary",
|
|
31158
|
-
children: formatTicketRelativeTime(createdAtIso)
|
|
31159
|
-
}
|
|
31160
|
-
) : null,
|
|
31161
|
-
/* @__PURE__ */ jsx247("span", { className: "relative size-4 shrink-0", children: [
|
|
31162
|
-
{ active: isLive, label: "Dismiss notification", icon: /* @__PURE__ */ jsx247(XmarkIcon, { size: 16 }), onClick: () => onSettle?.(id) },
|
|
31163
|
-
{ active: !isLive, label: "Mark notification complete", icon: /* @__PURE__ */ jsx247(CheckCircleIcon, { size: 16 }), onClick: () => onComplete(id) }
|
|
31164
|
-
].map(({ active, label, icon: icon2, onClick }) => /* @__PURE__ */ jsx247(
|
|
31165
|
-
"button",
|
|
31166
|
-
{
|
|
31167
|
-
type: "button",
|
|
31168
|
-
onClick,
|
|
31169
|
-
"aria-label": label,
|
|
31170
|
-
"aria-hidden": !active,
|
|
31171
|
-
disabled: !active,
|
|
31172
|
-
tabIndex: active ? 0 : -1,
|
|
31173
|
-
className: cn(headerControlClass, !active && "pointer-events-none opacity-0"),
|
|
31174
|
-
children: icon2
|
|
31175
|
-
},
|
|
31176
|
-
label
|
|
31177
|
-
)) })
|
|
31178
|
-
] }),
|
|
31179
|
-
/* @__PURE__ */ jsxs194("div", { className: "flex min-w-0 flex-col", children: [
|
|
31092
|
+
/* @__PURE__ */ jsx247("div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx247("span", { className: cn("size-1.5 rounded-full", dotColorByVariant[variant]) }) }),
|
|
31093
|
+
/* @__PURE__ */ jsxs194("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
31180
31094
|
title ? /* @__PURE__ */ jsx247("p", { className: "truncate text-h4 text-ods-text-primary", title: typeof title === "string" ? title : void 0, children: title }) : null,
|
|
31181
|
-
description ? /* @__PURE__ */ jsx247("p", { className: "text-h6 line-clamp-
|
|
31095
|
+
description ? /* @__PURE__ */ jsx247("p", { className: "text-h6 line-clamp-2 text-ods-text-secondary", title: typeof description === "string" ? description : void 0, children: description }) : null
|
|
31182
31096
|
] }),
|
|
31183
|
-
|
|
31097
|
+
/* @__PURE__ */ jsx247(
|
|
31098
|
+
Button,
|
|
31099
|
+
{
|
|
31100
|
+
variant: "outline",
|
|
31101
|
+
size: "small",
|
|
31102
|
+
onClick: () => onComplete(id),
|
|
31103
|
+
"aria-label": "Mark notification complete",
|
|
31104
|
+
tabIndex: isLive ? -1 : 0,
|
|
31105
|
+
className: cn(
|
|
31106
|
+
"shrink-0 hover:text-ods-text-primary",
|
|
31107
|
+
isLive && "invisible"
|
|
31108
|
+
),
|
|
31109
|
+
children: /* @__PURE__ */ jsx247(CheckCircleIcon, {})
|
|
31110
|
+
}
|
|
31111
|
+
),
|
|
31184
31112
|
counting ? /* @__PURE__ */ jsx247(
|
|
31185
31113
|
"div",
|
|
31186
31114
|
{
|
|
31187
31115
|
"aria-hidden": true,
|
|
31188
31116
|
className: cn(
|
|
31189
31117
|
"absolute inset-x-0 -bottom-px h-1 origin-left",
|
|
31190
|
-
progressColorByVariant[
|
|
31118
|
+
progressColorByVariant[variant]
|
|
31191
31119
|
),
|
|
31192
31120
|
style: {
|
|
31193
31121
|
animation: `toast-progress ${liveDurationMs}ms linear forwards`,
|
|
@@ -31198,7 +31126,21 @@ function NotificationTile({
|
|
|
31198
31126
|
]
|
|
31199
31127
|
}
|
|
31200
31128
|
),
|
|
31201
|
-
children
|
|
31129
|
+
children,
|
|
31130
|
+
/* @__PURE__ */ jsx247(
|
|
31131
|
+
"button",
|
|
31132
|
+
{
|
|
31133
|
+
type: "button",
|
|
31134
|
+
onClick: () => onSettle?.(id),
|
|
31135
|
+
"aria-label": "Dismiss notification",
|
|
31136
|
+
tabIndex: isLive ? 0 : -1,
|
|
31137
|
+
className: cn(
|
|
31138
|
+
"absolute right-[var(--spacing-system-xsf)] top-[var(--spacing-system-xsf)] flex size-4 items-center justify-center text-ods-text-secondary transition-opacity duration-200 hover:text-ods-text-primary",
|
|
31139
|
+
!isLive && "pointer-events-none opacity-0"
|
|
31140
|
+
),
|
|
31141
|
+
children: /* @__PURE__ */ jsx247(XmarkIcon, { size: 16 })
|
|
31142
|
+
}
|
|
31143
|
+
)
|
|
31202
31144
|
]
|
|
31203
31145
|
}
|
|
31204
31146
|
);
|
|
@@ -31534,8 +31476,8 @@ function NotificationPopups({
|
|
|
31534
31476
|
}
|
|
31535
31477
|
|
|
31536
31478
|
// src/components/features/notifications/approval-request-notification-tile.tsx
|
|
31537
|
-
|
|
31538
|
-
import { useMemo as useMemo29, useState as
|
|
31479
|
+
init_cn();
|
|
31480
|
+
import { useMemo as useMemo29, useState as useState72 } from "react";
|
|
31539
31481
|
|
|
31540
31482
|
// src/components/chat/types/chat.types.ts
|
|
31541
31483
|
var CHAT_TYPE = {
|
|
@@ -31729,7 +31671,7 @@ function approvalMetaToBatchData(approval) {
|
|
|
31729
31671
|
}
|
|
31730
31672
|
|
|
31731
31673
|
// src/components/features/notifications/approval-request-notification-tile.tsx
|
|
31732
|
-
import {
|
|
31674
|
+
import { jsx as jsx250, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
31733
31675
|
function ApprovalRequestNotificationTile({
|
|
31734
31676
|
notification,
|
|
31735
31677
|
onApprove,
|
|
@@ -31740,81 +31682,78 @@ function ApprovalRequestNotificationTile({
|
|
|
31740
31682
|
defaultExpanded = false,
|
|
31741
31683
|
className
|
|
31742
31684
|
}) {
|
|
31743
|
-
const [expanded, setExpanded] =
|
|
31744
|
-
const [pinned, setPinned] =
|
|
31745
|
-
const [
|
|
31746
|
-
const [localStatus, setLocalStatus] = useState73(null);
|
|
31685
|
+
const [expanded, setExpanded] = useState72(defaultExpanded);
|
|
31686
|
+
const [pinned, setPinned] = useState72(defaultExpanded);
|
|
31687
|
+
const [localStatus, setLocalStatus] = useState72(null);
|
|
31747
31688
|
const approval = getApprovalMeta(notification);
|
|
31748
31689
|
const resolvedStatus = resolutionToStatus(approval?.resolution);
|
|
31749
31690
|
const status = resolvedStatus !== "pending" ? resolvedStatus : localStatus ?? "pending";
|
|
31750
31691
|
const batchData = useMemo29(() => approval ? approvalMetaToBatchData(approval) : null, [approval]);
|
|
31751
31692
|
const { innerRef, containerStyle } = useCollapsible({ expanded });
|
|
31752
31693
|
if (!approval || !batchData) return null;
|
|
31753
|
-
const
|
|
31754
|
-
|
|
31755
|
-
|
|
31756
|
-
|
|
31757
|
-
const commandWord = batchData.toolCalls.length > 1 ? "commands" : "command";
|
|
31758
|
-
const toggleLabel = `${expanded ? "Hide" : "Show"} ${commandWord} section`;
|
|
31759
|
-
const resolve = async (nextStatus, action) => {
|
|
31760
|
-
setProcessing(true);
|
|
31761
|
-
setLocalStatus(nextStatus);
|
|
31694
|
+
const commandWord = batchData.toolCalls.length > 1 ? "Commands" : "Command";
|
|
31695
|
+
const toggleLabel = `${expanded ? "Hide" : "Show"} ${commandWord}`;
|
|
31696
|
+
const handleApprove = async () => {
|
|
31697
|
+
setLocalStatus("approved");
|
|
31762
31698
|
try {
|
|
31763
|
-
await
|
|
31699
|
+
await onApprove(batchData.approvalRequestId);
|
|
31700
|
+
onComplete(notification.id);
|
|
31701
|
+
} catch {
|
|
31702
|
+
setLocalStatus(null);
|
|
31703
|
+
}
|
|
31704
|
+
};
|
|
31705
|
+
const handleReject = async () => {
|
|
31706
|
+
setLocalStatus("rejected");
|
|
31707
|
+
try {
|
|
31708
|
+
await onReject(batchData.approvalRequestId);
|
|
31709
|
+
onComplete(notification.id);
|
|
31764
31710
|
} catch {
|
|
31765
31711
|
setLocalStatus(null);
|
|
31766
|
-
return;
|
|
31767
|
-
} finally {
|
|
31768
|
-
setProcessing(false);
|
|
31769
31712
|
}
|
|
31770
|
-
onComplete(notification.id);
|
|
31771
31713
|
};
|
|
31772
|
-
return /* @__PURE__ */
|
|
31714
|
+
return /* @__PURE__ */ jsxs196(
|
|
31773
31715
|
NotificationTile,
|
|
31774
31716
|
{
|
|
31775
|
-
notification
|
|
31717
|
+
notification,
|
|
31776
31718
|
liveDurationMs,
|
|
31777
31719
|
onComplete,
|
|
31778
31720
|
onSettle,
|
|
31779
31721
|
className,
|
|
31780
|
-
paused: pinned
|
|
31781
|
-
|
|
31782
|
-
|
|
31783
|
-
|
|
31784
|
-
/* @__PURE__ */ jsx250(Button, { variant: "outline", size: "small", onClick: () => resolve("rejected", onReject), disabled: processing, children: "Reject" })
|
|
31785
|
-
] }) : /* @__PURE__ */ jsxs196("span", { className: "flex min-w-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
31786
|
-
/* @__PURE__ */ jsx250(ApprovalStatusTag, { status }),
|
|
31787
|
-
approval.resolvedByName ? /* @__PURE__ */ jsxs196("span", { className: "truncate text-h6 text-ods-text-secondary", children: [
|
|
31788
|
-
"by ",
|
|
31789
|
-
approval.resolvedByName
|
|
31790
|
-
] }) : null
|
|
31791
|
-
] }),
|
|
31792
|
-
/* @__PURE__ */ jsx250(
|
|
31793
|
-
Button,
|
|
31722
|
+
paused: pinned,
|
|
31723
|
+
children: [
|
|
31724
|
+
/* @__PURE__ */ jsxs196(
|
|
31725
|
+
"button",
|
|
31794
31726
|
{
|
|
31795
|
-
|
|
31796
|
-
size: "small",
|
|
31727
|
+
type: "button",
|
|
31797
31728
|
onClick: () => {
|
|
31798
31729
|
setExpanded((prev) => !prev);
|
|
31799
31730
|
setPinned(true);
|
|
31800
31731
|
},
|
|
31801
31732
|
"aria-expanded": expanded,
|
|
31802
|
-
|
|
31803
|
-
|
|
31804
|
-
|
|
31733
|
+
className: cn(
|
|
31734
|
+
"flex w-full items-center gap-[var(--spacing-system-xs)] bg-ods-card px-[var(--spacing-system-s)] py-[var(--spacing-system-xs)] text-left",
|
|
31735
|
+
expanded && "border-b border-ods-border"
|
|
31736
|
+
),
|
|
31737
|
+
children: [
|
|
31738
|
+
/* @__PURE__ */ jsx250("span", { className: "min-w-0 flex-1 text-h6 text-ods-text-primary", children: toggleLabel }),
|
|
31739
|
+
/* @__PURE__ */ jsx250(ExpandChevron, { expanded })
|
|
31740
|
+
]
|
|
31805
31741
|
}
|
|
31806
|
-
)
|
|
31807
|
-
|
|
31808
|
-
|
|
31809
|
-
|
|
31810
|
-
|
|
31811
|
-
|
|
31812
|
-
|
|
31813
|
-
|
|
31814
|
-
|
|
31815
|
-
|
|
31816
|
-
|
|
31817
|
-
|
|
31742
|
+
),
|
|
31743
|
+
/* @__PURE__ */ jsx250("div", { style: containerStyle, children: /* @__PURE__ */ jsx250("div", { ref: innerRef, children: /* @__PURE__ */ jsx250(
|
|
31744
|
+
ApprovalBatchMessage,
|
|
31745
|
+
{
|
|
31746
|
+
data: batchData,
|
|
31747
|
+
status,
|
|
31748
|
+
resolvedByName: approval.resolvedByName,
|
|
31749
|
+
showExecutionStatus: false,
|
|
31750
|
+
onApprove: handleApprove,
|
|
31751
|
+
onReject: handleReject,
|
|
31752
|
+
maxBodyHeight: "50vh",
|
|
31753
|
+
className: "mb-0 rounded-none border-0"
|
|
31754
|
+
}
|
|
31755
|
+
) }) })
|
|
31756
|
+
]
|
|
31818
31757
|
}
|
|
31819
31758
|
);
|
|
31820
31759
|
}
|
|
@@ -31844,12 +31783,12 @@ function useOptionalTimeTracker() {
|
|
|
31844
31783
|
|
|
31845
31784
|
// src/components/features/time-tracker/time-tracker-panel.tsx
|
|
31846
31785
|
init_cn();
|
|
31847
|
-
import { useEffect as useEffect55, useState as
|
|
31786
|
+
import { useEffect as useEffect55, useState as useState75 } from "react";
|
|
31848
31787
|
init_button();
|
|
31849
31788
|
init_split_button();
|
|
31850
31789
|
|
|
31851
31790
|
// src/components/features/time-tracker/use-tracker-clock.ts
|
|
31852
|
-
import { useEffect as useEffect54, useState as
|
|
31791
|
+
import { useEffect as useEffect54, useState as useState74 } from "react";
|
|
31853
31792
|
function formatElapsed(totalMs) {
|
|
31854
31793
|
const totalSeconds = Math.max(0, Math.floor(totalMs / 1e3));
|
|
31855
31794
|
const hours = Math.floor(totalSeconds / 3600);
|
|
@@ -31859,7 +31798,7 @@ function formatElapsed(totalMs) {
|
|
|
31859
31798
|
return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
|
|
31860
31799
|
}
|
|
31861
31800
|
function useTrackerClock({ status, runningSince, accumulatedMs = 0 }) {
|
|
31862
|
-
const [now, setNow] =
|
|
31801
|
+
const [now, setNow] = useState74(() => Date.now());
|
|
31863
31802
|
useEffect54(() => {
|
|
31864
31803
|
if (status !== "tracking") return;
|
|
31865
31804
|
setNow(Date.now());
|
|
@@ -31915,7 +31854,7 @@ function TimeTrackerPanel({
|
|
|
31915
31854
|
className
|
|
31916
31855
|
}) {
|
|
31917
31856
|
const elapsedLabel = useTrackerClock({ status, runningSince, accumulatedMs });
|
|
31918
|
-
const [showValidationError, setShowValidationError] =
|
|
31857
|
+
const [showValidationError, setShowValidationError] = useState75(false);
|
|
31919
31858
|
const isRunning = status === "tracking";
|
|
31920
31859
|
const isActive = status !== "ready";
|
|
31921
31860
|
const hasContent = selectedTicketId != null || notes.trim() !== "";
|
|
@@ -32197,7 +32136,7 @@ function HeaderButton({
|
|
|
32197
32136
|
}
|
|
32198
32137
|
|
|
32199
32138
|
// src/components/features/time-tracker/time-tracker-header-button.tsx
|
|
32200
|
-
import { Fragment as
|
|
32139
|
+
import { Fragment as Fragment41, jsx as jsx254, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
32201
32140
|
function TimeTrackerHeaderButton({ className, disabled }) {
|
|
32202
32141
|
const ctx = useOptionalTimeTracker();
|
|
32203
32142
|
const elapsedLabel = useTrackerClock({
|
|
@@ -32221,7 +32160,7 @@ function TimeTrackerHeaderButton({ className, disabled }) {
|
|
|
32221
32160
|
isActive && "w-auto gap-[var(--spacing-system-xsf)] px-[var(--spacing-system-sf)] md:w-auto",
|
|
32222
32161
|
className
|
|
32223
32162
|
),
|
|
32224
|
-
icon: /* @__PURE__ */ jsxs198(
|
|
32163
|
+
icon: /* @__PURE__ */ jsxs198(Fragment41, { children: [
|
|
32225
32164
|
/* @__PURE__ */ jsx254(
|
|
32226
32165
|
ClockHistoryIcon,
|
|
32227
32166
|
{
|
|
@@ -32463,7 +32402,7 @@ function BoardTicketApproval({ pendingApproval, onApprove, onReject }) {
|
|
|
32463
32402
|
}
|
|
32464
32403
|
|
|
32465
32404
|
// src/components/features/board/ticket-card.tsx
|
|
32466
|
-
import { Fragment as
|
|
32405
|
+
import { Fragment as Fragment42, jsx as jsx257, jsxs as jsxs201 } from "react/jsx-runtime";
|
|
32467
32406
|
var PRIORITY_COLOR_CLASS = {
|
|
32468
32407
|
low: "text-ods-text-secondary",
|
|
32469
32408
|
medium: "text-ods-info",
|
|
@@ -32536,7 +32475,7 @@ function TicketCard({
|
|
|
32536
32475
|
] }) : null;
|
|
32537
32476
|
const timestampLabel = ticket.createdAt ? formatTicketRelativeTime(ticket.createdAt) : null;
|
|
32538
32477
|
const tooltipLabel = ticket.createdAt ? formatTicketFullTimestamp(ticket.createdAt) : null;
|
|
32539
|
-
const body = /* @__PURE__ */ jsxs201(
|
|
32478
|
+
const body = /* @__PURE__ */ jsxs201(Fragment42, { children: [
|
|
32540
32479
|
/* @__PURE__ */ jsxs201("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
32541
32480
|
/* @__PURE__ */ jsxs201("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-zero)]", title: ticket.title, children: [
|
|
32542
32481
|
/* @__PURE__ */ jsx257("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
@@ -32664,7 +32603,7 @@ var TicketCardSkeleton = React100.forwardRef(
|
|
|
32664
32603
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
32665
32604
|
|
|
32666
32605
|
// src/components/features/board/board-column.tsx
|
|
32667
|
-
import { Fragment as
|
|
32606
|
+
import { Fragment as Fragment43, jsx as jsx259, jsxs as jsxs203 } from "react/jsx-runtime";
|
|
32668
32607
|
function BoardColumn({
|
|
32669
32608
|
column,
|
|
32670
32609
|
collapsed = false,
|
|
@@ -32703,7 +32642,7 @@ function BoardColumn({
|
|
|
32703
32642
|
onArchive: !collapsed && column.archivable && onArchive ? () => onArchive(column.id) : void 0
|
|
32704
32643
|
}
|
|
32705
32644
|
),
|
|
32706
|
-
!collapsed && /* @__PURE__ */ jsxs203(
|
|
32645
|
+
!collapsed && /* @__PURE__ */ jsxs203(Fragment43, { children: [
|
|
32707
32646
|
/* @__PURE__ */ jsx259("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
32708
32647
|
/* @__PURE__ */ jsx259(
|
|
32709
32648
|
ColumnBody,
|
|
@@ -32796,7 +32735,7 @@ function SkeletonStack({ count = 4 }) {
|
|
|
32796
32735
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
32797
32736
|
[count]
|
|
32798
32737
|
);
|
|
32799
|
-
return /* @__PURE__ */ jsx259(
|
|
32738
|
+
return /* @__PURE__ */ jsx259(Fragment43, { children: keys.map((k) => /* @__PURE__ */ jsx259(TicketCardSkeleton, {}, k)) });
|
|
32800
32739
|
}
|
|
32801
32740
|
function EmptyState2() {
|
|
32802
32741
|
return /* @__PURE__ */ jsxs203("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: [
|
|
@@ -32809,13 +32748,13 @@ function EmptyState2() {
|
|
|
32809
32748
|
}
|
|
32810
32749
|
|
|
32811
32750
|
// src/components/features/board/use-board-collapse.ts
|
|
32812
|
-
import { useCallback as useCallback30, useState as
|
|
32751
|
+
import { useCallback as useCallback30, useState as useState77 } from "react";
|
|
32813
32752
|
function useBoardCollapse(storageKey) {
|
|
32814
32753
|
const [persisted, setPersisted] = useLocalStorage(
|
|
32815
32754
|
storageKey ?? "__board_collapse_unused__",
|
|
32816
32755
|
{}
|
|
32817
32756
|
);
|
|
32818
|
-
const [memory, setMemory] =
|
|
32757
|
+
const [memory, setMemory] = useState77({});
|
|
32819
32758
|
const collapsed = storageKey ? persisted : memory;
|
|
32820
32759
|
const setMap = storageKey ? setPersisted : setMemory;
|
|
32821
32760
|
const toggle = useCallback30(
|
|
@@ -33206,13 +33145,13 @@ function SortableRow({
|
|
|
33206
33145
|
|
|
33207
33146
|
// src/components/navigation/header.tsx
|
|
33208
33147
|
init_next_link();
|
|
33209
|
-
import React104, { useEffect as useEffect58, useRef as useRef42, useState as
|
|
33148
|
+
import React104, { useEffect as useEffect58, useRef as useRef42, useState as useState79 } from "react";
|
|
33210
33149
|
init_button2();
|
|
33211
|
-
import { Fragment as
|
|
33150
|
+
import { Fragment as Fragment45, jsx as jsx262, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
33212
33151
|
function Header2({ config, platform }) {
|
|
33213
|
-
const [show, setShow] =
|
|
33214
|
-
const [lastScrollY, setLastScrollY] =
|
|
33215
|
-
const [openDropdowns, setOpenDropdowns] =
|
|
33152
|
+
const [show, setShow] = useState79(true);
|
|
33153
|
+
const [lastScrollY, setLastScrollY] = useState79(0);
|
|
33154
|
+
const [openDropdowns, setOpenDropdowns] = useState79({});
|
|
33216
33155
|
const dropdownRefs = useRef42({});
|
|
33217
33156
|
const triggerRefs = useRef42({});
|
|
33218
33157
|
useEffect58(() => {
|
|
@@ -33353,7 +33292,7 @@ function Header2({ config, platform }) {
|
|
|
33353
33292
|
},
|
|
33354
33293
|
child.id
|
|
33355
33294
|
)) }),
|
|
33356
|
-
item.dropdownContent && /* @__PURE__ */ jsxs205(
|
|
33295
|
+
item.dropdownContent && /* @__PURE__ */ jsxs205(Fragment45, { children: [
|
|
33357
33296
|
item.showDropdownDivider !== false && /* @__PURE__ */ jsx262("div", { className: "h-px my-2 mx-2 bg-ods-border" }),
|
|
33358
33297
|
/* @__PURE__ */ jsx262("div", { className: "px-2 pb-2", children: item.dropdownContent })
|
|
33359
33298
|
] })
|
|
@@ -33474,7 +33413,7 @@ function Header2({ config, platform }) {
|
|
|
33474
33413
|
}
|
|
33475
33414
|
|
|
33476
33415
|
// src/components/navigation/client-only-header.tsx
|
|
33477
|
-
import { useState as
|
|
33416
|
+
import { useState as useState80, useEffect as useEffect59 } from "react";
|
|
33478
33417
|
|
|
33479
33418
|
// src/components/navigation/header-skeleton.tsx
|
|
33480
33419
|
import { jsx as jsx263, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
@@ -33522,7 +33461,7 @@ function HeaderSkeleton({ config }) {
|
|
|
33522
33461
|
// src/components/navigation/client-only-header.tsx
|
|
33523
33462
|
import { jsx as jsx264 } from "react/jsx-runtime";
|
|
33524
33463
|
function ClientOnlyHeader({ config, skeleton }) {
|
|
33525
|
-
const [isClient, setIsClient] =
|
|
33464
|
+
const [isClient, setIsClient] = useState80(false);
|
|
33526
33465
|
useEffect59(() => {
|
|
33527
33466
|
setIsClient(true);
|
|
33528
33467
|
}, []);
|
|
@@ -33536,7 +33475,7 @@ function ClientOnlyHeader({ config, skeleton }) {
|
|
|
33536
33475
|
import { useEffect as useEffect60, useRef as useRef43 } from "react";
|
|
33537
33476
|
init_button2();
|
|
33538
33477
|
import { X as X10 } from "lucide-react";
|
|
33539
|
-
import { Fragment as
|
|
33478
|
+
import { Fragment as Fragment46, jsx as jsx265, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
33540
33479
|
function MobileNavPanel({ isOpen, config }) {
|
|
33541
33480
|
const panelRef = useRef43(null);
|
|
33542
33481
|
useEffect60(() => {
|
|
@@ -33609,7 +33548,7 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
33609
33548
|
item.id
|
|
33610
33549
|
);
|
|
33611
33550
|
};
|
|
33612
|
-
return /* @__PURE__ */ jsxs207(
|
|
33551
|
+
return /* @__PURE__ */ jsxs207(Fragment46, { children: [
|
|
33613
33552
|
/* @__PURE__ */ jsx265(
|
|
33614
33553
|
"div",
|
|
33615
33554
|
{
|
|
@@ -33657,13 +33596,13 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
33657
33596
|
}
|
|
33658
33597
|
|
|
33659
33598
|
// src/components/navigation/sliding-sidebar.tsx
|
|
33660
|
-
import { useState as
|
|
33599
|
+
import { useState as useState81, useEffect as useEffect61 } from "react";
|
|
33661
33600
|
import { motion as motion2, AnimatePresence } from "framer-motion";
|
|
33662
33601
|
init_button2();
|
|
33663
|
-
import { Fragment as
|
|
33602
|
+
import { Fragment as Fragment47, jsx as jsx266, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
33664
33603
|
function SlidingSidebar({ config }) {
|
|
33665
|
-
const [expandedItems, setExpandedItems] =
|
|
33666
|
-
const [mounted, setMounted] =
|
|
33604
|
+
const [expandedItems, setExpandedItems] = useState81(/* @__PURE__ */ new Set());
|
|
33605
|
+
const [mounted, setMounted] = useState81(false);
|
|
33667
33606
|
const headerHeight = useHeaderHeight();
|
|
33668
33607
|
useEffect61(() => {
|
|
33669
33608
|
setMounted(true);
|
|
@@ -33782,7 +33721,7 @@ function SlidingSidebar({ config }) {
|
|
|
33782
33721
|
if (!mounted) {
|
|
33783
33722
|
return null;
|
|
33784
33723
|
}
|
|
33785
|
-
return /* @__PURE__ */ jsxs208(
|
|
33724
|
+
return /* @__PURE__ */ jsxs208(Fragment47, { children: [
|
|
33786
33725
|
/* @__PURE__ */ jsx266(AnimatePresence, { children: config.isOpen && /* @__PURE__ */ jsx266(
|
|
33787
33726
|
motion2.div,
|
|
33788
33727
|
{
|
|
@@ -33828,7 +33767,7 @@ function SlidingSidebar({ config }) {
|
|
|
33828
33767
|
}
|
|
33829
33768
|
|
|
33830
33769
|
// src/components/navigation/sticky-section-nav.tsx
|
|
33831
|
-
import { useEffect as useEffect62, useState as
|
|
33770
|
+
import { useEffect as useEffect62, useState as useState82, useCallback as useCallback32, useRef as useRef44 } from "react";
|
|
33832
33771
|
import { jsx as jsx267, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
33833
33772
|
function StickySectionNav({
|
|
33834
33773
|
sections,
|
|
@@ -33889,7 +33828,7 @@ function StickySectionNav({
|
|
|
33889
33828
|
] });
|
|
33890
33829
|
}
|
|
33891
33830
|
function useSectionNavigation(sections, options) {
|
|
33892
|
-
const [activeSection, setActiveSection] =
|
|
33831
|
+
const [activeSection, setActiveSection] = useState82(sections[0]?.id || "");
|
|
33893
33832
|
const isScrollingFromClick = useRef44(false);
|
|
33894
33833
|
const { offset: offset2 = 100 } = options || {};
|
|
33895
33834
|
const handleSectionClick = useCallback32((sectionId) => {
|
|
@@ -33942,7 +33881,7 @@ function useSectionNavigation(sections, options) {
|
|
|
33942
33881
|
}
|
|
33943
33882
|
|
|
33944
33883
|
// src/components/navigation/navigation-sidebar.tsx
|
|
33945
|
-
import { useCallback as useCallback33, useEffect as useEffect63, useLayoutEffect as useLayoutEffect6, useMemo as useMemo33, useState as
|
|
33884
|
+
import { useCallback as useCallback33, useEffect as useEffect63, useLayoutEffect as useLayoutEffect6, useMemo as useMemo33, useState as useState83 } from "react";
|
|
33946
33885
|
|
|
33947
33886
|
// src/components/navigation/navigation-sidebar-header.tsx
|
|
33948
33887
|
import { jsx as jsx268, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
@@ -34088,7 +34027,7 @@ function NavigationSidebarToggle({
|
|
|
34088
34027
|
}
|
|
34089
34028
|
|
|
34090
34029
|
// src/components/navigation/navigation-sidebar.tsx
|
|
34091
|
-
import { Fragment as
|
|
34030
|
+
import { Fragment as Fragment48, jsx as jsx271, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
34092
34031
|
var MINIMIZED_WIDTH = 56;
|
|
34093
34032
|
var EXPANDED_WIDTH = 224;
|
|
34094
34033
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
@@ -34100,12 +34039,12 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34100
34039
|
STORAGE_KEY,
|
|
34101
34040
|
config.minimized ?? false
|
|
34102
34041
|
);
|
|
34103
|
-
const [tabletMinimized, setTabletMinimized] =
|
|
34042
|
+
const [tabletMinimized, setTabletMinimized] = useState83(true);
|
|
34104
34043
|
useEffect63(() => {
|
|
34105
34044
|
if (isTablet) setTabletMinimized(true);
|
|
34106
34045
|
}, [isTablet]);
|
|
34107
34046
|
const minimized = isTablet ? tabletMinimized : desktopMinimized;
|
|
34108
|
-
const [transitionsEnabled, setTransitionsEnabled] =
|
|
34047
|
+
const [transitionsEnabled, setTransitionsEnabled] = useState83(false);
|
|
34109
34048
|
const isOverlayOpen = isTablet && !minimized;
|
|
34110
34049
|
const showLabel = !minimized;
|
|
34111
34050
|
const handleToggle = useCallback33(() => {
|
|
@@ -34153,7 +34092,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34153
34092
|
return () => cancelAnimationFrame(id);
|
|
34154
34093
|
}
|
|
34155
34094
|
}, [isHydrated, transitionsEnabled]);
|
|
34156
|
-
return /* @__PURE__ */ jsxs213(
|
|
34095
|
+
return /* @__PURE__ */ jsxs213(Fragment48, { children: [
|
|
34157
34096
|
/* @__PURE__ */ jsx271(
|
|
34158
34097
|
"div",
|
|
34159
34098
|
{
|
|
@@ -34187,7 +34126,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34187
34126
|
),
|
|
34188
34127
|
style: { width: sidebarWidth },
|
|
34189
34128
|
"aria-label": "Main navigation sidebar",
|
|
34190
|
-
children: isHydrated && /* @__PURE__ */ jsxs213(
|
|
34129
|
+
children: isHydrated && /* @__PURE__ */ jsxs213(Fragment48, { children: [
|
|
34191
34130
|
/* @__PURE__ */ jsx271(NavigationSidebarHeader, { minimized }),
|
|
34192
34131
|
/* @__PURE__ */ jsxs213("div", { className: "flex-1 flex flex-col justify-between py-4 overflow-y-auto", children: [
|
|
34193
34132
|
/* @__PURE__ */ jsx271("nav", { className: "flex flex-col", "aria-label": "Primary navigation", children: primaryItems.map((item) => /* @__PURE__ */ jsx271(
|
|
@@ -34595,11 +34534,11 @@ function NotificationsHeaderButton({
|
|
|
34595
34534
|
}
|
|
34596
34535
|
|
|
34597
34536
|
// src/components/navigation/app-layout.tsx
|
|
34598
|
-
import { createContext as createContext9, Suspense as Suspense2, useCallback as useCallback35, useContext as useContext9, useMemo as useMemo34, useRef as useRef45, useState as
|
|
34537
|
+
import { createContext as createContext9, Suspense as Suspense2, useCallback as useCallback35, useContext as useContext9, useMemo as useMemo34, useRef as useRef45, useState as useState84 } from "react";
|
|
34599
34538
|
|
|
34600
34539
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
34601
34540
|
import React110, { useCallback as useCallback34, useEffect as useEffect64 } from "react";
|
|
34602
|
-
import { Fragment as
|
|
34541
|
+
import { Fragment as Fragment49, jsx as jsx276, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
34603
34542
|
var HEADER_HEIGHT = 48;
|
|
34604
34543
|
var MobileBurgerMenu = React110.memo(function MobileBurgerMenu2({
|
|
34605
34544
|
isOpen,
|
|
@@ -34685,7 +34624,7 @@ var MobileBurgerMenu = React110.memo(function MobileBurgerMenu2({
|
|
|
34685
34624
|
row.length === 1 && /* @__PURE__ */ jsx276("div", { className: "flex-1" })
|
|
34686
34625
|
] }, rowIndex)) });
|
|
34687
34626
|
};
|
|
34688
|
-
return /* @__PURE__ */ jsxs218(
|
|
34627
|
+
return /* @__PURE__ */ jsxs218(Fragment49, { children: [
|
|
34689
34628
|
/* @__PURE__ */ jsx276(
|
|
34690
34629
|
"div",
|
|
34691
34630
|
{
|
|
@@ -34816,8 +34755,8 @@ function AppLayout({
|
|
|
34816
34755
|
disabled = false,
|
|
34817
34756
|
drawer
|
|
34818
34757
|
}) {
|
|
34819
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
34820
|
-
const [drawerContainer, setDrawerContainer] =
|
|
34758
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState84(false);
|
|
34759
|
+
const [drawerContainer, setDrawerContainer] = useState84(null);
|
|
34821
34760
|
const mobileMenuOpenRef = useRef45(mobileMenuOpen);
|
|
34822
34761
|
mobileMenuOpenRef.current = mobileMenuOpen;
|
|
34823
34762
|
const drawerHandlesRef = useRef45(/* @__PURE__ */ new Set());
|
|
@@ -35917,7 +35856,7 @@ import React113, { useRef as useRef47, useCallback as useCallback37 } from "reac
|
|
|
35917
35856
|
import React112 from "react";
|
|
35918
35857
|
init_button2();
|
|
35919
35858
|
init_cn();
|
|
35920
|
-
import { Fragment as
|
|
35859
|
+
import { Fragment as Fragment50, jsx as jsx287, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
35921
35860
|
function OnboardingStepCard({
|
|
35922
35861
|
step,
|
|
35923
35862
|
isCompleted,
|
|
@@ -35959,10 +35898,10 @@ function OnboardingStepCard({
|
|
|
35959
35898
|
/* @__PURE__ */ jsx287("h3", { className: "text-h4 text-ods-text-primary truncate", title: step.title, children: step.title }),
|
|
35960
35899
|
/* @__PURE__ */ jsx287("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate h-[20px]", title: step.description, children: step.description })
|
|
35961
35900
|
] }),
|
|
35962
|
-
/* @__PURE__ */ jsx287("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__ */ jsxs229(
|
|
35901
|
+
/* @__PURE__ */ jsx287("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__ */ jsxs229(Fragment50, { children: [
|
|
35963
35902
|
/* @__PURE__ */ jsx287("div", { className: "h-[32px] w-[100px] bg-ods-border rounded-[6px] animate-pulse" }),
|
|
35964
35903
|
/* @__PURE__ */ jsx287("div", { className: "h-[32px] w-[120px] bg-ods-border rounded-[6px] animate-pulse" })
|
|
35965
|
-
] }) : isCompleted ? /* @__PURE__ */ jsxs229(
|
|
35904
|
+
] }) : isCompleted ? /* @__PURE__ */ jsxs229(Fragment50, { children: [
|
|
35966
35905
|
/* @__PURE__ */ jsx287(
|
|
35967
35906
|
StatusBadge,
|
|
35968
35907
|
{
|
|
@@ -35981,14 +35920,14 @@ function OnboardingStepCard({
|
|
|
35981
35920
|
children: step.completedText
|
|
35982
35921
|
}
|
|
35983
35922
|
)
|
|
35984
|
-
] }) : isSkipped ? /* @__PURE__ */ jsx287(
|
|
35923
|
+
] }) : isSkipped ? /* @__PURE__ */ jsx287(Fragment50, { children: /* @__PURE__ */ jsx287(
|
|
35985
35924
|
StatusBadge,
|
|
35986
35925
|
{
|
|
35987
35926
|
text: "SKIPPED",
|
|
35988
35927
|
variant: "card",
|
|
35989
35928
|
colorScheme: "default"
|
|
35990
35929
|
}
|
|
35991
|
-
) }) : /* @__PURE__ */ jsxs229(
|
|
35930
|
+
) }) : /* @__PURE__ */ jsxs229(Fragment50, { children: [
|
|
35992
35931
|
/* @__PURE__ */ jsx287(
|
|
35993
35932
|
Button,
|
|
35994
35933
|
{
|
|
@@ -36377,7 +36316,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
|
|
|
36377
36316
|
] });
|
|
36378
36317
|
}
|
|
36379
36318
|
function ServiceCardRowItem({ row }) {
|
|
36380
|
-
const [revealed, setRevealed] =
|
|
36319
|
+
const [revealed, setRevealed] = useState86(false);
|
|
36381
36320
|
const { copy, copied } = useCopyToClipboard();
|
|
36382
36321
|
const actions = useMemo35(() => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
|
|
36383
36322
|
const displayValue = row.isSecret ? /* @__PURE__ */ jsx291(MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ jsx291("span", { children: row.value });
|
|
@@ -36995,7 +36934,7 @@ function getHideClasses(hideAt) {
|
|
|
36995
36934
|
}
|
|
36996
36935
|
|
|
36997
36936
|
// src/components/ui/table/table-header.tsx
|
|
36998
|
-
import { Fragment as
|
|
36937
|
+
import { Fragment as Fragment51, jsx as jsx301, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
36999
36938
|
function TableHeader({
|
|
37000
36939
|
columns,
|
|
37001
36940
|
className,
|
|
@@ -37106,10 +37045,10 @@ function TableHeader({
|
|
|
37106
37045
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
37107
37046
|
),
|
|
37108
37047
|
onClick: () => handleSort(column),
|
|
37109
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs240(
|
|
37048
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs240(Fragment51, { children: [
|
|
37110
37049
|
column.renderHeader(),
|
|
37111
37050
|
getSortIcon(column)
|
|
37112
|
-
] }) : /* @__PURE__ */ jsxs240(
|
|
37051
|
+
] }) : /* @__PURE__ */ jsxs240(Fragment51, { children: [
|
|
37113
37052
|
/* @__PURE__ */ jsx301("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
37114
37053
|
getSortIcon(column)
|
|
37115
37054
|
] })
|
|
@@ -37164,7 +37103,7 @@ function TableCell({
|
|
|
37164
37103
|
|
|
37165
37104
|
// src/components/ui/table/table-skeleton.tsx
|
|
37166
37105
|
init_cn();
|
|
37167
|
-
import { Fragment as
|
|
37106
|
+
import { Fragment as Fragment52, jsx as jsx303, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
37168
37107
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
37169
37108
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
37170
37109
|
function TableCardSkeleton({
|
|
@@ -37176,7 +37115,7 @@ function TableCardSkeleton({
|
|
|
37176
37115
|
rowClassName
|
|
37177
37116
|
}) {
|
|
37178
37117
|
const primaryKey = (columns.find((c) => /flex-(1|\[)/.test(c.width || "")) ?? columns[0])?.key;
|
|
37179
|
-
return /* @__PURE__ */ jsx303(
|
|
37118
|
+
return /* @__PURE__ */ jsx303(Fragment52, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs241(
|
|
37180
37119
|
"div",
|
|
37181
37120
|
{
|
|
37182
37121
|
className: cn(
|
|
@@ -37337,9 +37276,9 @@ function TableRow({
|
|
|
37337
37276
|
}
|
|
37338
37277
|
|
|
37339
37278
|
// src/components/ui/table/use-table-motion.ts
|
|
37340
|
-
import { useEffect as useEffect66, useState as
|
|
37279
|
+
import { useEffect as useEffect66, useState as useState87 } from "react";
|
|
37341
37280
|
function useTableMotion(enabled) {
|
|
37342
|
-
const [runtime, setRuntime] =
|
|
37281
|
+
const [runtime, setRuntime] = useState87(null);
|
|
37343
37282
|
useEffect66(() => {
|
|
37344
37283
|
if (!enabled || runtime) return;
|
|
37345
37284
|
let active = true;
|
|
@@ -37355,7 +37294,7 @@ function useTableMotion(enabled) {
|
|
|
37355
37294
|
}
|
|
37356
37295
|
|
|
37357
37296
|
// src/components/ui/table/table.tsx
|
|
37358
|
-
import { Fragment as
|
|
37297
|
+
import { Fragment as Fragment53, jsx as jsx305, jsxs as jsxs243 } from "react/jsx-runtime";
|
|
37359
37298
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
37360
37299
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
37361
37300
|
const result = [...columns];
|
|
@@ -37557,7 +37496,7 @@ function Table({
|
|
|
37557
37496
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
37558
37497
|
hasChevron: Boolean(rowHref)
|
|
37559
37498
|
}
|
|
37560
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx305(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs243(
|
|
37499
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx305(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs243(Fragment53, { children: [
|
|
37561
37500
|
(() => {
|
|
37562
37501
|
const rows = data.map((item, index) => /* @__PURE__ */ jsx305(
|
|
37563
37502
|
TableRow,
|
|
@@ -37707,7 +37646,7 @@ import { useMemo as useMemo36 } from "react";
|
|
|
37707
37646
|
|
|
37708
37647
|
// src/components/ui/query-report-table/query-report-table-header.tsx
|
|
37709
37648
|
init_cn();
|
|
37710
|
-
import { useRef as useRef50, useState as
|
|
37649
|
+
import { useRef as useRef50, useState as useState88, useCallback as useCallback38 } from "react";
|
|
37711
37650
|
import { jsx as jsx308, jsxs as jsxs245 } from "react/jsx-runtime";
|
|
37712
37651
|
function QueryReportTableHeader({
|
|
37713
37652
|
columns,
|
|
@@ -37737,7 +37676,7 @@ function QueryReportTableHeader({
|
|
|
37737
37676
|
}
|
|
37738
37677
|
function TruncatedHeaderCell({ value, width }) {
|
|
37739
37678
|
const textRef = useRef50(null);
|
|
37740
|
-
const [isTruncated, setIsTruncated] =
|
|
37679
|
+
const [isTruncated, setIsTruncated] = useState88(false);
|
|
37741
37680
|
const checkTruncation = useCallback38(() => {
|
|
37742
37681
|
const el = textRef.current;
|
|
37743
37682
|
if (el) {
|
|
@@ -37766,7 +37705,7 @@ function TruncatedHeaderCell({ value, width }) {
|
|
|
37766
37705
|
|
|
37767
37706
|
// src/components/ui/query-report-table/query-report-table-row.tsx
|
|
37768
37707
|
init_cn();
|
|
37769
|
-
import { useRef as useRef51, useState as
|
|
37708
|
+
import { useRef as useRef51, useState as useState89, useCallback as useCallback39 } from "react";
|
|
37770
37709
|
import { jsx as jsx309, jsxs as jsxs246 } from "react/jsx-runtime";
|
|
37771
37710
|
function QueryReportTableRow({
|
|
37772
37711
|
row,
|
|
@@ -37813,7 +37752,7 @@ function QueryReportTableRow({
|
|
|
37813
37752
|
}
|
|
37814
37753
|
function TruncatedCell({ value, className }) {
|
|
37815
37754
|
const textRef = useRef51(null);
|
|
37816
|
-
const [isTruncated, setIsTruncated] =
|
|
37755
|
+
const [isTruncated, setIsTruncated] = useState89(false);
|
|
37817
37756
|
const checkTruncation = useCallback39(() => {
|
|
37818
37757
|
const el = textRef.current;
|
|
37819
37758
|
if (el) {
|
|
@@ -38184,7 +38123,7 @@ function DataTableColumnFilter({
|
|
|
38184
38123
|
}
|
|
38185
38124
|
|
|
38186
38125
|
// src/components/ui/data-table/data-table-header.tsx
|
|
38187
|
-
import { Fragment as
|
|
38126
|
+
import { Fragment as Fragment54, jsx as jsx314, jsxs as jsxs250 } from "react/jsx-runtime";
|
|
38188
38127
|
function DataTableHeader({
|
|
38189
38128
|
className,
|
|
38190
38129
|
stickyHeader,
|
|
@@ -38278,7 +38217,7 @@ function HeaderLabel({ header }) {
|
|
|
38278
38217
|
if (typeof headerDef === "string") {
|
|
38279
38218
|
return /* @__PURE__ */ jsx314("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
|
|
38280
38219
|
}
|
|
38281
|
-
return /* @__PURE__ */ jsx314(
|
|
38220
|
+
return /* @__PURE__ */ jsx314(Fragment54, { children: flexRender(headerDef, header.getContext()) });
|
|
38282
38221
|
}
|
|
38283
38222
|
function SortIcon({ sorted }) {
|
|
38284
38223
|
if (sorted === "asc") return /* @__PURE__ */ jsx314(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -38317,7 +38256,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
38317
38256
|
|
|
38318
38257
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
38319
38258
|
init_cn();
|
|
38320
|
-
import { Fragment as
|
|
38259
|
+
import { Fragment as Fragment55, jsx as jsx316, jsxs as jsxs251 } from "react/jsx-runtime";
|
|
38321
38260
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
38322
38261
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
38323
38262
|
function DataTableSkeleton({
|
|
@@ -38328,7 +38267,7 @@ function DataTableSkeleton({
|
|
|
38328
38267
|
const table = useDataTableContext();
|
|
38329
38268
|
const columns = table.getVisibleFlatColumns();
|
|
38330
38269
|
const firstColumnId = columns[0]?.id;
|
|
38331
|
-
return /* @__PURE__ */ jsx316(
|
|
38270
|
+
return /* @__PURE__ */ jsx316(Fragment55, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs251(
|
|
38332
38271
|
"div",
|
|
38333
38272
|
{
|
|
38334
38273
|
className: cn(
|
|
@@ -38384,7 +38323,7 @@ function DataTableSkeleton({
|
|
|
38384
38323
|
}
|
|
38385
38324
|
|
|
38386
38325
|
// src/components/ui/data-table/data-table-row.tsx
|
|
38387
|
-
import { Fragment as
|
|
38326
|
+
import { Fragment as Fragment56, jsx as jsx317, jsxs as jsxs252 } from "react/jsx-runtime";
|
|
38388
38327
|
function DataTableRowImpl({
|
|
38389
38328
|
row,
|
|
38390
38329
|
onClick,
|
|
@@ -38485,7 +38424,7 @@ function CellContent({ children }) {
|
|
|
38485
38424
|
if (typeof children === "string" || typeof children === "number") {
|
|
38486
38425
|
return /* @__PURE__ */ jsx317("span", { className: "text-h4 text-ods-text-primary truncate", title: String(children), children });
|
|
38487
38426
|
}
|
|
38488
|
-
return /* @__PURE__ */ jsx317(
|
|
38427
|
+
return /* @__PURE__ */ jsx317(Fragment56, { children });
|
|
38489
38428
|
}
|
|
38490
38429
|
|
|
38491
38430
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -38563,7 +38502,7 @@ function DataTableBody({
|
|
|
38563
38502
|
|
|
38564
38503
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
38565
38504
|
import { useEffect as useEffect68, useRef as useRef53 } from "react";
|
|
38566
|
-
import { Fragment as
|
|
38505
|
+
import { Fragment as Fragment57, jsx as jsx319, jsxs as jsxs254 } from "react/jsx-runtime";
|
|
38567
38506
|
function DataTableInfiniteFooter({
|
|
38568
38507
|
hasNextPage,
|
|
38569
38508
|
isFetchingNextPage,
|
|
@@ -38587,7 +38526,7 @@ function DataTableInfiniteFooter({
|
|
|
38587
38526
|
observer.observe(sentinel);
|
|
38588
38527
|
return () => observer.disconnect();
|
|
38589
38528
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
38590
|
-
return /* @__PURE__ */ jsxs254(
|
|
38529
|
+
return /* @__PURE__ */ jsxs254(Fragment57, { children: [
|
|
38591
38530
|
isFetchingNextPage && /* @__PURE__ */ jsx319(DataTableSkeleton, { rows: skeletonRows }),
|
|
38592
38531
|
hasNextPage && /* @__PURE__ */ jsx319("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
38593
38532
|
] });
|
|
@@ -39210,7 +39149,7 @@ function FilterList({
|
|
|
39210
39149
|
import {
|
|
39211
39150
|
useEffect as useEffect70,
|
|
39212
39151
|
useRef as useRef55,
|
|
39213
|
-
useState as
|
|
39152
|
+
useState as useState91
|
|
39214
39153
|
} from "react";
|
|
39215
39154
|
init_cn();
|
|
39216
39155
|
import { jsx as jsx323, jsxs as jsxs258 } from "react/jsx-runtime";
|
|
@@ -39247,7 +39186,7 @@ function TagSearchInput({
|
|
|
39247
39186
|
const wrapperRef = useRef55(null);
|
|
39248
39187
|
const hiddenTagsRef = useRef55(null);
|
|
39249
39188
|
const hiddenTagsPopupRef = useRef55(null);
|
|
39250
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
39189
|
+
const [showHiddenTags, setShowHiddenTags] = useState91(false);
|
|
39251
39190
|
useEffect70(() => {
|
|
39252
39191
|
if (!showHiddenTags) return;
|
|
39253
39192
|
const handleClick = (e) => {
|
|
@@ -39403,7 +39342,7 @@ function TagSearchInput({
|
|
|
39403
39342
|
}
|
|
39404
39343
|
|
|
39405
39344
|
// src/components/ui/markdown-editor.tsx
|
|
39406
|
-
import { useRef as useRef56, useCallback as useCallback42, useState as
|
|
39345
|
+
import { useRef as useRef56, useCallback as useCallback42, useState as useState92, useEffect as useEffect71 } from "react";
|
|
39407
39346
|
init_cn();
|
|
39408
39347
|
import { Loader2 as Loader29, Upload as Upload8 } from "lucide-react";
|
|
39409
39348
|
import { jsx as jsx324, jsxs as jsxs259 } from "react/jsx-runtime";
|
|
@@ -39459,9 +39398,9 @@ function MarkdownEditor({
|
|
|
39459
39398
|
renderPreview
|
|
39460
39399
|
}) {
|
|
39461
39400
|
const fileInputRef = useRef56(null);
|
|
39462
|
-
const [isUploading, setIsUploading] =
|
|
39463
|
-
const [uploadProgress, setUploadProgress] =
|
|
39464
|
-
const [defaultExtraCommands, setDefaultExtraCommands] =
|
|
39401
|
+
const [isUploading, setIsUploading] = useState92(false);
|
|
39402
|
+
const [uploadProgress, setUploadProgress] = useState92("");
|
|
39403
|
+
const [defaultExtraCommands, setDefaultExtraCommands] = useState92([]);
|
|
39465
39404
|
useEffect71(() => {
|
|
39466
39405
|
import("@uiw/react-md-editor").then((mod) => {
|
|
39467
39406
|
if (mod.commands?.getExtraCommands) {
|
|
@@ -39997,7 +39936,7 @@ function FileUpload({
|
|
|
39997
39936
|
import * as React124 from "react";
|
|
39998
39937
|
import { Loader2 as Loader211 } from "lucide-react";
|
|
39999
39938
|
init_cn();
|
|
40000
|
-
import { Fragment as
|
|
39939
|
+
import { Fragment as Fragment59, jsx as jsx326, jsxs as jsxs261 } from "react/jsx-runtime";
|
|
40001
39940
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
40002
39941
|
function formatSize(bytes) {
|
|
40003
39942
|
const mb = bytes / (1024 * 1024);
|
|
@@ -40125,7 +40064,7 @@ function ImageUploader({
|
|
|
40125
40064
|
!hasImage && !interactive && "cursor-not-allowed",
|
|
40126
40065
|
dropzoneClassName
|
|
40127
40066
|
),
|
|
40128
|
-
children: hasImage ? /* @__PURE__ */ jsxs261(
|
|
40067
|
+
children: hasImage ? /* @__PURE__ */ jsxs261(Fragment59, { children: [
|
|
40129
40068
|
/* @__PURE__ */ jsx326("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx326(
|
|
40130
40069
|
"img",
|
|
40131
40070
|
{
|
|
@@ -40162,7 +40101,7 @@ function ImageUploader({
|
|
|
40162
40101
|
)
|
|
40163
40102
|
] }),
|
|
40164
40103
|
loading && /* @__PURE__ */ jsx326("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx326(Loader211, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
|
|
40165
|
-
] }) : loading ? /* @__PURE__ */ jsx326(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs261(
|
|
40104
|
+
] }) : loading ? /* @__PURE__ */ jsx326(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs261(Fragment59, { children: [
|
|
40166
40105
|
/* @__PURE__ */ jsx326("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__ */ jsx326(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
40167
40106
|
/* @__PURE__ */ jsxs261("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
40168
40107
|
/* @__PURE__ */ jsx326("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -40232,7 +40171,7 @@ PopoverContent.displayName = PopoverPrimitive7.Content.displayName;
|
|
|
40232
40171
|
|
|
40233
40172
|
// src/components/ui/color-preset-select.tsx
|
|
40234
40173
|
init_cn();
|
|
40235
|
-
import { Fragment as
|
|
40174
|
+
import { Fragment as Fragment60, jsx as jsx328, jsxs as jsxs262 } from "react/jsx-runtime";
|
|
40236
40175
|
var TICKET_STATUS_COLOR_PRESETS = [
|
|
40237
40176
|
{ key: "green", label: "Green", color: "#5ea62e" },
|
|
40238
40177
|
{ key: "lime", label: "Lime", color: "#8bc34a" },
|
|
@@ -40383,7 +40322,7 @@ function RgbInputs({ value, onChange }) {
|
|
|
40383
40322
|
const b = next.b ?? rgb.b;
|
|
40384
40323
|
onChange(rgbToHex(r, g, b));
|
|
40385
40324
|
};
|
|
40386
|
-
return /* @__PURE__ */ jsxs262(
|
|
40325
|
+
return /* @__PURE__ */ jsxs262(Fragment60, { children: [
|
|
40387
40326
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.r, min: 0, max: 255, ariaLabel: "Red", onCommit: (r) => update({ r }) }),
|
|
40388
40327
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.g, min: 0, max: 255, ariaLabel: "Green", onCommit: (g) => update({ g }) }),
|
|
40389
40328
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.b, min: 0, max: 255, ariaLabel: "Blue", onCommit: (b) => update({ b }) })
|
|
@@ -40399,7 +40338,7 @@ function HslInputs({ value, onChange }) {
|
|
|
40399
40338
|
const out = hslToRgb(h, s, l);
|
|
40400
40339
|
onChange(rgbToHex(out.r, out.g, out.b));
|
|
40401
40340
|
};
|
|
40402
|
-
return /* @__PURE__ */ jsxs262(
|
|
40341
|
+
return /* @__PURE__ */ jsxs262(Fragment60, { children: [
|
|
40403
40342
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.h, min: 0, max: 360, ariaLabel: "Hue", onCommit: (h) => update({ h }) }),
|
|
40404
40343
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.s, min: 0, max: 100, ariaLabel: "Saturation", onCommit: (s) => update({ s }) }),
|
|
40405
40344
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.l, min: 0, max: 100, ariaLabel: "Lightness", onCommit: (l) => update({ l }) })
|
|
@@ -40696,7 +40635,7 @@ init_cn();
|
|
|
40696
40635
|
// src/components/ui/ticket-note-card.tsx
|
|
40697
40636
|
import * as React128 from "react";
|
|
40698
40637
|
init_cn();
|
|
40699
|
-
import { Fragment as
|
|
40638
|
+
import { Fragment as Fragment61, jsx as jsx332, jsxs as jsxs266 } from "react/jsx-runtime";
|
|
40700
40639
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
40701
40640
|
const [isEditing, setIsEditing] = React128.useState(false);
|
|
40702
40641
|
const [editText, setEditText] = React128.useState(note.text);
|
|
@@ -40770,7 +40709,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
40770
40709
|
children: /* @__PURE__ */ jsx332(XmarkIcon, { className: "size-5" })
|
|
40771
40710
|
}
|
|
40772
40711
|
)
|
|
40773
|
-
] }) : /* @__PURE__ */ jsxs266(
|
|
40712
|
+
] }) : /* @__PURE__ */ jsxs266(Fragment61, { children: [
|
|
40774
40713
|
/* @__PURE__ */ jsx332("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
40775
40714
|
/* @__PURE__ */ jsxs266(
|
|
40776
40715
|
"p",
|
|
@@ -40877,7 +40816,7 @@ function TicketNotesSection({
|
|
|
40877
40816
|
}
|
|
40878
40817
|
|
|
40879
40818
|
// src/components/ui/ticket-info-section.tsx
|
|
40880
|
-
import { Fragment as
|
|
40819
|
+
import { Fragment as Fragment62, jsx as jsx334, jsxs as jsxs268 } from "react/jsx-runtime";
|
|
40881
40820
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
40882
40821
|
return /* @__PURE__ */ jsx334("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs268("div", { className: "flex flex-col justify-center", children: [
|
|
40883
40822
|
/* @__PURE__ */ jsxs268("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -41002,7 +40941,7 @@ function TicketInfoSection({
|
|
|
41002
40941
|
)
|
|
41003
40942
|
] })
|
|
41004
40943
|
] }),
|
|
41005
|
-
expanded && /* @__PURE__ */ jsxs268(
|
|
40944
|
+
expanded && /* @__PURE__ */ jsxs268(Fragment62, { children: [
|
|
41006
40945
|
createdAt && /* @__PURE__ */ jsx334("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx334(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
41007
40946
|
/* @__PURE__ */ jsxs268("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
41008
40947
|
description && /* @__PURE__ */ jsx334(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -41060,14 +40999,14 @@ function FilterPillRow({
|
|
|
41060
40999
|
|
|
41061
41000
|
// src/components/ui/image-gallery-modal.tsx
|
|
41062
41001
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight10 } from "lucide-react";
|
|
41063
|
-
import { Fragment as
|
|
41002
|
+
import { Fragment as Fragment63, jsx as jsx336, jsxs as jsxs270 } from "react/jsx-runtime";
|
|
41064
41003
|
function ImageGalleryModal({
|
|
41065
41004
|
images,
|
|
41066
41005
|
isOpen,
|
|
41067
41006
|
onClose,
|
|
41068
41007
|
initialIndex = 0
|
|
41069
41008
|
}) {
|
|
41070
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
41009
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState99(initialIndex);
|
|
41071
41010
|
useEffect74(() => {
|
|
41072
41011
|
if (isOpen) {
|
|
41073
41012
|
setSelectedImageIndex(initialIndex);
|
|
@@ -41116,7 +41055,7 @@ function ImageGalleryModal({
|
|
|
41116
41055
|
onClose,
|
|
41117
41056
|
className: "max-w-[95vw]",
|
|
41118
41057
|
children: /* @__PURE__ */ jsxs270("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
41119
|
-
images.length > 1 && /* @__PURE__ */ jsxs270(
|
|
41058
|
+
images.length > 1 && /* @__PURE__ */ jsxs270(Fragment63, { children: [
|
|
41120
41059
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx336("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx336(
|
|
41121
41060
|
Button,
|
|
41122
41061
|
{
|
|
@@ -41234,7 +41173,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
|
41234
41173
|
}
|
|
41235
41174
|
|
|
41236
41175
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
41237
|
-
import { Fragment as
|
|
41176
|
+
import { Fragment as Fragment64, jsx as jsx338, jsxs as jsxs271 } from "react/jsx-runtime";
|
|
41238
41177
|
function RoadmapCardSkeleton({ size: size2 = "default" }) {
|
|
41239
41178
|
if (size2 === "sm") {
|
|
41240
41179
|
return /* @__PURE__ */ jsxs271("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -41286,7 +41225,7 @@ function RoadmapCard({
|
|
|
41286
41225
|
onVote,
|
|
41287
41226
|
isVoting = false
|
|
41288
41227
|
}) {
|
|
41289
|
-
const [showScreenshots, setShowScreenshots] =
|
|
41228
|
+
const [showScreenshots, setShowScreenshots] = useState100(false);
|
|
41290
41229
|
const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
|
|
41291
41230
|
const iconSrc = logoUrl ? getProxiedImageUrl(logoUrl, { directHttps: true }) || logoUrl : null;
|
|
41292
41231
|
if (size2 === "sm") {
|
|
@@ -41296,7 +41235,7 @@ function RoadmapCard({
|
|
|
41296
41235
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
41297
41236
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
41298
41237
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
41299
|
-
const body = /* @__PURE__ */ jsxs271(
|
|
41238
|
+
const body = /* @__PURE__ */ jsxs271(Fragment64, { children: [
|
|
41300
41239
|
/* @__PURE__ */ jsx338(
|
|
41301
41240
|
"span",
|
|
41302
41241
|
{
|
|
@@ -41488,7 +41427,7 @@ function RoadmapCard({
|
|
|
41488
41427
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
41489
41428
|
import React131 from "react";
|
|
41490
41429
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink8 } from "lucide-react";
|
|
41491
|
-
import { Fragment as
|
|
41430
|
+
import { Fragment as Fragment65, jsx as jsx339, jsxs as jsxs272 } from "react/jsx-runtime";
|
|
41492
41431
|
function parseRepoFromUrl(url) {
|
|
41493
41432
|
if (!url) return null;
|
|
41494
41433
|
try {
|
|
@@ -41620,7 +41559,7 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
41620
41559
|
if (repo) metaParts.push(/* @__PURE__ */ jsx339("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
41621
41560
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx339("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41622
41561
|
const href = safeHref(item.url);
|
|
41623
|
-
const body = /* @__PURE__ */ jsxs272(
|
|
41562
|
+
const body = /* @__PURE__ */ jsxs272(Fragment65, { children: [
|
|
41624
41563
|
/* @__PURE__ */ jsx339("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
41625
41564
|
/* @__PURE__ */ jsxs272("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41626
41565
|
/* @__PURE__ */ jsxs272("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
@@ -41675,7 +41614,7 @@ function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
|
41675
41614
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
41676
41615
|
import React132 from "react";
|
|
41677
41616
|
import { ExternalLink as ExternalLink9, Hash } from "lucide-react";
|
|
41678
|
-
import { Fragment as
|
|
41617
|
+
import { Fragment as Fragment66, jsx as jsx340, jsxs as jsxs273 } from "react/jsx-runtime";
|
|
41679
41618
|
function parseChannelFromUrl(url) {
|
|
41680
41619
|
if (!url) return null;
|
|
41681
41620
|
try {
|
|
@@ -41714,7 +41653,7 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
41714
41653
|
}
|
|
41715
41654
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx340("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41716
41655
|
const href = safeHref(item.url);
|
|
41717
|
-
const body = /* @__PURE__ */ jsxs273(
|
|
41656
|
+
const body = /* @__PURE__ */ jsxs273(Fragment66, { children: [
|
|
41718
41657
|
/* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx340(SlackIcon, { className: "h-5 w-5" }) }),
|
|
41719
41658
|
/* @__PURE__ */ jsxs273("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41720
41659
|
/* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
@@ -41764,7 +41703,7 @@ function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
|
41764
41703
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
41765
41704
|
import React133 from "react";
|
|
41766
41705
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
41767
|
-
import { Fragment as
|
|
41706
|
+
import { Fragment as Fragment67, jsx as jsx341, jsxs as jsxs274 } from "react/jsx-runtime";
|
|
41768
41707
|
function formatToken(token) {
|
|
41769
41708
|
if (!token) return null;
|
|
41770
41709
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -41803,7 +41742,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
41803
41742
|
}
|
|
41804
41743
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx341("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41805
41744
|
const href = safeHref(item.url);
|
|
41806
|
-
const body = /* @__PURE__ */ jsxs274(
|
|
41745
|
+
const body = /* @__PURE__ */ jsxs274(Fragment67, { children: [
|
|
41807
41746
|
/* @__PURE__ */ jsxs274("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41808
41747
|
/* @__PURE__ */ jsxs274("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
41809
41748
|
/* @__PURE__ */ jsx341("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -41883,9 +41822,9 @@ function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
|
41883
41822
|
|
|
41884
41823
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
41885
41824
|
import { ExternalLink as ExternalLink11 } from "lucide-react";
|
|
41886
|
-
import { Fragment as
|
|
41825
|
+
import { Fragment as Fragment68, jsx as jsx342, jsxs as jsxs275 } from "react/jsx-runtime";
|
|
41887
41826
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
41888
|
-
const body = /* @__PURE__ */ jsxs275(
|
|
41827
|
+
const body = /* @__PURE__ */ jsxs275(Fragment68, { children: [
|
|
41889
41828
|
/* @__PURE__ */ jsxs275("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41890
41829
|
/* @__PURE__ */ jsxs275("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
41891
41830
|
/* @__PURE__ */ jsx342("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -41922,7 +41861,7 @@ function DataRoomDocCardSkeleton({ className }) {
|
|
|
41922
41861
|
}
|
|
41923
41862
|
|
|
41924
41863
|
// src/components/chat/entity-cards/program-card.tsx
|
|
41925
|
-
import { useState as
|
|
41864
|
+
import { useState as useState101 } from "react";
|
|
41926
41865
|
|
|
41927
41866
|
// node_modules/date-fns/toDate.mjs
|
|
41928
41867
|
function toDate(argument) {
|
|
@@ -43495,7 +43434,7 @@ function cleanEscapedString(input) {
|
|
|
43495
43434
|
init_button();
|
|
43496
43435
|
import { ExternalLink as ExternalLink12, Clock as Clock2, Play as Play4, Video as Video8 } from "lucide-react";
|
|
43497
43436
|
init_cn();
|
|
43498
|
-
import { Fragment as
|
|
43437
|
+
import { Fragment as Fragment69, jsx as jsx343, jsxs as jsxs276 } from "react/jsx-runtime";
|
|
43499
43438
|
function formatUtc(date, fmt) {
|
|
43500
43439
|
return format(new Date(date.getTime() + date.getTimezoneOffset() * 6e4), fmt);
|
|
43501
43440
|
}
|
|
@@ -43559,8 +43498,8 @@ function getHosts(hosts) {
|
|
|
43559
43498
|
return [];
|
|
43560
43499
|
}
|
|
43561
43500
|
function MediaGallery({ images, title }) {
|
|
43562
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
43563
|
-
const [isModalOpen, setIsModalOpen] =
|
|
43501
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState101(null);
|
|
43502
|
+
const [isModalOpen, setIsModalOpen] = useState101(false);
|
|
43564
43503
|
const openImageModal = (index, event) => {
|
|
43565
43504
|
if (event) event.stopPropagation();
|
|
43566
43505
|
setSelectedImageIndex(index);
|
|
@@ -43570,7 +43509,7 @@ function MediaGallery({ images, title }) {
|
|
|
43570
43509
|
setIsModalOpen(false);
|
|
43571
43510
|
setSelectedImageIndex(null);
|
|
43572
43511
|
};
|
|
43573
|
-
return /* @__PURE__ */ jsxs276(
|
|
43512
|
+
return /* @__PURE__ */ jsxs276(Fragment69, { children: [
|
|
43574
43513
|
/* @__PURE__ */ jsx343("div", { className: "p-6 pt-4", children: /* @__PURE__ */ jsx343("div", { className: "overflow-x-auto mb-4", children: /* @__PURE__ */ jsx343("div", { className: "flex gap-3 pb-2", style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsxs276(
|
|
43575
43514
|
"div",
|
|
43576
43515
|
{
|
|
@@ -43687,7 +43626,7 @@ function ProgramCard({
|
|
|
43687
43626
|
const dateFormat = formatUtc(itemDate, "EEEE d MMMM");
|
|
43688
43627
|
const defaultRenderMeta = () => {
|
|
43689
43628
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
43690
|
-
return /* @__PURE__ */ jsxs276(
|
|
43629
|
+
return /* @__PURE__ */ jsxs276(Fragment69, { children: [
|
|
43691
43630
|
/* @__PURE__ */ jsx343(Clock2, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
43692
43631
|
/* @__PURE__ */ jsx343("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
43693
43632
|
] });
|
|
@@ -43698,7 +43637,7 @@ function ProgramCard({
|
|
|
43698
43637
|
if (config.type === "webinar" && "start_at" in item) {
|
|
43699
43638
|
const webinarItem = item;
|
|
43700
43639
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
43701
|
-
return /* @__PURE__ */ jsxs276(
|
|
43640
|
+
return /* @__PURE__ */ jsxs276(Fragment69, { children: [
|
|
43702
43641
|
/* @__PURE__ */ jsx343(Video8, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
43703
43642
|
/* @__PURE__ */ jsxs276("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: [
|
|
43704
43643
|
formatTimeWithTimezone(webinarItem.start_at, webinarItem.timezone ?? null),
|
|
@@ -43732,10 +43671,10 @@ function ProgramCard({
|
|
|
43732
43671
|
/* @__PURE__ */ jsx343("h3", { className: "font-['Azeret_Mono'] font-semibold text-xl md:text-2xl text-ods-text-primary leading-tight mb-3 min-h-[3rem] md:min-h-[3.5rem] line-clamp-2 flex items-center", children: item.title }),
|
|
43733
43672
|
/* @__PURE__ */ jsxs276("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
43734
43673
|
/* @__PURE__ */ jsx343("span", { className: "font-['DM_Sans'] font-medium", style: { color: accentColor }, children: dateFormat }),
|
|
43735
|
-
renderMeta ? /* @__PURE__ */ jsxs276(
|
|
43674
|
+
renderMeta ? /* @__PURE__ */ jsxs276(Fragment69, { children: [
|
|
43736
43675
|
/* @__PURE__ */ jsx343("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
43737
43676
|
renderMeta(item)
|
|
43738
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs276(
|
|
43677
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs276(Fragment69, { children: [
|
|
43739
43678
|
/* @__PURE__ */ jsx343("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
43740
43679
|
/* @__PURE__ */ jsx343("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
43741
43680
|
] })
|
|
@@ -43812,10 +43751,10 @@ function ProgramCard({
|
|
|
43812
43751
|
|
|
43813
43752
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
43814
43753
|
import { Megaphone as Megaphone3 } from "lucide-react";
|
|
43815
|
-
import { Fragment as
|
|
43754
|
+
import { Fragment as Fragment70, jsx as jsx344, jsxs as jsxs277 } from "react/jsx-runtime";
|
|
43816
43755
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
43817
43756
|
const goalsCount = campaign.goals?.length || 0;
|
|
43818
|
-
const innerChildren = /* @__PURE__ */ jsxs277(
|
|
43757
|
+
const innerChildren = /* @__PURE__ */ jsxs277(Fragment70, { children: [
|
|
43819
43758
|
/* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx344(Megaphone3, { className: "h-5 w-5" }) }),
|
|
43820
43759
|
/* @__PURE__ */ jsxs277("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
43821
43760
|
/* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
@@ -43845,11 +43784,11 @@ function CampaignCardAdminSkeleton({ className }) {
|
|
|
43845
43784
|
|
|
43846
43785
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
43847
43786
|
import { ExternalLink as ExternalLink13 } from "lucide-react";
|
|
43848
|
-
import { Fragment as
|
|
43787
|
+
import { Fragment as Fragment71, jsx as jsx345, jsxs as jsxs278 } from "react/jsx-runtime";
|
|
43849
43788
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
43850
43789
|
const href = safeHref(item.url);
|
|
43851
43790
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
43852
|
-
const body = /* @__PURE__ */ jsxs278(
|
|
43791
|
+
const body = /* @__PURE__ */ jsxs278(Fragment71, { children: [
|
|
43853
43792
|
/* @__PURE__ */ jsxs278("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
43854
43793
|
/* @__PURE__ */ jsxs278("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
43855
43794
|
/* @__PURE__ */ jsx345("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -44034,7 +43973,7 @@ function resolveSourceIcon(input, ctx = {}) {
|
|
|
44034
43973
|
|
|
44035
43974
|
// src/components/chat/mingo-info-card.tsx
|
|
44036
43975
|
init_cn();
|
|
44037
|
-
import { Fragment as
|
|
43976
|
+
import { Fragment as Fragment72, jsx as jsx346, jsxs as jsxs279 } from "react/jsx-runtime";
|
|
44038
43977
|
function CardMedia({
|
|
44039
43978
|
imageSrc,
|
|
44040
43979
|
imageAlt,
|
|
@@ -44078,7 +44017,7 @@ function MingoInfoCard({
|
|
|
44078
44017
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
44079
44018
|
const isAnchor = !!anchorProps;
|
|
44080
44019
|
const isInteractive = isAnchor || !!onClick;
|
|
44081
|
-
const content = /* @__PURE__ */ jsxs279(
|
|
44020
|
+
const content = /* @__PURE__ */ jsxs279(Fragment72, { children: [
|
|
44082
44021
|
hasMedia && /* @__PURE__ */ jsx346(CardMedia, { imageSrc, imageAlt, icon }),
|
|
44083
44022
|
/* @__PURE__ */ jsxs279("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
44084
44023
|
/* @__PURE__ */ jsx346("span", { className: "truncate text-h4 font-medium text-ods-text-primary", children: title }),
|
|
@@ -44127,7 +44066,7 @@ function MingoInfoCard({
|
|
|
44127
44066
|
}
|
|
44128
44067
|
|
|
44129
44068
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
44130
|
-
import { Fragment as
|
|
44069
|
+
import { Fragment as Fragment73, jsx as jsx347, jsxs as jsxs280 } from "react/jsx-runtime";
|
|
44131
44070
|
function githubKindIcon(kind) {
|
|
44132
44071
|
switch (kind) {
|
|
44133
44072
|
case "pull_request":
|
|
@@ -45095,10 +45034,10 @@ function ChatCardLoader({
|
|
|
45095
45034
|
}
|
|
45096
45035
|
);
|
|
45097
45036
|
}
|
|
45098
|
-
if (isLoading) return /* @__PURE__ */ jsx347(
|
|
45037
|
+
if (isLoading) return /* @__PURE__ */ jsx347(Fragment73, { children: entry.skeleton() });
|
|
45099
45038
|
if (!item) return null;
|
|
45100
45039
|
if (entry.bareInline) {
|
|
45101
|
-
return /* @__PURE__ */ jsx347(
|
|
45040
|
+
return /* @__PURE__ */ jsx347(Fragment73, { children: navWrap(entry.render(item, finalChatRef, renderOpts)) });
|
|
45102
45041
|
}
|
|
45103
45042
|
return /* @__PURE__ */ jsx347(
|
|
45104
45043
|
ChatCardWithDiscuss,
|
|
@@ -45345,7 +45284,7 @@ function useChunkCatchup({
|
|
|
45345
45284
|
}
|
|
45346
45285
|
|
|
45347
45286
|
// src/components/chat/hooks/use-jetstream-dialog-subscription.ts
|
|
45348
|
-
import { useEffect as useEffect75, useRef as useRef61, useState as
|
|
45287
|
+
import { useEffect as useEffect75, useRef as useRef61, useState as useState102 } from "react";
|
|
45349
45288
|
var DEFAULT_INACTIVE_THRESHOLD_MS = 5 * 6e4;
|
|
45350
45289
|
var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
|
|
45351
45290
|
function useJetStreamDialogSubscription({
|
|
@@ -45364,10 +45303,10 @@ function useJetStreamDialogSubscription({
|
|
|
45364
45303
|
reconnectionBackoff,
|
|
45365
45304
|
inactiveThresholdMs
|
|
45366
45305
|
}) {
|
|
45367
|
-
const [isConnected, setIsConnected] =
|
|
45368
|
-
const [isSubscribed, setIsSubscribed] =
|
|
45369
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
45370
|
-
const [currentStreamSeq, setCurrentStreamSeq] =
|
|
45306
|
+
const [isConnected, setIsConnected] = useState102(false);
|
|
45307
|
+
const [isSubscribed, setIsSubscribed] = useState102(false);
|
|
45308
|
+
const [reconnectionCount, setReconnectionCount] = useState102(0);
|
|
45309
|
+
const [currentStreamSeq, setCurrentStreamSeq] = useState102(null);
|
|
45371
45310
|
const clientRef = useRef61(null);
|
|
45372
45311
|
const subscriptionRef = useRef61(null);
|
|
45373
45312
|
const highestStreamSeqRef = useRef61(null);
|
|
@@ -45586,7 +45525,7 @@ function useJetStreamDialogSubscription({
|
|
|
45586
45525
|
}
|
|
45587
45526
|
|
|
45588
45527
|
// src/components/chat/hooks/use-nats-dialog-subscription.ts
|
|
45589
|
-
import { useEffect as useEffect76, useRef as useRef62, useState as
|
|
45528
|
+
import { useEffect as useEffect76, useRef as useRef62, useState as useState103 } from "react";
|
|
45590
45529
|
function useNatsDialogSubscription({
|
|
45591
45530
|
enabled,
|
|
45592
45531
|
dialogId,
|
|
@@ -45600,9 +45539,9 @@ function useNatsDialogSubscription({
|
|
|
45600
45539
|
clientConfig = {},
|
|
45601
45540
|
reconnectionBackoff
|
|
45602
45541
|
}) {
|
|
45603
|
-
const [isConnected, setIsConnected] =
|
|
45604
|
-
const [isSubscribed, setIsSubscribed] =
|
|
45605
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
45542
|
+
const [isConnected, setIsConnected] = useState103(false);
|
|
45543
|
+
const [isSubscribed, setIsSubscribed] = useState103(false);
|
|
45544
|
+
const [reconnectionCount, setReconnectionCount] = useState103(0);
|
|
45606
45545
|
const clientRef = useRef62(null);
|
|
45607
45546
|
const subscriptionRefs = useRef62(/* @__PURE__ */ new Map());
|
|
45608
45547
|
const onEventRef = useRef62(onEvent);
|
|
@@ -46796,7 +46735,7 @@ function useRealtimeChunkProcessor(options) {
|
|
|
46796
46735
|
}
|
|
46797
46736
|
|
|
46798
46737
|
// src/components/chat/hooks/use-slash-commands.ts
|
|
46799
|
-
import { useEffect as useEffect78, useState as
|
|
46738
|
+
import { useEffect as useEffect78, useState as useState104 } from "react";
|
|
46800
46739
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
46801
46740
|
async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
46802
46741
|
try {
|
|
@@ -46813,8 +46752,8 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
|
46813
46752
|
}
|
|
46814
46753
|
}
|
|
46815
46754
|
function useSlashCommands(prefix, commandsUrl) {
|
|
46816
|
-
const [commands, setCommands] =
|
|
46817
|
-
const [loading, setLoading] =
|
|
46755
|
+
const [commands, setCommands] = useState104([]);
|
|
46756
|
+
const [loading, setLoading] = useState104(false);
|
|
46818
46757
|
useEffect78(() => {
|
|
46819
46758
|
if (prefix == null) {
|
|
46820
46759
|
setCommands([]);
|
|
@@ -46921,7 +46860,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
|
|
|
46921
46860
|
}
|
|
46922
46861
|
|
|
46923
46862
|
// src/components/chat/hooks/use-chat-attachments.ts
|
|
46924
|
-
import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as
|
|
46863
|
+
import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as useState105 } from "react";
|
|
46925
46864
|
import { fileTypeFromBlob } from "file-type";
|
|
46926
46865
|
var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
|
|
46927
46866
|
var CHAT_ATTACHMENTS_FOLDER = "chat";
|
|
@@ -46997,7 +46936,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
|
|
|
46997
46936
|
function useChatAttachments() {
|
|
46998
46937
|
const runtime = useRequiredChatRuntime();
|
|
46999
46938
|
const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
|
|
47000
|
-
const [attachments, setAttachments] =
|
|
46939
|
+
const [attachments, setAttachments] = useState105([]);
|
|
47001
46940
|
const controllersRef = useRef64(/* @__PURE__ */ new Map());
|
|
47002
46941
|
const updateOne = useCallback46((id, patch) => {
|
|
47003
46942
|
setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
|
|
@@ -47164,14 +47103,14 @@ function useChatAttachments() {
|
|
|
47164
47103
|
}
|
|
47165
47104
|
|
|
47166
47105
|
// src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
|
|
47167
|
-
import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as
|
|
47106
|
+
import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as useState106 } from "react";
|
|
47168
47107
|
import { jsx as jsx348 } from "react/jsx-runtime";
|
|
47169
47108
|
var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
|
|
47170
47109
|
function useChatAttachmentImageGallery() {
|
|
47171
47110
|
const runtime = useRequiredChatRuntime();
|
|
47172
47111
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
47173
47112
|
const panelRef = useRef65(null);
|
|
47174
|
-
const [state, setState] =
|
|
47113
|
+
const [state, setState] = useState106(CLOSED);
|
|
47175
47114
|
const handleClose = useCallback47(() => setState(CLOSED), []);
|
|
47176
47115
|
useEffect79(() => {
|
|
47177
47116
|
const root = panelRef.current;
|
|
@@ -47219,7 +47158,7 @@ function absolutize(prefix) {
|
|
|
47219
47158
|
}
|
|
47220
47159
|
|
|
47221
47160
|
// src/components/chat/hooks/use-chat-identity.ts
|
|
47222
|
-
import { createContext as createContext12, createElement as createElement2, useContext as useContext12, useEffect as useEffect80, useState as
|
|
47161
|
+
import { createContext as createContext12, createElement as createElement2, useContext as useContext12, useEffect as useEffect80, useState as useState107 } from "react";
|
|
47223
47162
|
var ANON_DEFAULTS = {
|
|
47224
47163
|
authTier: "anon",
|
|
47225
47164
|
source: null,
|
|
@@ -47230,8 +47169,8 @@ function useResolveChatIdentity(enabled) {
|
|
|
47230
47169
|
const runtime = useRequiredChatRuntime();
|
|
47231
47170
|
const url = runtime.endpoints.identityUrl;
|
|
47232
47171
|
const proxyEmail = getEmbedProxyAuth()?.email ?? null;
|
|
47233
|
-
const [data, setData] =
|
|
47234
|
-
const [isLoading, setIsLoading] =
|
|
47172
|
+
const [data, setData] = useState107(ANON_DEFAULTS);
|
|
47173
|
+
const [isLoading, setIsLoading] = useState107(enabled);
|
|
47235
47174
|
useEffect80(() => {
|
|
47236
47175
|
if (!enabled) return;
|
|
47237
47176
|
let cancelled = false;
|
|
@@ -47292,13 +47231,13 @@ function useCloseOnNavigation(close, pathname) {
|
|
|
47292
47231
|
}
|
|
47293
47232
|
|
|
47294
47233
|
// src/components/chat/hooks/use-chat.ts
|
|
47295
|
-
import { useState as
|
|
47234
|
+
import { useState as useState109, useCallback as useCallback49, useEffect as useEffect82, useRef as useRef68 } from "react";
|
|
47296
47235
|
|
|
47297
47236
|
// src/components/chat/hooks/use-sse.ts
|
|
47298
|
-
import { useState as
|
|
47237
|
+
import { useState as useState108, useCallback as useCallback48, useRef as useRef67 } from "react";
|
|
47299
47238
|
function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
47300
|
-
const [isStreaming, setIsStreaming] =
|
|
47301
|
-
const [error, setError] =
|
|
47239
|
+
const [isStreaming, setIsStreaming] = useState108(false);
|
|
47240
|
+
const [error, setError] = useState108(null);
|
|
47302
47241
|
const abortControllerRef = useRef67(null);
|
|
47303
47242
|
const fallbackStream = useCallback48(async function* () {
|
|
47304
47243
|
throw new Error(
|
|
@@ -47365,8 +47304,8 @@ function useChat({
|
|
|
47365
47304
|
initialMessages,
|
|
47366
47305
|
onMessagesChange
|
|
47367
47306
|
} = {}) {
|
|
47368
|
-
const [messages, setMessages] =
|
|
47369
|
-
const [isTyping, setIsTyping] =
|
|
47307
|
+
const [messages, setMessages] = useState109(() => initialMessages ?? []);
|
|
47308
|
+
const [isTyping, setIsTyping] = useState109(false);
|
|
47370
47309
|
const currentAssistantSegmentsRef = useRef68([]);
|
|
47371
47310
|
const onMessagesChangeRef = useRef68(onMessagesChange);
|
|
47372
47311
|
onMessagesChangeRef.current = onMessagesChange;
|
|
@@ -47659,7 +47598,7 @@ function useChat({
|
|
|
47659
47598
|
}
|
|
47660
47599
|
|
|
47661
47600
|
// src/components/chat/hooks/use-sse-chat-adapter.ts
|
|
47662
|
-
import { useState as
|
|
47601
|
+
import { useState as useState110, useEffect as useEffect83, useCallback as useCallback50, useMemo as useMemo41, useRef as useRef69 } from "react";
|
|
47663
47602
|
function createEmptyTurnMeta() {
|
|
47664
47603
|
return {
|
|
47665
47604
|
provider: null,
|
|
@@ -47994,8 +47933,8 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
47994
47933
|
const metaMapRef = useRef69(/* @__PURE__ */ new Map());
|
|
47995
47934
|
const messagesRef = useRef69(persistedRef.current.messages);
|
|
47996
47935
|
const sendCountRef = useRef69(persistedRef.current.sendCount);
|
|
47997
|
-
const [streamingPhase, setStreamingPhase] =
|
|
47998
|
-
const [metaTick, setMetaTick] =
|
|
47936
|
+
const [streamingPhase, setStreamingPhase] = useState110("idle");
|
|
47937
|
+
const [metaTick, setMetaTick] = useState110(0);
|
|
47999
47938
|
const bumpMetaTick = useCallback50(() => setMetaTick((t) => t + 1), []);
|
|
48000
47939
|
const streamFn = useMemo41(
|
|
48001
47940
|
() => createDocStreamFn(
|
|
@@ -48268,7 +48207,7 @@ import {
|
|
|
48268
48207
|
useEffect as useEffect84,
|
|
48269
48208
|
useMemo as useMemo42,
|
|
48270
48209
|
useRef as useRef70,
|
|
48271
|
-
useState as
|
|
48210
|
+
useState as useState111
|
|
48272
48211
|
} from "react";
|
|
48273
48212
|
|
|
48274
48213
|
// src/components/chat/utils/process-historical-messages.ts
|
|
@@ -48758,23 +48697,23 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
48758
48697
|
modelLabel = null
|
|
48759
48698
|
} = config;
|
|
48760
48699
|
const isManagedMode = fetchDialogs !== void 0;
|
|
48761
|
-
const [internalDialogId, setInternalDialogId] =
|
|
48700
|
+
const [internalDialogId, setInternalDialogId] = useState111(null);
|
|
48762
48701
|
const dialogId = isManagedMode ? internalDialogId : controlledDialogId !== void 0 ? controlledDialogId : null;
|
|
48763
|
-
const [messages, setMessages] =
|
|
48764
|
-
const [streamingPhase, setStreamingPhase] =
|
|
48765
|
-
const [approvalStatuses, setApprovalStatuses] =
|
|
48766
|
-
const [dialogs, setDialogs] =
|
|
48767
|
-
const [dialogsNextCursor, setDialogsNextCursor] =
|
|
48768
|
-
const [isDialogsLoading, setIsDialogsLoading] =
|
|
48769
|
-
const [dialogsError, setDialogsError] =
|
|
48770
|
-
const [isCreatingDialog, setIsCreatingDialog] =
|
|
48771
|
-
const [messagesNextCursor, setMessagesNextCursor] =
|
|
48772
|
-
const [isMessagesLoading, setIsMessagesLoading] =
|
|
48773
|
-
const [dialogTokenUsage, setDialogTokenUsage] =
|
|
48702
|
+
const [messages, setMessages] = useState111([]);
|
|
48703
|
+
const [streamingPhase, setStreamingPhase] = useState111("idle");
|
|
48704
|
+
const [approvalStatuses, setApprovalStatuses] = useState111({});
|
|
48705
|
+
const [dialogs, setDialogs] = useState111([]);
|
|
48706
|
+
const [dialogsNextCursor, setDialogsNextCursor] = useState111(null);
|
|
48707
|
+
const [isDialogsLoading, setIsDialogsLoading] = useState111(false);
|
|
48708
|
+
const [dialogsError, setDialogsError] = useState111(false);
|
|
48709
|
+
const [isCreatingDialog, setIsCreatingDialog] = useState111(false);
|
|
48710
|
+
const [messagesNextCursor, setMessagesNextCursor] = useState111(null);
|
|
48711
|
+
const [isMessagesLoading, setIsMessagesLoading] = useState111(false);
|
|
48712
|
+
const [dialogTokenUsage, setDialogTokenUsage] = useState111(
|
|
48774
48713
|
null
|
|
48775
48714
|
);
|
|
48776
|
-
const [liveModel, setLiveModel] =
|
|
48777
|
-
const [connectionState, setConnectionState] =
|
|
48715
|
+
const [liveModel, setLiveModel] = useState111(null);
|
|
48716
|
+
const [connectionState, setConnectionState] = useState111("connecting");
|
|
48778
48717
|
const handleApprove = useCallback51(
|
|
48779
48718
|
async (requestId) => {
|
|
48780
48719
|
if (!approveRequestCallback) return;
|
|
@@ -49570,7 +49509,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
|
|
|
49570
49509
|
}
|
|
49571
49510
|
|
|
49572
49511
|
// src/components/chat/embeddable-chat.tsx
|
|
49573
|
-
import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as
|
|
49512
|
+
import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as useState113 } from "react";
|
|
49574
49513
|
import * as DialogPrimitive4 from "@radix-ui/react-dialog";
|
|
49575
49514
|
import { usePreventScroll } from "@react-aria/overlays";
|
|
49576
49515
|
import { isIOS } from "@react-aria/utils";
|
|
@@ -49651,7 +49590,7 @@ init_button2();
|
|
|
49651
49590
|
import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
|
|
49652
49591
|
|
|
49653
49592
|
// src/components/chat/hooks/use-chat-dialog-manager.ts
|
|
49654
|
-
import { useCallback as useCallback53, useMemo as useMemo44, useState as
|
|
49593
|
+
import { useCallback as useCallback53, useMemo as useMemo44, useState as useState112 } from "react";
|
|
49655
49594
|
function useChatDialogManager({
|
|
49656
49595
|
dialogs,
|
|
49657
49596
|
activeDialogId,
|
|
@@ -49662,8 +49601,8 @@ function useChatDialogManager({
|
|
|
49662
49601
|
fetchArchivedDialogs,
|
|
49663
49602
|
unarchiveDialog
|
|
49664
49603
|
}) {
|
|
49665
|
-
const [renameTarget, setRenameTarget] =
|
|
49666
|
-
const [archiveTarget, setArchiveTarget] =
|
|
49604
|
+
const [renameTarget, setRenameTarget] = useState112(null);
|
|
49605
|
+
const [archiveTarget, setArchiveTarget] = useState112(null);
|
|
49667
49606
|
const handleConfirmRename = useCallback53(
|
|
49668
49607
|
(name) => {
|
|
49669
49608
|
if (renameTarget) void renameDialog(renameTarget.id, name);
|
|
@@ -49686,10 +49625,10 @@ function useChatDialogManager({
|
|
|
49686
49625
|
}
|
|
49687
49626
|
setArchiveTarget(null);
|
|
49688
49627
|
}, [archiveTarget, archiveDialog, activeDialogId, clearMessages]);
|
|
49689
|
-
const [archiveOpen, setArchiveOpen] =
|
|
49690
|
-
const [archivedDialogs, setArchivedDialogs] =
|
|
49691
|
-
const [archivedCursor, setArchivedCursor] =
|
|
49692
|
-
const [archivedLoading, setArchivedLoading] =
|
|
49628
|
+
const [archiveOpen, setArchiveOpen] = useState112(false);
|
|
49629
|
+
const [archivedDialogs, setArchivedDialogs] = useState112([]);
|
|
49630
|
+
const [archivedCursor, setArchivedCursor] = useState112(null);
|
|
49631
|
+
const [archivedLoading, setArchivedLoading] = useState112(false);
|
|
49693
49632
|
const loadArchivedPage = useCallback53(
|
|
49694
49633
|
async (cursor) => {
|
|
49695
49634
|
if (!fetchArchivedDialogs) return;
|
|
@@ -49715,10 +49654,10 @@ function useChatDialogManager({
|
|
|
49715
49654
|
void loadArchivedPage();
|
|
49716
49655
|
}, [loadArchivedPage]);
|
|
49717
49656
|
const closeArchive = useCallback53(() => setArchiveOpen(false), []);
|
|
49718
|
-
const [viewingArchivedId, setViewingArchivedId] =
|
|
49657
|
+
const [viewingArchivedId, setViewingArchivedId] = useState112(
|
|
49719
49658
|
null
|
|
49720
49659
|
);
|
|
49721
|
-
const [openingDialogId, setOpeningDialogId] =
|
|
49660
|
+
const [openingDialogId, setOpeningDialogId] = useState112(null);
|
|
49722
49661
|
const handleSelectDialog = useCallback53(
|
|
49723
49662
|
(id) => {
|
|
49724
49663
|
setViewingArchivedId(null);
|
|
@@ -49737,7 +49676,7 @@ function useChatDialogManager({
|
|
|
49737
49676
|
},
|
|
49738
49677
|
[selectDialog]
|
|
49739
49678
|
);
|
|
49740
|
-
const [restoreTarget, setRestoreTarget] =
|
|
49679
|
+
const [restoreTarget, setRestoreTarget] = useState112(null);
|
|
49741
49680
|
const handleConfirmRestore = useCallback53(async () => {
|
|
49742
49681
|
if (restoreTarget) {
|
|
49743
49682
|
try {
|
|
@@ -49799,7 +49738,7 @@ function useChatDialogManager({
|
|
|
49799
49738
|
|
|
49800
49739
|
// src/components/chat/embeddable-chat.tsx
|
|
49801
49740
|
init_next_navigation();
|
|
49802
|
-
import { Fragment as
|
|
49741
|
+
import { Fragment as Fragment74, jsx as jsx351, jsxs as jsxs281 } from "react/jsx-runtime";
|
|
49803
49742
|
var formatRelativePath = (p) => p.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
49804
49743
|
var mentionTokenOf = (key, markerByType) => {
|
|
49805
49744
|
const ci = key.indexOf(":");
|
|
@@ -49919,7 +49858,7 @@ function SourceChip({
|
|
|
49919
49858
|
);
|
|
49920
49859
|
}
|
|
49921
49860
|
const displayName = src.name || formatRelativePath(src.path);
|
|
49922
|
-
const chipBody = (label) => /* @__PURE__ */ jsxs281(
|
|
49861
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs281(Fragment74, { children: [
|
|
49923
49862
|
icon,
|
|
49924
49863
|
/* @__PURE__ */ jsxs281("span", { className: "truncate max-w-[160px]", children: [
|
|
49925
49864
|
"[",
|
|
@@ -49989,7 +49928,7 @@ function SourceChips({
|
|
|
49989
49928
|
onClose,
|
|
49990
49929
|
onDiscuss
|
|
49991
49930
|
}) {
|
|
49992
|
-
const [expanded, setExpanded] =
|
|
49931
|
+
const [expanded, setExpanded] = useState113(false);
|
|
49993
49932
|
if (cited.length === 0) {
|
|
49994
49933
|
const fallback = uncited.slice(0, FALLBACK_TOP_RETRIEVED);
|
|
49995
49934
|
if (fallback.length === 0) return null;
|
|
@@ -50110,7 +50049,7 @@ function EmbeddableChatInner({
|
|
|
50110
50049
|
defaultProp: defaultOpen ?? false,
|
|
50111
50050
|
onChange: onOpenChange
|
|
50112
50051
|
});
|
|
50113
|
-
const [autoFocusInput] =
|
|
50052
|
+
const [autoFocusInput] = useState113(() => {
|
|
50114
50053
|
if (typeof window === "undefined") return false;
|
|
50115
50054
|
return !window.matchMedia("(pointer: coarse)").matches;
|
|
50116
50055
|
});
|
|
@@ -50143,7 +50082,7 @@ function EmbeddableChatInner({
|
|
|
50143
50082
|
};
|
|
50144
50083
|
}, [isOpen, shellLess]);
|
|
50145
50084
|
const chatInputRef = useRef72(null);
|
|
50146
|
-
const [quickActionPreview, setQuickActionPreview] =
|
|
50085
|
+
const [quickActionPreview, setQuickActionPreview] = useState113(null);
|
|
50147
50086
|
const slashCommandsProp = useMemo45(
|
|
50148
50087
|
() => ({
|
|
50149
50088
|
fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
|
|
@@ -50186,7 +50125,7 @@ function EmbeddableChatInner({
|
|
|
50186
50125
|
}, [mingoState, mingoDialogCapabilities, effectiveModes]);
|
|
50187
50126
|
const hasMingoMode = !!effectiveModes.mingo || !!mingoState;
|
|
50188
50127
|
const initialActiveMode = controlledActiveMode ?? defaultActiveMode ?? (effectiveModes.guide ? "guide" : "mingo");
|
|
50189
|
-
const [uncontrolledActiveMode, setUncontrolledActiveMode] =
|
|
50128
|
+
const [uncontrolledActiveMode, setUncontrolledActiveMode] = useState113(initialActiveMode);
|
|
50190
50129
|
const activeMode = controlledActiveMode ?? uncontrolledActiveMode;
|
|
50191
50130
|
const handleActiveModeChange = useCallback54(
|
|
50192
50131
|
(next) => {
|
|
@@ -50268,9 +50207,9 @@ function EmbeddableChatInner({
|
|
|
50268
50207
|
const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
|
|
50269
50208
|
const contextMaxItems = contextPicker?.maxItems ?? 10;
|
|
50270
50209
|
const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
|
|
50271
|
-
const [contextItems, setContextItems] =
|
|
50272
|
-
const [contextPickerOpen, setContextPickerOpen] =
|
|
50273
|
-
const [mentionQuery, setMentionQuery] =
|
|
50210
|
+
const [contextItems, setContextItems] = useState113([]);
|
|
50211
|
+
const [contextPickerOpen, setContextPickerOpen] = useState113(false);
|
|
50212
|
+
const [mentionQuery, setMentionQuery] = useState113(null);
|
|
50274
50213
|
const mentionActiveRef = useRef72(false);
|
|
50275
50214
|
useEffect85(() => {
|
|
50276
50215
|
mentionActiveRef.current = mentionQuery !== null;
|
|
@@ -50557,7 +50496,7 @@ function EmbeddableChatInner({
|
|
|
50557
50496
|
const uncited = sources.filter((s) => !seenOrder.has(s.index));
|
|
50558
50497
|
return { cited, uncited };
|
|
50559
50498
|
}, [lastAssistantMsg, chatLoading]);
|
|
50560
|
-
const [portalHost, setPortalHost] =
|
|
50499
|
+
const [portalHost, setPortalHost] = useState113(null);
|
|
50561
50500
|
const body = /* @__PURE__ */ jsxs281(PortalContainerContext.Provider, { value: portalHost, children: [
|
|
50562
50501
|
/* @__PURE__ */ jsx351(
|
|
50563
50502
|
"div",
|
|
@@ -50865,7 +50804,7 @@ function EmbeddableChatInner({
|
|
|
50865
50804
|
]
|
|
50866
50805
|
}
|
|
50867
50806
|
) }) });
|
|
50868
|
-
return /* @__PURE__ */ jsxs281(
|
|
50807
|
+
return /* @__PURE__ */ jsxs281(Fragment74, { children: [
|
|
50869
50808
|
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx351(
|
|
50870
50809
|
"div",
|
|
50871
50810
|
{
|
|
@@ -51142,7 +51081,6 @@ export {
|
|
|
51142
51081
|
ArgRow,
|
|
51143
51082
|
ResultBlock,
|
|
51144
51083
|
CommandBlock,
|
|
51145
|
-
ApprovalStatusTag,
|
|
51146
51084
|
ApprovalBatchMessage,
|
|
51147
51085
|
ContextCompactionDisplay,
|
|
51148
51086
|
SimpleMarkdownRenderer,
|
|
@@ -51826,4 +51764,4 @@ export {
|
|
|
51826
51764
|
LogsList,
|
|
51827
51765
|
assets
|
|
51828
51766
|
};
|
|
51829
|
-
//# sourceMappingURL=chunk-
|
|
51767
|
+
//# sourceMappingURL=chunk-CNDLMBFN.js.map
|