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