@flamingo-stack/openframe-frontend-core 0.0.383 → 0.0.384-snapshot.20260708165758
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-2KDXNL7M.cjs} +7 -7
- package/dist/{chunk-FL6YJLPC.cjs.map → chunk-2KDXNL7M.cjs.map} +1 -1
- package/dist/{chunk-EGFLSQEJ.js → chunk-53R2NLYW.js} +4 -4
- package/dist/{chunk-W456FUZG.cjs → chunk-5I4ERVP4.cjs} +57 -57
- package/dist/{chunk-W456FUZG.cjs.map → chunk-5I4ERVP4.cjs.map} +1 -1
- package/dist/{chunk-BALSUWWU.cjs → chunk-5O2QED4E.cjs} +37 -37
- package/dist/{chunk-BALSUWWU.cjs.map → chunk-5O2QED4E.cjs.map} +1 -1
- package/dist/{chunk-EBOK7SG7.js → chunk-7DVZECFW.js} +2 -2
- package/dist/{chunk-SGMZQTP6.js → chunk-ACKCFE7D.js} +2 -2
- package/dist/{chunk-MY7TV47R.js → chunk-ACYF5YVM.js} +2 -2
- package/dist/{chunk-7TU6MLIQ.cjs → chunk-CIBBHSCP.cjs} +12 -12
- package/dist/{chunk-7TU6MLIQ.cjs.map → chunk-CIBBHSCP.cjs.map} +1 -1
- package/dist/{chunk-ZFIDR55N.cjs → chunk-DN5AIYP4.cjs} +9 -9
- package/dist/{chunk-ZFIDR55N.cjs.map → chunk-DN5AIYP4.cjs.map} +1 -1
- package/dist/{chunk-AJJF43ZL.js → chunk-IDF4BZHL.js} +2 -2
- package/dist/{chunk-6SR7HXGW.js → chunk-K557GA5G.js} +4 -4
- package/dist/{chunk-LI7OAUSA.js → chunk-L5FDBXYI.js} +4 -4
- package/dist/{chunk-AHCBZ6TC.cjs → chunk-LDOEIJIA.cjs} +62 -62
- package/dist/{chunk-AHCBZ6TC.cjs.map → chunk-LDOEIJIA.cjs.map} +1 -1
- package/dist/{chunk-WVJFSCXR.cjs → chunk-LFAEFMYA.cjs} +26 -26
- package/dist/{chunk-WVJFSCXR.cjs.map → chunk-LFAEFMYA.cjs.map} +1 -1
- package/dist/{chunk-S2V4EPKL.cjs → chunk-LRLY7VFQ.cjs} +15 -15
- package/dist/{chunk-S2V4EPKL.cjs.map → chunk-LRLY7VFQ.cjs.map} +1 -1
- package/dist/{chunk-KBG3PLKS.js → chunk-NTHZI6VG.js} +2 -2
- package/dist/{chunk-KQQ6U4UW.js → chunk-PNJXI4NZ.js} +4 -4
- package/dist/{chunk-KGSOMSHT.cjs → chunk-QXKQ2WZF.cjs} +25 -25
- package/dist/{chunk-KGSOMSHT.cjs.map → chunk-QXKQ2WZF.cjs.map} +1 -1
- package/dist/{chunk-B45U4FY5.js → chunk-UPHZGPXZ.js} +2 -2
- package/dist/{chunk-VQCV3GGI.cjs → chunk-VZHEFPPH.cjs} +227 -163
- package/dist/chunk-VZHEFPPH.cjs.map +1 -0
- package/dist/{chunk-YW6K7IYF.cjs → chunk-X5DBARHE.cjs} +31 -31
- package/dist/{chunk-YW6K7IYF.cjs.map → chunk-X5DBARHE.cjs.map} +1 -1
- package/dist/{chunk-CNDLMBFN.js → chunk-XQ77CK5C.js} +390 -326
- package/dist/chunk-XQ77CK5C.js.map +1 -0
- package/dist/{chunk-ZD6GZX7E.js → chunk-YDYO7DRL.js} +2 -2
- package/dist/{chunk-KFTCNBSJ.cjs → chunk-ZRVWRNVJ.cjs} +5 -5
- package/dist/{chunk-KFTCNBSJ.cjs.map → chunk-ZRVWRNVJ.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/approval-batch-message.d.ts +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/app-layout.d.ts +9 -1
- package/dist/components/navigation/app-layout.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar.d.ts.map +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/dist/tailwind.config.cjs +4 -1
- package/dist/tailwind.config.cjs.map +1 -1
- package/dist/tailwind.config.js +4 -1
- package/dist/tailwind.config.js.map +1 -1
- package/dist/types/navigation.d.ts +0 -1
- package/dist/types/navigation.d.ts.map +1 -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/navigation/app-layout.tsx +17 -1
- package/src/components/navigation/navigation-sidebar-item.tsx +1 -12
- package/src/components/navigation/navigation-sidebar.tsx +6 -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/src/types/navigation.ts +0 -1
- package/tailwind.config.ts +4 -1
- package/dist/chunk-CNDLMBFN.js.map +0 -1
- package/dist/chunk-VQCV3GGI.cjs.map +0 -1
- /package/dist/{chunk-EGFLSQEJ.js.map → chunk-53R2NLYW.js.map} +0 -0
- /package/dist/{chunk-EBOK7SG7.js.map → chunk-7DVZECFW.js.map} +0 -0
- /package/dist/{chunk-SGMZQTP6.js.map → chunk-ACKCFE7D.js.map} +0 -0
- /package/dist/{chunk-MY7TV47R.js.map → chunk-ACYF5YVM.js.map} +0 -0
- /package/dist/{chunk-AJJF43ZL.js.map → chunk-IDF4BZHL.js.map} +0 -0
- /package/dist/{chunk-6SR7HXGW.js.map → chunk-K557GA5G.js.map} +0 -0
- /package/dist/{chunk-LI7OAUSA.js.map → chunk-L5FDBXYI.js.map} +0 -0
- /package/dist/{chunk-KBG3PLKS.js.map → chunk-NTHZI6VG.js.map} +0 -0
- /package/dist/{chunk-KQQ6U4UW.js.map → chunk-PNJXI4NZ.js.map} +0 -0
- /package/dist/{chunk-B45U4FY5.js.map → chunk-UPHZGPXZ.js.map} +0 -0
- /package/dist/{chunk-ZD6GZX7E.js.map → chunk-YDYO7DRL.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
|
-
|
|
31698
|
-
|
|
31699
|
-
|
|
31700
|
-
|
|
31701
|
-
|
|
31702
|
-
|
|
31703
|
-
}
|
|
31704
|
-
};
|
|
31705
|
-
const handleReject = async () => {
|
|
31706
|
-
setLocalStatus("rejected");
|
|
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);
|
|
31707
31762
|
try {
|
|
31708
|
-
await
|
|
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";
|
|
@@ -33964,17 +34025,7 @@ function NavigationSidebarItemButton({
|
|
|
33964
34025
|
children: item.label
|
|
33965
34026
|
}
|
|
33966
34027
|
),
|
|
33967
|
-
hasUnread && showLabel && /* @__PURE__ */ jsx269("span", { className: "bg-ods-accent flex items-center justify-center flex-shrink-0 p-2 rounded-md size-6", children: /* @__PURE__ */ jsx269("span", { className: "text-
|
|
33968
|
-
item.badge && showLabel && /* @__PURE__ */ jsx269(
|
|
33969
|
-
"span",
|
|
33970
|
-
{
|
|
33971
|
-
className: cn(
|
|
33972
|
-
"text-sm flex-shrink-0 transition-colors duration-300",
|
|
33973
|
-
isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
|
|
33974
|
-
),
|
|
33975
|
-
children: item.badge
|
|
33976
|
-
}
|
|
33977
|
-
)
|
|
34028
|
+
hasUnread && showLabel && /* @__PURE__ */ jsx269("span", { className: "bg-ods-accent flex items-center justify-center flex-shrink-0 p-2 rounded-md size-6", children: /* @__PURE__ */ jsx269("span", { className: "text-h5 text-ods-text-on-accent", children: unreadCount > 99 ? "99+" : unreadCount }) })
|
|
33978
34029
|
]
|
|
33979
34030
|
}
|
|
33980
34031
|
);
|
|
@@ -34027,7 +34078,7 @@ function NavigationSidebarToggle({
|
|
|
34027
34078
|
}
|
|
34028
34079
|
|
|
34029
34080
|
// src/components/navigation/navigation-sidebar.tsx
|
|
34030
|
-
import { Fragment as
|
|
34081
|
+
import { Fragment as Fragment49, jsx as jsx271, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
34031
34082
|
var MINIMIZED_WIDTH = 56;
|
|
34032
34083
|
var EXPANDED_WIDTH = 224;
|
|
34033
34084
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
@@ -34039,12 +34090,12 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34039
34090
|
STORAGE_KEY,
|
|
34040
34091
|
config.minimized ?? false
|
|
34041
34092
|
);
|
|
34042
|
-
const [tabletMinimized, setTabletMinimized] =
|
|
34093
|
+
const [tabletMinimized, setTabletMinimized] = useState84(true);
|
|
34043
34094
|
useEffect63(() => {
|
|
34044
34095
|
if (isTablet) setTabletMinimized(true);
|
|
34045
34096
|
}, [isTablet]);
|
|
34046
34097
|
const minimized = isTablet ? tabletMinimized : desktopMinimized;
|
|
34047
|
-
const [transitionsEnabled, setTransitionsEnabled] =
|
|
34098
|
+
const [transitionsEnabled, setTransitionsEnabled] = useState84(false);
|
|
34048
34099
|
const isOverlayOpen = isTablet && !minimized;
|
|
34049
34100
|
const showLabel = !minimized;
|
|
34050
34101
|
const handleToggle = useCallback33(() => {
|
|
@@ -34092,7 +34143,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34092
34143
|
return () => cancelAnimationFrame(id);
|
|
34093
34144
|
}
|
|
34094
34145
|
}, [isHydrated, transitionsEnabled]);
|
|
34095
|
-
return /* @__PURE__ */ jsxs213(
|
|
34146
|
+
return /* @__PURE__ */ jsxs213(Fragment49, { children: [
|
|
34096
34147
|
/* @__PURE__ */ jsx271(
|
|
34097
34148
|
"div",
|
|
34098
34149
|
{
|
|
@@ -34120,13 +34171,18 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34120
34171
|
className: cn(
|
|
34121
34172
|
"flex-col hidden md:flex flex-shrink-0",
|
|
34122
34173
|
"bg-ods-card border-r border-ods-border",
|
|
34123
|
-
|
|
34174
|
+
// Tablet: float the sidebar over content. Anchored to the layout row
|
|
34175
|
+
// (`absolute` within AppLayout's `relative` row) — NOT the viewport —
|
|
34176
|
+
// so an optional `topBar` above the row is not overlapped. With no
|
|
34177
|
+
// topBar the row spans the full viewport, so this is visually
|
|
34178
|
+
// identical to a viewport-fixed sidebar.
|
|
34179
|
+
isTablet ? "absolute inset-y-0 left-0 z-[45]" : "relative h-full",
|
|
34124
34180
|
transitionsEnabled && "transition-[width] duration-300",
|
|
34125
34181
|
config.className
|
|
34126
34182
|
),
|
|
34127
34183
|
style: { width: sidebarWidth },
|
|
34128
34184
|
"aria-label": "Main navigation sidebar",
|
|
34129
|
-
children: isHydrated && /* @__PURE__ */ jsxs213(
|
|
34185
|
+
children: isHydrated && /* @__PURE__ */ jsxs213(Fragment49, { children: [
|
|
34130
34186
|
/* @__PURE__ */ jsx271(NavigationSidebarHeader, { minimized }),
|
|
34131
34187
|
/* @__PURE__ */ jsxs213("div", { className: "flex-1 flex flex-col justify-between py-4 overflow-y-auto", children: [
|
|
34132
34188
|
/* @__PURE__ */ jsx271("nav", { className: "flex flex-col", "aria-label": "Primary navigation", children: primaryItems.map((item) => /* @__PURE__ */ jsx271(
|
|
@@ -34534,11 +34590,11 @@ function NotificationsHeaderButton({
|
|
|
34534
34590
|
}
|
|
34535
34591
|
|
|
34536
34592
|
// 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
|
|
34593
|
+
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
34594
|
|
|
34539
34595
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
34540
34596
|
import React110, { useCallback as useCallback34, useEffect as useEffect64 } from "react";
|
|
34541
|
-
import { Fragment as
|
|
34597
|
+
import { Fragment as Fragment50, jsx as jsx276, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
34542
34598
|
var HEADER_HEIGHT = 48;
|
|
34543
34599
|
var MobileBurgerMenu = React110.memo(function MobileBurgerMenu2({
|
|
34544
34600
|
isOpen,
|
|
@@ -34624,7 +34680,7 @@ var MobileBurgerMenu = React110.memo(function MobileBurgerMenu2({
|
|
|
34624
34680
|
row.length === 1 && /* @__PURE__ */ jsx276("div", { className: "flex-1" })
|
|
34625
34681
|
] }, rowIndex)) });
|
|
34626
34682
|
};
|
|
34627
|
-
return /* @__PURE__ */ jsxs218(
|
|
34683
|
+
return /* @__PURE__ */ jsxs218(Fragment50, { children: [
|
|
34628
34684
|
/* @__PURE__ */ jsx276(
|
|
34629
34685
|
"div",
|
|
34630
34686
|
{
|
|
@@ -34753,10 +34809,11 @@ function AppLayout({
|
|
|
34753
34809
|
className,
|
|
34754
34810
|
mobileBurgerMenuProps,
|
|
34755
34811
|
disabled = false,
|
|
34756
|
-
drawer
|
|
34812
|
+
drawer,
|
|
34813
|
+
topBar
|
|
34757
34814
|
}) {
|
|
34758
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
34759
|
-
const [drawerContainer, setDrawerContainer] =
|
|
34815
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState85(false);
|
|
34816
|
+
const [drawerContainer, setDrawerContainer] = useState85(null);
|
|
34760
34817
|
const mobileMenuOpenRef = useRef45(mobileMenuOpen);
|
|
34761
34818
|
mobileMenuOpenRef.current = mobileMenuOpen;
|
|
34762
34819
|
const drawerHandlesRef = useRef45(/* @__PURE__ */ new Set());
|
|
@@ -34777,40 +34834,43 @@ function AppLayout({
|
|
|
34777
34834
|
return () => drawerHandlesRef.current.delete(handle);
|
|
34778
34835
|
}
|
|
34779
34836
|
}), []);
|
|
34780
|
-
return /* @__PURE__ */ jsx277(AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ jsx277(AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ jsxs219("div", { className: cn("flex h-screen bg-ods-bg", className), children: [
|
|
34781
|
-
|
|
34782
|
-
/* @__PURE__ */
|
|
34783
|
-
|
|
34784
|
-
{
|
|
34785
|
-
...mobileBurgerMenuProps,
|
|
34786
|
-
isOpen: mobileMenuOpen,
|
|
34787
|
-
onClose: handleCloseMobileMenu,
|
|
34788
|
-
config: sidebarConfig,
|
|
34789
|
-
disabled
|
|
34790
|
-
}
|
|
34791
|
-
),
|
|
34792
|
-
/* @__PURE__ */ jsxs219("div", { className: "flex-1 flex flex-col overflow-hidden", children: [
|
|
34837
|
+
return /* @__PURE__ */ jsx277(AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ jsx277(AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ jsxs219("div", { className: cn("flex flex-col h-screen bg-ods-bg", className), children: [
|
|
34838
|
+
topBar,
|
|
34839
|
+
/* @__PURE__ */ jsxs219("div", { className: "flex flex-1 min-h-0 relative", children: [
|
|
34840
|
+
/* @__PURE__ */ jsx277(NavigationSidebar, { config: sidebarConfig, disabled }),
|
|
34793
34841
|
/* @__PURE__ */ jsx277(
|
|
34794
|
-
|
|
34842
|
+
MobileBurgerMenu,
|
|
34795
34843
|
{
|
|
34796
|
-
...
|
|
34797
|
-
|
|
34798
|
-
|
|
34844
|
+
...mobileBurgerMenuProps,
|
|
34845
|
+
isOpen: mobileMenuOpen,
|
|
34846
|
+
onClose: handleCloseMobileMenu,
|
|
34847
|
+
config: sidebarConfig,
|
|
34799
34848
|
disabled
|
|
34800
34849
|
}
|
|
34801
34850
|
),
|
|
34802
|
-
/* @__PURE__ */
|
|
34803
|
-
|
|
34804
|
-
|
|
34805
|
-
|
|
34806
|
-
|
|
34807
|
-
|
|
34808
|
-
|
|
34809
|
-
|
|
34810
|
-
|
|
34811
|
-
|
|
34812
|
-
}
|
|
34813
|
-
|
|
34851
|
+
/* @__PURE__ */ jsxs219("div", { className: "flex-1 flex flex-col overflow-hidden", children: [
|
|
34852
|
+
/* @__PURE__ */ jsx277(
|
|
34853
|
+
AppHeader,
|
|
34854
|
+
{
|
|
34855
|
+
...headerProps,
|
|
34856
|
+
isMobileMenuOpen: mobileMenuOpen,
|
|
34857
|
+
onToggleMobileMenu: handleToggleMobileMenu,
|
|
34858
|
+
disabled
|
|
34859
|
+
}
|
|
34860
|
+
),
|
|
34861
|
+
/* @__PURE__ */ jsx277(NotificationDrawer, {}),
|
|
34862
|
+
/* @__PURE__ */ jsxs219(
|
|
34863
|
+
"div",
|
|
34864
|
+
{
|
|
34865
|
+
ref: setDrawerContainer,
|
|
34866
|
+
className: "flex-1 flex flex-col relative overflow-hidden",
|
|
34867
|
+
children: [
|
|
34868
|
+
/* @__PURE__ */ jsx277("main", { className: cn("flex-1 overflow-y-auto", mainClassName), children: /* @__PURE__ */ jsx277(Suspense2, { fallback: loadingFallback ?? null, children }) }),
|
|
34869
|
+
drawer
|
|
34870
|
+
]
|
|
34871
|
+
}
|
|
34872
|
+
)
|
|
34873
|
+
] })
|
|
34814
34874
|
] })
|
|
34815
34875
|
] }) }) });
|
|
34816
34876
|
}
|
|
@@ -35856,7 +35916,7 @@ import React113, { useRef as useRef47, useCallback as useCallback37 } from "reac
|
|
|
35856
35916
|
import React112 from "react";
|
|
35857
35917
|
init_button2();
|
|
35858
35918
|
init_cn();
|
|
35859
|
-
import { Fragment as
|
|
35919
|
+
import { Fragment as Fragment51, jsx as jsx287, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
35860
35920
|
function OnboardingStepCard({
|
|
35861
35921
|
step,
|
|
35862
35922
|
isCompleted,
|
|
@@ -35898,10 +35958,10 @@ function OnboardingStepCard({
|
|
|
35898
35958
|
/* @__PURE__ */ jsx287("h3", { className: "text-h4 text-ods-text-primary truncate", title: step.title, children: step.title }),
|
|
35899
35959
|
/* @__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
35960
|
] }),
|
|
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(
|
|
35961
|
+
/* @__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
35962
|
/* @__PURE__ */ jsx287("div", { className: "h-[32px] w-[100px] bg-ods-border rounded-[6px] animate-pulse" }),
|
|
35903
35963
|
/* @__PURE__ */ jsx287("div", { className: "h-[32px] w-[120px] bg-ods-border rounded-[6px] animate-pulse" })
|
|
35904
|
-
] }) : isCompleted ? /* @__PURE__ */ jsxs229(
|
|
35964
|
+
] }) : isCompleted ? /* @__PURE__ */ jsxs229(Fragment51, { children: [
|
|
35905
35965
|
/* @__PURE__ */ jsx287(
|
|
35906
35966
|
StatusBadge,
|
|
35907
35967
|
{
|
|
@@ -35920,14 +35980,14 @@ function OnboardingStepCard({
|
|
|
35920
35980
|
children: step.completedText
|
|
35921
35981
|
}
|
|
35922
35982
|
)
|
|
35923
|
-
] }) : isSkipped ? /* @__PURE__ */ jsx287(
|
|
35983
|
+
] }) : isSkipped ? /* @__PURE__ */ jsx287(Fragment51, { children: /* @__PURE__ */ jsx287(
|
|
35924
35984
|
StatusBadge,
|
|
35925
35985
|
{
|
|
35926
35986
|
text: "SKIPPED",
|
|
35927
35987
|
variant: "card",
|
|
35928
35988
|
colorScheme: "default"
|
|
35929
35989
|
}
|
|
35930
|
-
) }) : /* @__PURE__ */ jsxs229(
|
|
35990
|
+
) }) : /* @__PURE__ */ jsxs229(Fragment51, { children: [
|
|
35931
35991
|
/* @__PURE__ */ jsx287(
|
|
35932
35992
|
Button,
|
|
35933
35993
|
{
|
|
@@ -36316,7 +36376,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
|
|
|
36316
36376
|
] });
|
|
36317
36377
|
}
|
|
36318
36378
|
function ServiceCardRowItem({ row }) {
|
|
36319
|
-
const [revealed, setRevealed] =
|
|
36379
|
+
const [revealed, setRevealed] = useState87(false);
|
|
36320
36380
|
const { copy, copied } = useCopyToClipboard();
|
|
36321
36381
|
const actions = useMemo35(() => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
|
|
36322
36382
|
const displayValue = row.isSecret ? /* @__PURE__ */ jsx291(MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ jsx291("span", { children: row.value });
|
|
@@ -36934,7 +36994,7 @@ function getHideClasses(hideAt) {
|
|
|
36934
36994
|
}
|
|
36935
36995
|
|
|
36936
36996
|
// src/components/ui/table/table-header.tsx
|
|
36937
|
-
import { Fragment as
|
|
36997
|
+
import { Fragment as Fragment52, jsx as jsx301, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
36938
36998
|
function TableHeader({
|
|
36939
36999
|
columns,
|
|
36940
37000
|
className,
|
|
@@ -37045,10 +37105,10 @@ function TableHeader({
|
|
|
37045
37105
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
37046
37106
|
),
|
|
37047
37107
|
onClick: () => handleSort(column),
|
|
37048
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs240(
|
|
37108
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs240(Fragment52, { children: [
|
|
37049
37109
|
column.renderHeader(),
|
|
37050
37110
|
getSortIcon(column)
|
|
37051
|
-
] }) : /* @__PURE__ */ jsxs240(
|
|
37111
|
+
] }) : /* @__PURE__ */ jsxs240(Fragment52, { children: [
|
|
37052
37112
|
/* @__PURE__ */ jsx301("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
37053
37113
|
getSortIcon(column)
|
|
37054
37114
|
] })
|
|
@@ -37103,7 +37163,7 @@ function TableCell({
|
|
|
37103
37163
|
|
|
37104
37164
|
// src/components/ui/table/table-skeleton.tsx
|
|
37105
37165
|
init_cn();
|
|
37106
|
-
import { Fragment as
|
|
37166
|
+
import { Fragment as Fragment53, jsx as jsx303, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
37107
37167
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
37108
37168
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
37109
37169
|
function TableCardSkeleton({
|
|
@@ -37115,7 +37175,7 @@ function TableCardSkeleton({
|
|
|
37115
37175
|
rowClassName
|
|
37116
37176
|
}) {
|
|
37117
37177
|
const primaryKey = (columns.find((c) => /flex-(1|\[)/.test(c.width || "")) ?? columns[0])?.key;
|
|
37118
|
-
return /* @__PURE__ */ jsx303(
|
|
37178
|
+
return /* @__PURE__ */ jsx303(Fragment53, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs241(
|
|
37119
37179
|
"div",
|
|
37120
37180
|
{
|
|
37121
37181
|
className: cn(
|
|
@@ -37276,9 +37336,9 @@ function TableRow({
|
|
|
37276
37336
|
}
|
|
37277
37337
|
|
|
37278
37338
|
// src/components/ui/table/use-table-motion.ts
|
|
37279
|
-
import { useEffect as useEffect66, useState as
|
|
37339
|
+
import { useEffect as useEffect66, useState as useState88 } from "react";
|
|
37280
37340
|
function useTableMotion(enabled) {
|
|
37281
|
-
const [runtime, setRuntime] =
|
|
37341
|
+
const [runtime, setRuntime] = useState88(null);
|
|
37282
37342
|
useEffect66(() => {
|
|
37283
37343
|
if (!enabled || runtime) return;
|
|
37284
37344
|
let active = true;
|
|
@@ -37294,7 +37354,7 @@ function useTableMotion(enabled) {
|
|
|
37294
37354
|
}
|
|
37295
37355
|
|
|
37296
37356
|
// src/components/ui/table/table.tsx
|
|
37297
|
-
import { Fragment as
|
|
37357
|
+
import { Fragment as Fragment54, jsx as jsx305, jsxs as jsxs243 } from "react/jsx-runtime";
|
|
37298
37358
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
37299
37359
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
37300
37360
|
const result = [...columns];
|
|
@@ -37496,7 +37556,7 @@ function Table({
|
|
|
37496
37556
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
37497
37557
|
hasChevron: Boolean(rowHref)
|
|
37498
37558
|
}
|
|
37499
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx305(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs243(
|
|
37559
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx305(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs243(Fragment54, { children: [
|
|
37500
37560
|
(() => {
|
|
37501
37561
|
const rows = data.map((item, index) => /* @__PURE__ */ jsx305(
|
|
37502
37562
|
TableRow,
|
|
@@ -37646,7 +37706,7 @@ import { useMemo as useMemo36 } from "react";
|
|
|
37646
37706
|
|
|
37647
37707
|
// src/components/ui/query-report-table/query-report-table-header.tsx
|
|
37648
37708
|
init_cn();
|
|
37649
|
-
import { useRef as useRef50, useState as
|
|
37709
|
+
import { useRef as useRef50, useState as useState89, useCallback as useCallback38 } from "react";
|
|
37650
37710
|
import { jsx as jsx308, jsxs as jsxs245 } from "react/jsx-runtime";
|
|
37651
37711
|
function QueryReportTableHeader({
|
|
37652
37712
|
columns,
|
|
@@ -37676,7 +37736,7 @@ function QueryReportTableHeader({
|
|
|
37676
37736
|
}
|
|
37677
37737
|
function TruncatedHeaderCell({ value, width }) {
|
|
37678
37738
|
const textRef = useRef50(null);
|
|
37679
|
-
const [isTruncated, setIsTruncated] =
|
|
37739
|
+
const [isTruncated, setIsTruncated] = useState89(false);
|
|
37680
37740
|
const checkTruncation = useCallback38(() => {
|
|
37681
37741
|
const el = textRef.current;
|
|
37682
37742
|
if (el) {
|
|
@@ -37705,7 +37765,7 @@ function TruncatedHeaderCell({ value, width }) {
|
|
|
37705
37765
|
|
|
37706
37766
|
// src/components/ui/query-report-table/query-report-table-row.tsx
|
|
37707
37767
|
init_cn();
|
|
37708
|
-
import { useRef as useRef51, useState as
|
|
37768
|
+
import { useRef as useRef51, useState as useState90, useCallback as useCallback39 } from "react";
|
|
37709
37769
|
import { jsx as jsx309, jsxs as jsxs246 } from "react/jsx-runtime";
|
|
37710
37770
|
function QueryReportTableRow({
|
|
37711
37771
|
row,
|
|
@@ -37752,7 +37812,7 @@ function QueryReportTableRow({
|
|
|
37752
37812
|
}
|
|
37753
37813
|
function TruncatedCell({ value, className }) {
|
|
37754
37814
|
const textRef = useRef51(null);
|
|
37755
|
-
const [isTruncated, setIsTruncated] =
|
|
37815
|
+
const [isTruncated, setIsTruncated] = useState90(false);
|
|
37756
37816
|
const checkTruncation = useCallback39(() => {
|
|
37757
37817
|
const el = textRef.current;
|
|
37758
37818
|
if (el) {
|
|
@@ -38123,7 +38183,7 @@ function DataTableColumnFilter({
|
|
|
38123
38183
|
}
|
|
38124
38184
|
|
|
38125
38185
|
// src/components/ui/data-table/data-table-header.tsx
|
|
38126
|
-
import { Fragment as
|
|
38186
|
+
import { Fragment as Fragment55, jsx as jsx314, jsxs as jsxs250 } from "react/jsx-runtime";
|
|
38127
38187
|
function DataTableHeader({
|
|
38128
38188
|
className,
|
|
38129
38189
|
stickyHeader,
|
|
@@ -38217,7 +38277,7 @@ function HeaderLabel({ header }) {
|
|
|
38217
38277
|
if (typeof headerDef === "string") {
|
|
38218
38278
|
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
38279
|
}
|
|
38220
|
-
return /* @__PURE__ */ jsx314(
|
|
38280
|
+
return /* @__PURE__ */ jsx314(Fragment55, { children: flexRender(headerDef, header.getContext()) });
|
|
38221
38281
|
}
|
|
38222
38282
|
function SortIcon({ sorted }) {
|
|
38223
38283
|
if (sorted === "asc") return /* @__PURE__ */ jsx314(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -38256,7 +38316,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
38256
38316
|
|
|
38257
38317
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
38258
38318
|
init_cn();
|
|
38259
|
-
import { Fragment as
|
|
38319
|
+
import { Fragment as Fragment56, jsx as jsx316, jsxs as jsxs251 } from "react/jsx-runtime";
|
|
38260
38320
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
38261
38321
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
38262
38322
|
function DataTableSkeleton({
|
|
@@ -38267,7 +38327,7 @@ function DataTableSkeleton({
|
|
|
38267
38327
|
const table = useDataTableContext();
|
|
38268
38328
|
const columns = table.getVisibleFlatColumns();
|
|
38269
38329
|
const firstColumnId = columns[0]?.id;
|
|
38270
|
-
return /* @__PURE__ */ jsx316(
|
|
38330
|
+
return /* @__PURE__ */ jsx316(Fragment56, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs251(
|
|
38271
38331
|
"div",
|
|
38272
38332
|
{
|
|
38273
38333
|
className: cn(
|
|
@@ -38323,12 +38383,13 @@ function DataTableSkeleton({
|
|
|
38323
38383
|
}
|
|
38324
38384
|
|
|
38325
38385
|
// src/components/ui/data-table/data-table-row.tsx
|
|
38326
|
-
import { Fragment as
|
|
38386
|
+
import { Fragment as Fragment57, jsx as jsx317, jsxs as jsxs252 } from "react/jsx-runtime";
|
|
38327
38387
|
function DataTableRowImpl({
|
|
38328
38388
|
row,
|
|
38329
38389
|
onClick,
|
|
38330
38390
|
href,
|
|
38331
38391
|
compact,
|
|
38392
|
+
autoHeight,
|
|
38332
38393
|
className,
|
|
38333
38394
|
subRow
|
|
38334
38395
|
}) {
|
|
@@ -38362,7 +38423,7 @@ function DataTableRowImpl({
|
|
|
38362
38423
|
{
|
|
38363
38424
|
className: cn(
|
|
38364
38425
|
"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}`,
|
|
38426
|
+
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
38427
|
hasSubRow && "border-b border-ods-border"
|
|
38367
38428
|
),
|
|
38368
38429
|
children: row.getVisibleCells().map((cell) => {
|
|
@@ -38424,7 +38485,7 @@ function CellContent({ children }) {
|
|
|
38424
38485
|
if (typeof children === "string" || typeof children === "number") {
|
|
38425
38486
|
return /* @__PURE__ */ jsx317("span", { className: "text-h4 text-ods-text-primary truncate", title: String(children), children });
|
|
38426
38487
|
}
|
|
38427
|
-
return /* @__PURE__ */ jsx317(
|
|
38488
|
+
return /* @__PURE__ */ jsx317(Fragment57, { children });
|
|
38428
38489
|
}
|
|
38429
38490
|
|
|
38430
38491
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -38437,6 +38498,7 @@ function DataTableBody({
|
|
|
38437
38498
|
className,
|
|
38438
38499
|
rowClassName,
|
|
38439
38500
|
compact,
|
|
38501
|
+
autoHeight,
|
|
38440
38502
|
onRowClick,
|
|
38441
38503
|
rowHref,
|
|
38442
38504
|
minRows,
|
|
@@ -38463,6 +38525,7 @@ function DataTableBody({
|
|
|
38463
38525
|
onClick: onRowClick,
|
|
38464
38526
|
href,
|
|
38465
38527
|
compact,
|
|
38528
|
+
autoHeight,
|
|
38466
38529
|
className: cls,
|
|
38467
38530
|
subRow: renderSubRow?.(item)
|
|
38468
38531
|
},
|
|
@@ -38502,7 +38565,7 @@ function DataTableBody({
|
|
|
38502
38565
|
|
|
38503
38566
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
38504
38567
|
import { useEffect as useEffect68, useRef as useRef53 } from "react";
|
|
38505
|
-
import { Fragment as
|
|
38568
|
+
import { Fragment as Fragment58, jsx as jsx319, jsxs as jsxs254 } from "react/jsx-runtime";
|
|
38506
38569
|
function DataTableInfiniteFooter({
|
|
38507
38570
|
hasNextPage,
|
|
38508
38571
|
isFetchingNextPage,
|
|
@@ -38526,7 +38589,7 @@ function DataTableInfiniteFooter({
|
|
|
38526
38589
|
observer.observe(sentinel);
|
|
38527
38590
|
return () => observer.disconnect();
|
|
38528
38591
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
38529
|
-
return /* @__PURE__ */ jsxs254(
|
|
38592
|
+
return /* @__PURE__ */ jsxs254(Fragment58, { children: [
|
|
38530
38593
|
isFetchingNextPage && /* @__PURE__ */ jsx319(DataTableSkeleton, { rows: skeletonRows }),
|
|
38531
38594
|
hasNextPage && /* @__PURE__ */ jsx319("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
38532
38595
|
] });
|
|
@@ -39149,7 +39212,7 @@ function FilterList({
|
|
|
39149
39212
|
import {
|
|
39150
39213
|
useEffect as useEffect70,
|
|
39151
39214
|
useRef as useRef55,
|
|
39152
|
-
useState as
|
|
39215
|
+
useState as useState92
|
|
39153
39216
|
} from "react";
|
|
39154
39217
|
init_cn();
|
|
39155
39218
|
import { jsx as jsx323, jsxs as jsxs258 } from "react/jsx-runtime";
|
|
@@ -39186,7 +39249,7 @@ function TagSearchInput({
|
|
|
39186
39249
|
const wrapperRef = useRef55(null);
|
|
39187
39250
|
const hiddenTagsRef = useRef55(null);
|
|
39188
39251
|
const hiddenTagsPopupRef = useRef55(null);
|
|
39189
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
39252
|
+
const [showHiddenTags, setShowHiddenTags] = useState92(false);
|
|
39190
39253
|
useEffect70(() => {
|
|
39191
39254
|
if (!showHiddenTags) return;
|
|
39192
39255
|
const handleClick = (e) => {
|
|
@@ -39342,7 +39405,7 @@ function TagSearchInput({
|
|
|
39342
39405
|
}
|
|
39343
39406
|
|
|
39344
39407
|
// src/components/ui/markdown-editor.tsx
|
|
39345
|
-
import { useRef as useRef56, useCallback as useCallback42, useState as
|
|
39408
|
+
import { useRef as useRef56, useCallback as useCallback42, useState as useState93, useEffect as useEffect71 } from "react";
|
|
39346
39409
|
init_cn();
|
|
39347
39410
|
import { Loader2 as Loader29, Upload as Upload8 } from "lucide-react";
|
|
39348
39411
|
import { jsx as jsx324, jsxs as jsxs259 } from "react/jsx-runtime";
|
|
@@ -39398,9 +39461,9 @@ function MarkdownEditor({
|
|
|
39398
39461
|
renderPreview
|
|
39399
39462
|
}) {
|
|
39400
39463
|
const fileInputRef = useRef56(null);
|
|
39401
|
-
const [isUploading, setIsUploading] =
|
|
39402
|
-
const [uploadProgress, setUploadProgress] =
|
|
39403
|
-
const [defaultExtraCommands, setDefaultExtraCommands] =
|
|
39464
|
+
const [isUploading, setIsUploading] = useState93(false);
|
|
39465
|
+
const [uploadProgress, setUploadProgress] = useState93("");
|
|
39466
|
+
const [defaultExtraCommands, setDefaultExtraCommands] = useState93([]);
|
|
39404
39467
|
useEffect71(() => {
|
|
39405
39468
|
import("@uiw/react-md-editor").then((mod) => {
|
|
39406
39469
|
if (mod.commands?.getExtraCommands) {
|
|
@@ -39936,7 +39999,7 @@ function FileUpload({
|
|
|
39936
39999
|
import * as React124 from "react";
|
|
39937
40000
|
import { Loader2 as Loader211 } from "lucide-react";
|
|
39938
40001
|
init_cn();
|
|
39939
|
-
import { Fragment as
|
|
40002
|
+
import { Fragment as Fragment60, jsx as jsx326, jsxs as jsxs261 } from "react/jsx-runtime";
|
|
39940
40003
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
39941
40004
|
function formatSize(bytes) {
|
|
39942
40005
|
const mb = bytes / (1024 * 1024);
|
|
@@ -40064,7 +40127,7 @@ function ImageUploader({
|
|
|
40064
40127
|
!hasImage && !interactive && "cursor-not-allowed",
|
|
40065
40128
|
dropzoneClassName
|
|
40066
40129
|
),
|
|
40067
|
-
children: hasImage ? /* @__PURE__ */ jsxs261(
|
|
40130
|
+
children: hasImage ? /* @__PURE__ */ jsxs261(Fragment60, { children: [
|
|
40068
40131
|
/* @__PURE__ */ jsx326("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx326(
|
|
40069
40132
|
"img",
|
|
40070
40133
|
{
|
|
@@ -40101,7 +40164,7 @@ function ImageUploader({
|
|
|
40101
40164
|
)
|
|
40102
40165
|
] }),
|
|
40103
40166
|
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(
|
|
40167
|
+
] }) : loading ? /* @__PURE__ */ jsx326(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs261(Fragment60, { children: [
|
|
40105
40168
|
/* @__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
40169
|
/* @__PURE__ */ jsxs261("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
40107
40170
|
/* @__PURE__ */ jsx326("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -40171,7 +40234,7 @@ PopoverContent.displayName = PopoverPrimitive7.Content.displayName;
|
|
|
40171
40234
|
|
|
40172
40235
|
// src/components/ui/color-preset-select.tsx
|
|
40173
40236
|
init_cn();
|
|
40174
|
-
import { Fragment as
|
|
40237
|
+
import { Fragment as Fragment61, jsx as jsx328, jsxs as jsxs262 } from "react/jsx-runtime";
|
|
40175
40238
|
var TICKET_STATUS_COLOR_PRESETS = [
|
|
40176
40239
|
{ key: "green", label: "Green", color: "#5ea62e" },
|
|
40177
40240
|
{ key: "lime", label: "Lime", color: "#8bc34a" },
|
|
@@ -40322,7 +40385,7 @@ function RgbInputs({ value, onChange }) {
|
|
|
40322
40385
|
const b = next.b ?? rgb.b;
|
|
40323
40386
|
onChange(rgbToHex(r, g, b));
|
|
40324
40387
|
};
|
|
40325
|
-
return /* @__PURE__ */ jsxs262(
|
|
40388
|
+
return /* @__PURE__ */ jsxs262(Fragment61, { children: [
|
|
40326
40389
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.r, min: 0, max: 255, ariaLabel: "Red", onCommit: (r) => update({ r }) }),
|
|
40327
40390
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.g, min: 0, max: 255, ariaLabel: "Green", onCommit: (g) => update({ g }) }),
|
|
40328
40391
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.b, min: 0, max: 255, ariaLabel: "Blue", onCommit: (b) => update({ b }) })
|
|
@@ -40338,7 +40401,7 @@ function HslInputs({ value, onChange }) {
|
|
|
40338
40401
|
const out = hslToRgb(h, s, l);
|
|
40339
40402
|
onChange(rgbToHex(out.r, out.g, out.b));
|
|
40340
40403
|
};
|
|
40341
|
-
return /* @__PURE__ */ jsxs262(
|
|
40404
|
+
return /* @__PURE__ */ jsxs262(Fragment61, { children: [
|
|
40342
40405
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.h, min: 0, max: 360, ariaLabel: "Hue", onCommit: (h) => update({ h }) }),
|
|
40343
40406
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.s, min: 0, max: 100, ariaLabel: "Saturation", onCommit: (s) => update({ s }) }),
|
|
40344
40407
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.l, min: 0, max: 100, ariaLabel: "Lightness", onCommit: (l) => update({ l }) })
|
|
@@ -40635,7 +40698,7 @@ init_cn();
|
|
|
40635
40698
|
// src/components/ui/ticket-note-card.tsx
|
|
40636
40699
|
import * as React128 from "react";
|
|
40637
40700
|
init_cn();
|
|
40638
|
-
import { Fragment as
|
|
40701
|
+
import { Fragment as Fragment62, jsx as jsx332, jsxs as jsxs266 } from "react/jsx-runtime";
|
|
40639
40702
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
40640
40703
|
const [isEditing, setIsEditing] = React128.useState(false);
|
|
40641
40704
|
const [editText, setEditText] = React128.useState(note.text);
|
|
@@ -40709,7 +40772,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
40709
40772
|
children: /* @__PURE__ */ jsx332(XmarkIcon, { className: "size-5" })
|
|
40710
40773
|
}
|
|
40711
40774
|
)
|
|
40712
|
-
] }) : /* @__PURE__ */ jsxs266(
|
|
40775
|
+
] }) : /* @__PURE__ */ jsxs266(Fragment62, { children: [
|
|
40713
40776
|
/* @__PURE__ */ jsx332("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
40714
40777
|
/* @__PURE__ */ jsxs266(
|
|
40715
40778
|
"p",
|
|
@@ -40816,7 +40879,7 @@ function TicketNotesSection({
|
|
|
40816
40879
|
}
|
|
40817
40880
|
|
|
40818
40881
|
// src/components/ui/ticket-info-section.tsx
|
|
40819
|
-
import { Fragment as
|
|
40882
|
+
import { Fragment as Fragment63, jsx as jsx334, jsxs as jsxs268 } from "react/jsx-runtime";
|
|
40820
40883
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
40821
40884
|
return /* @__PURE__ */ jsx334("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs268("div", { className: "flex flex-col justify-center", children: [
|
|
40822
40885
|
/* @__PURE__ */ jsxs268("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -40941,7 +41004,7 @@ function TicketInfoSection({
|
|
|
40941
41004
|
)
|
|
40942
41005
|
] })
|
|
40943
41006
|
] }),
|
|
40944
|
-
expanded && /* @__PURE__ */ jsxs268(
|
|
41007
|
+
expanded && /* @__PURE__ */ jsxs268(Fragment63, { children: [
|
|
40945
41008
|
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
41009
|
/* @__PURE__ */ jsxs268("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
40947
41010
|
description && /* @__PURE__ */ jsx334(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -40999,14 +41062,14 @@ function FilterPillRow({
|
|
|
40999
41062
|
|
|
41000
41063
|
// src/components/ui/image-gallery-modal.tsx
|
|
41001
41064
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight10 } from "lucide-react";
|
|
41002
|
-
import { Fragment as
|
|
41065
|
+
import { Fragment as Fragment64, jsx as jsx336, jsxs as jsxs270 } from "react/jsx-runtime";
|
|
41003
41066
|
function ImageGalleryModal({
|
|
41004
41067
|
images,
|
|
41005
41068
|
isOpen,
|
|
41006
41069
|
onClose,
|
|
41007
41070
|
initialIndex = 0
|
|
41008
41071
|
}) {
|
|
41009
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
41072
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState100(initialIndex);
|
|
41010
41073
|
useEffect74(() => {
|
|
41011
41074
|
if (isOpen) {
|
|
41012
41075
|
setSelectedImageIndex(initialIndex);
|
|
@@ -41055,7 +41118,7 @@ function ImageGalleryModal({
|
|
|
41055
41118
|
onClose,
|
|
41056
41119
|
className: "max-w-[95vw]",
|
|
41057
41120
|
children: /* @__PURE__ */ jsxs270("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
41058
|
-
images.length > 1 && /* @__PURE__ */ jsxs270(
|
|
41121
|
+
images.length > 1 && /* @__PURE__ */ jsxs270(Fragment64, { children: [
|
|
41059
41122
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx336("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx336(
|
|
41060
41123
|
Button,
|
|
41061
41124
|
{
|
|
@@ -41173,7 +41236,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
|
41173
41236
|
}
|
|
41174
41237
|
|
|
41175
41238
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
41176
|
-
import { Fragment as
|
|
41239
|
+
import { Fragment as Fragment65, jsx as jsx338, jsxs as jsxs271 } from "react/jsx-runtime";
|
|
41177
41240
|
function RoadmapCardSkeleton({ size: size2 = "default" }) {
|
|
41178
41241
|
if (size2 === "sm") {
|
|
41179
41242
|
return /* @__PURE__ */ jsxs271("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -41225,7 +41288,7 @@ function RoadmapCard({
|
|
|
41225
41288
|
onVote,
|
|
41226
41289
|
isVoting = false
|
|
41227
41290
|
}) {
|
|
41228
|
-
const [showScreenshots, setShowScreenshots] =
|
|
41291
|
+
const [showScreenshots, setShowScreenshots] = useState101(false);
|
|
41229
41292
|
const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
|
|
41230
41293
|
const iconSrc = logoUrl ? getProxiedImageUrl(logoUrl, { directHttps: true }) || logoUrl : null;
|
|
41231
41294
|
if (size2 === "sm") {
|
|
@@ -41235,7 +41298,7 @@ function RoadmapCard({
|
|
|
41235
41298
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
41236
41299
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
41237
41300
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
41238
|
-
const body = /* @__PURE__ */ jsxs271(
|
|
41301
|
+
const body = /* @__PURE__ */ jsxs271(Fragment65, { children: [
|
|
41239
41302
|
/* @__PURE__ */ jsx338(
|
|
41240
41303
|
"span",
|
|
41241
41304
|
{
|
|
@@ -41427,7 +41490,7 @@ function RoadmapCard({
|
|
|
41427
41490
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
41428
41491
|
import React131 from "react";
|
|
41429
41492
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink8 } from "lucide-react";
|
|
41430
|
-
import { Fragment as
|
|
41493
|
+
import { Fragment as Fragment66, jsx as jsx339, jsxs as jsxs272 } from "react/jsx-runtime";
|
|
41431
41494
|
function parseRepoFromUrl(url) {
|
|
41432
41495
|
if (!url) return null;
|
|
41433
41496
|
try {
|
|
@@ -41559,7 +41622,7 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
41559
41622
|
if (repo) metaParts.push(/* @__PURE__ */ jsx339("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
41560
41623
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx339("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41561
41624
|
const href = safeHref(item.url);
|
|
41562
|
-
const body = /* @__PURE__ */ jsxs272(
|
|
41625
|
+
const body = /* @__PURE__ */ jsxs272(Fragment66, { children: [
|
|
41563
41626
|
/* @__PURE__ */ jsx339("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
41564
41627
|
/* @__PURE__ */ jsxs272("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41565
41628
|
/* @__PURE__ */ jsxs272("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
@@ -41614,7 +41677,7 @@ function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
|
41614
41677
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
41615
41678
|
import React132 from "react";
|
|
41616
41679
|
import { ExternalLink as ExternalLink9, Hash } from "lucide-react";
|
|
41617
|
-
import { Fragment as
|
|
41680
|
+
import { Fragment as Fragment67, jsx as jsx340, jsxs as jsxs273 } from "react/jsx-runtime";
|
|
41618
41681
|
function parseChannelFromUrl(url) {
|
|
41619
41682
|
if (!url) return null;
|
|
41620
41683
|
try {
|
|
@@ -41653,7 +41716,7 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
41653
41716
|
}
|
|
41654
41717
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx340("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41655
41718
|
const href = safeHref(item.url);
|
|
41656
|
-
const body = /* @__PURE__ */ jsxs273(
|
|
41719
|
+
const body = /* @__PURE__ */ jsxs273(Fragment67, { children: [
|
|
41657
41720
|
/* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx340(SlackIcon, { className: "h-5 w-5" }) }),
|
|
41658
41721
|
/* @__PURE__ */ jsxs273("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41659
41722
|
/* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
@@ -41703,7 +41766,7 @@ function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
|
41703
41766
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
41704
41767
|
import React133 from "react";
|
|
41705
41768
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
41706
|
-
import { Fragment as
|
|
41769
|
+
import { Fragment as Fragment68, jsx as jsx341, jsxs as jsxs274 } from "react/jsx-runtime";
|
|
41707
41770
|
function formatToken(token) {
|
|
41708
41771
|
if (!token) return null;
|
|
41709
41772
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -41742,7 +41805,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
41742
41805
|
}
|
|
41743
41806
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx341("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41744
41807
|
const href = safeHref(item.url);
|
|
41745
|
-
const body = /* @__PURE__ */ jsxs274(
|
|
41808
|
+
const body = /* @__PURE__ */ jsxs274(Fragment68, { children: [
|
|
41746
41809
|
/* @__PURE__ */ jsxs274("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41747
41810
|
/* @__PURE__ */ jsxs274("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
41748
41811
|
/* @__PURE__ */ jsx341("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -41822,9 +41885,9 @@ function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
|
41822
41885
|
|
|
41823
41886
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
41824
41887
|
import { ExternalLink as ExternalLink11 } from "lucide-react";
|
|
41825
|
-
import { Fragment as
|
|
41888
|
+
import { Fragment as Fragment69, jsx as jsx342, jsxs as jsxs275 } from "react/jsx-runtime";
|
|
41826
41889
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
41827
|
-
const body = /* @__PURE__ */ jsxs275(
|
|
41890
|
+
const body = /* @__PURE__ */ jsxs275(Fragment69, { children: [
|
|
41828
41891
|
/* @__PURE__ */ jsxs275("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41829
41892
|
/* @__PURE__ */ jsxs275("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
41830
41893
|
/* @__PURE__ */ jsx342("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -41861,7 +41924,7 @@ function DataRoomDocCardSkeleton({ className }) {
|
|
|
41861
41924
|
}
|
|
41862
41925
|
|
|
41863
41926
|
// src/components/chat/entity-cards/program-card.tsx
|
|
41864
|
-
import { useState as
|
|
41927
|
+
import { useState as useState102 } from "react";
|
|
41865
41928
|
|
|
41866
41929
|
// node_modules/date-fns/toDate.mjs
|
|
41867
41930
|
function toDate(argument) {
|
|
@@ -43434,7 +43497,7 @@ function cleanEscapedString(input) {
|
|
|
43434
43497
|
init_button();
|
|
43435
43498
|
import { ExternalLink as ExternalLink12, Clock as Clock2, Play as Play4, Video as Video8 } from "lucide-react";
|
|
43436
43499
|
init_cn();
|
|
43437
|
-
import { Fragment as
|
|
43500
|
+
import { Fragment as Fragment70, jsx as jsx343, jsxs as jsxs276 } from "react/jsx-runtime";
|
|
43438
43501
|
function formatUtc(date, fmt) {
|
|
43439
43502
|
return format(new Date(date.getTime() + date.getTimezoneOffset() * 6e4), fmt);
|
|
43440
43503
|
}
|
|
@@ -43498,8 +43561,8 @@ function getHosts(hosts) {
|
|
|
43498
43561
|
return [];
|
|
43499
43562
|
}
|
|
43500
43563
|
function MediaGallery({ images, title }) {
|
|
43501
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
43502
|
-
const [isModalOpen, setIsModalOpen] =
|
|
43564
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState102(null);
|
|
43565
|
+
const [isModalOpen, setIsModalOpen] = useState102(false);
|
|
43503
43566
|
const openImageModal = (index, event) => {
|
|
43504
43567
|
if (event) event.stopPropagation();
|
|
43505
43568
|
setSelectedImageIndex(index);
|
|
@@ -43509,7 +43572,7 @@ function MediaGallery({ images, title }) {
|
|
|
43509
43572
|
setIsModalOpen(false);
|
|
43510
43573
|
setSelectedImageIndex(null);
|
|
43511
43574
|
};
|
|
43512
|
-
return /* @__PURE__ */ jsxs276(
|
|
43575
|
+
return /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43513
43576
|
/* @__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
43577
|
"div",
|
|
43515
43578
|
{
|
|
@@ -43626,7 +43689,7 @@ function ProgramCard({
|
|
|
43626
43689
|
const dateFormat = formatUtc(itemDate, "EEEE d MMMM");
|
|
43627
43690
|
const defaultRenderMeta = () => {
|
|
43628
43691
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
43629
|
-
return /* @__PURE__ */ jsxs276(
|
|
43692
|
+
return /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43630
43693
|
/* @__PURE__ */ jsx343(Clock2, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
43631
43694
|
/* @__PURE__ */ jsx343("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
43632
43695
|
] });
|
|
@@ -43637,7 +43700,7 @@ function ProgramCard({
|
|
|
43637
43700
|
if (config.type === "webinar" && "start_at" in item) {
|
|
43638
43701
|
const webinarItem = item;
|
|
43639
43702
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
43640
|
-
return /* @__PURE__ */ jsxs276(
|
|
43703
|
+
return /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43641
43704
|
/* @__PURE__ */ jsx343(Video8, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
43642
43705
|
/* @__PURE__ */ jsxs276("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: [
|
|
43643
43706
|
formatTimeWithTimezone(webinarItem.start_at, webinarItem.timezone ?? null),
|
|
@@ -43671,10 +43734,10 @@ function ProgramCard({
|
|
|
43671
43734
|
/* @__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
43735
|
/* @__PURE__ */ jsxs276("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
43673
43736
|
/* @__PURE__ */ jsx343("span", { className: "font-['DM_Sans'] font-medium", style: { color: accentColor }, children: dateFormat }),
|
|
43674
|
-
renderMeta ? /* @__PURE__ */ jsxs276(
|
|
43737
|
+
renderMeta ? /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43675
43738
|
/* @__PURE__ */ jsx343("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
43676
43739
|
renderMeta(item)
|
|
43677
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs276(
|
|
43740
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43678
43741
|
/* @__PURE__ */ jsx343("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
43679
43742
|
/* @__PURE__ */ jsx343("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
43680
43743
|
] })
|
|
@@ -43751,10 +43814,10 @@ function ProgramCard({
|
|
|
43751
43814
|
|
|
43752
43815
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
43753
43816
|
import { Megaphone as Megaphone3 } from "lucide-react";
|
|
43754
|
-
import { Fragment as
|
|
43817
|
+
import { Fragment as Fragment71, jsx as jsx344, jsxs as jsxs277 } from "react/jsx-runtime";
|
|
43755
43818
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
43756
43819
|
const goalsCount = campaign.goals?.length || 0;
|
|
43757
|
-
const innerChildren = /* @__PURE__ */ jsxs277(
|
|
43820
|
+
const innerChildren = /* @__PURE__ */ jsxs277(Fragment71, { children: [
|
|
43758
43821
|
/* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx344(Megaphone3, { className: "h-5 w-5" }) }),
|
|
43759
43822
|
/* @__PURE__ */ jsxs277("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
43760
43823
|
/* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
@@ -43784,11 +43847,11 @@ function CampaignCardAdminSkeleton({ className }) {
|
|
|
43784
43847
|
|
|
43785
43848
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
43786
43849
|
import { ExternalLink as ExternalLink13 } from "lucide-react";
|
|
43787
|
-
import { Fragment as
|
|
43850
|
+
import { Fragment as Fragment72, jsx as jsx345, jsxs as jsxs278 } from "react/jsx-runtime";
|
|
43788
43851
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
43789
43852
|
const href = safeHref(item.url);
|
|
43790
43853
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
43791
|
-
const body = /* @__PURE__ */ jsxs278(
|
|
43854
|
+
const body = /* @__PURE__ */ jsxs278(Fragment72, { children: [
|
|
43792
43855
|
/* @__PURE__ */ jsxs278("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
43793
43856
|
/* @__PURE__ */ jsxs278("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
43794
43857
|
/* @__PURE__ */ jsx345("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -43973,7 +44036,7 @@ function resolveSourceIcon(input, ctx = {}) {
|
|
|
43973
44036
|
|
|
43974
44037
|
// src/components/chat/mingo-info-card.tsx
|
|
43975
44038
|
init_cn();
|
|
43976
|
-
import { Fragment as
|
|
44039
|
+
import { Fragment as Fragment73, jsx as jsx346, jsxs as jsxs279 } from "react/jsx-runtime";
|
|
43977
44040
|
function CardMedia({
|
|
43978
44041
|
imageSrc,
|
|
43979
44042
|
imageAlt,
|
|
@@ -44017,7 +44080,7 @@ function MingoInfoCard({
|
|
|
44017
44080
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
44018
44081
|
const isAnchor = !!anchorProps;
|
|
44019
44082
|
const isInteractive = isAnchor || !!onClick;
|
|
44020
|
-
const content = /* @__PURE__ */ jsxs279(
|
|
44083
|
+
const content = /* @__PURE__ */ jsxs279(Fragment73, { children: [
|
|
44021
44084
|
hasMedia && /* @__PURE__ */ jsx346(CardMedia, { imageSrc, imageAlt, icon }),
|
|
44022
44085
|
/* @__PURE__ */ jsxs279("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
44023
44086
|
/* @__PURE__ */ jsx346("span", { className: "truncate text-h4 font-medium text-ods-text-primary", children: title }),
|
|
@@ -44066,7 +44129,7 @@ function MingoInfoCard({
|
|
|
44066
44129
|
}
|
|
44067
44130
|
|
|
44068
44131
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
44069
|
-
import { Fragment as
|
|
44132
|
+
import { Fragment as Fragment74, jsx as jsx347, jsxs as jsxs280 } from "react/jsx-runtime";
|
|
44070
44133
|
function githubKindIcon(kind) {
|
|
44071
44134
|
switch (kind) {
|
|
44072
44135
|
case "pull_request":
|
|
@@ -45034,10 +45097,10 @@ function ChatCardLoader({
|
|
|
45034
45097
|
}
|
|
45035
45098
|
);
|
|
45036
45099
|
}
|
|
45037
|
-
if (isLoading) return /* @__PURE__ */ jsx347(
|
|
45100
|
+
if (isLoading) return /* @__PURE__ */ jsx347(Fragment74, { children: entry.skeleton() });
|
|
45038
45101
|
if (!item) return null;
|
|
45039
45102
|
if (entry.bareInline) {
|
|
45040
|
-
return /* @__PURE__ */ jsx347(
|
|
45103
|
+
return /* @__PURE__ */ jsx347(Fragment74, { children: navWrap(entry.render(item, finalChatRef, renderOpts)) });
|
|
45041
45104
|
}
|
|
45042
45105
|
return /* @__PURE__ */ jsx347(
|
|
45043
45106
|
ChatCardWithDiscuss,
|
|
@@ -45284,7 +45347,7 @@ function useChunkCatchup({
|
|
|
45284
45347
|
}
|
|
45285
45348
|
|
|
45286
45349
|
// src/components/chat/hooks/use-jetstream-dialog-subscription.ts
|
|
45287
|
-
import { useEffect as useEffect75, useRef as useRef61, useState as
|
|
45350
|
+
import { useEffect as useEffect75, useRef as useRef61, useState as useState103 } from "react";
|
|
45288
45351
|
var DEFAULT_INACTIVE_THRESHOLD_MS = 5 * 6e4;
|
|
45289
45352
|
var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
|
|
45290
45353
|
function useJetStreamDialogSubscription({
|
|
@@ -45303,10 +45366,10 @@ function useJetStreamDialogSubscription({
|
|
|
45303
45366
|
reconnectionBackoff,
|
|
45304
45367
|
inactiveThresholdMs
|
|
45305
45368
|
}) {
|
|
45306
|
-
const [isConnected, setIsConnected] =
|
|
45307
|
-
const [isSubscribed, setIsSubscribed] =
|
|
45308
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
45309
|
-
const [currentStreamSeq, setCurrentStreamSeq] =
|
|
45369
|
+
const [isConnected, setIsConnected] = useState103(false);
|
|
45370
|
+
const [isSubscribed, setIsSubscribed] = useState103(false);
|
|
45371
|
+
const [reconnectionCount, setReconnectionCount] = useState103(0);
|
|
45372
|
+
const [currentStreamSeq, setCurrentStreamSeq] = useState103(null);
|
|
45310
45373
|
const clientRef = useRef61(null);
|
|
45311
45374
|
const subscriptionRef = useRef61(null);
|
|
45312
45375
|
const highestStreamSeqRef = useRef61(null);
|
|
@@ -45525,7 +45588,7 @@ function useJetStreamDialogSubscription({
|
|
|
45525
45588
|
}
|
|
45526
45589
|
|
|
45527
45590
|
// src/components/chat/hooks/use-nats-dialog-subscription.ts
|
|
45528
|
-
import { useEffect as useEffect76, useRef as useRef62, useState as
|
|
45591
|
+
import { useEffect as useEffect76, useRef as useRef62, useState as useState104 } from "react";
|
|
45529
45592
|
function useNatsDialogSubscription({
|
|
45530
45593
|
enabled,
|
|
45531
45594
|
dialogId,
|
|
@@ -45539,9 +45602,9 @@ function useNatsDialogSubscription({
|
|
|
45539
45602
|
clientConfig = {},
|
|
45540
45603
|
reconnectionBackoff
|
|
45541
45604
|
}) {
|
|
45542
|
-
const [isConnected, setIsConnected] =
|
|
45543
|
-
const [isSubscribed, setIsSubscribed] =
|
|
45544
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
45605
|
+
const [isConnected, setIsConnected] = useState104(false);
|
|
45606
|
+
const [isSubscribed, setIsSubscribed] = useState104(false);
|
|
45607
|
+
const [reconnectionCount, setReconnectionCount] = useState104(0);
|
|
45545
45608
|
const clientRef = useRef62(null);
|
|
45546
45609
|
const subscriptionRefs = useRef62(/* @__PURE__ */ new Map());
|
|
45547
45610
|
const onEventRef = useRef62(onEvent);
|
|
@@ -46735,7 +46798,7 @@ function useRealtimeChunkProcessor(options) {
|
|
|
46735
46798
|
}
|
|
46736
46799
|
|
|
46737
46800
|
// src/components/chat/hooks/use-slash-commands.ts
|
|
46738
|
-
import { useEffect as useEffect78, useState as
|
|
46801
|
+
import { useEffect as useEffect78, useState as useState105 } from "react";
|
|
46739
46802
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
46740
46803
|
async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
46741
46804
|
try {
|
|
@@ -46752,8 +46815,8 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
|
46752
46815
|
}
|
|
46753
46816
|
}
|
|
46754
46817
|
function useSlashCommands(prefix, commandsUrl) {
|
|
46755
|
-
const [commands, setCommands] =
|
|
46756
|
-
const [loading, setLoading] =
|
|
46818
|
+
const [commands, setCommands] = useState105([]);
|
|
46819
|
+
const [loading, setLoading] = useState105(false);
|
|
46757
46820
|
useEffect78(() => {
|
|
46758
46821
|
if (prefix == null) {
|
|
46759
46822
|
setCommands([]);
|
|
@@ -46860,7 +46923,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
|
|
|
46860
46923
|
}
|
|
46861
46924
|
|
|
46862
46925
|
// src/components/chat/hooks/use-chat-attachments.ts
|
|
46863
|
-
import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as
|
|
46926
|
+
import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as useState106 } from "react";
|
|
46864
46927
|
import { fileTypeFromBlob } from "file-type";
|
|
46865
46928
|
var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
|
|
46866
46929
|
var CHAT_ATTACHMENTS_FOLDER = "chat";
|
|
@@ -46936,7 +46999,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
|
|
|
46936
46999
|
function useChatAttachments() {
|
|
46937
47000
|
const runtime = useRequiredChatRuntime();
|
|
46938
47001
|
const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
|
|
46939
|
-
const [attachments, setAttachments] =
|
|
47002
|
+
const [attachments, setAttachments] = useState106([]);
|
|
46940
47003
|
const controllersRef = useRef64(/* @__PURE__ */ new Map());
|
|
46941
47004
|
const updateOne = useCallback46((id, patch) => {
|
|
46942
47005
|
setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
|
|
@@ -47103,14 +47166,14 @@ function useChatAttachments() {
|
|
|
47103
47166
|
}
|
|
47104
47167
|
|
|
47105
47168
|
// src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
|
|
47106
|
-
import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as
|
|
47169
|
+
import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as useState107 } from "react";
|
|
47107
47170
|
import { jsx as jsx348 } from "react/jsx-runtime";
|
|
47108
47171
|
var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
|
|
47109
47172
|
function useChatAttachmentImageGallery() {
|
|
47110
47173
|
const runtime = useRequiredChatRuntime();
|
|
47111
47174
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
47112
47175
|
const panelRef = useRef65(null);
|
|
47113
|
-
const [state, setState] =
|
|
47176
|
+
const [state, setState] = useState107(CLOSED);
|
|
47114
47177
|
const handleClose = useCallback47(() => setState(CLOSED), []);
|
|
47115
47178
|
useEffect79(() => {
|
|
47116
47179
|
const root = panelRef.current;
|
|
@@ -47158,7 +47221,7 @@ function absolutize(prefix) {
|
|
|
47158
47221
|
}
|
|
47159
47222
|
|
|
47160
47223
|
// src/components/chat/hooks/use-chat-identity.ts
|
|
47161
|
-
import { createContext as createContext12, createElement as createElement2, useContext as useContext12, useEffect as useEffect80, useState as
|
|
47224
|
+
import { createContext as createContext12, createElement as createElement2, useContext as useContext12, useEffect as useEffect80, useState as useState108 } from "react";
|
|
47162
47225
|
var ANON_DEFAULTS = {
|
|
47163
47226
|
authTier: "anon",
|
|
47164
47227
|
source: null,
|
|
@@ -47169,8 +47232,8 @@ function useResolveChatIdentity(enabled) {
|
|
|
47169
47232
|
const runtime = useRequiredChatRuntime();
|
|
47170
47233
|
const url = runtime.endpoints.identityUrl;
|
|
47171
47234
|
const proxyEmail = getEmbedProxyAuth()?.email ?? null;
|
|
47172
|
-
const [data, setData] =
|
|
47173
|
-
const [isLoading, setIsLoading] =
|
|
47235
|
+
const [data, setData] = useState108(ANON_DEFAULTS);
|
|
47236
|
+
const [isLoading, setIsLoading] = useState108(enabled);
|
|
47174
47237
|
useEffect80(() => {
|
|
47175
47238
|
if (!enabled) return;
|
|
47176
47239
|
let cancelled = false;
|
|
@@ -47231,13 +47294,13 @@ function useCloseOnNavigation(close, pathname) {
|
|
|
47231
47294
|
}
|
|
47232
47295
|
|
|
47233
47296
|
// src/components/chat/hooks/use-chat.ts
|
|
47234
|
-
import { useState as
|
|
47297
|
+
import { useState as useState110, useCallback as useCallback49, useEffect as useEffect82, useRef as useRef68 } from "react";
|
|
47235
47298
|
|
|
47236
47299
|
// src/components/chat/hooks/use-sse.ts
|
|
47237
|
-
import { useState as
|
|
47300
|
+
import { useState as useState109, useCallback as useCallback48, useRef as useRef67 } from "react";
|
|
47238
47301
|
function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
47239
|
-
const [isStreaming, setIsStreaming] =
|
|
47240
|
-
const [error, setError] =
|
|
47302
|
+
const [isStreaming, setIsStreaming] = useState109(false);
|
|
47303
|
+
const [error, setError] = useState109(null);
|
|
47241
47304
|
const abortControllerRef = useRef67(null);
|
|
47242
47305
|
const fallbackStream = useCallback48(async function* () {
|
|
47243
47306
|
throw new Error(
|
|
@@ -47304,8 +47367,8 @@ function useChat({
|
|
|
47304
47367
|
initialMessages,
|
|
47305
47368
|
onMessagesChange
|
|
47306
47369
|
} = {}) {
|
|
47307
|
-
const [messages, setMessages] =
|
|
47308
|
-
const [isTyping, setIsTyping] =
|
|
47370
|
+
const [messages, setMessages] = useState110(() => initialMessages ?? []);
|
|
47371
|
+
const [isTyping, setIsTyping] = useState110(false);
|
|
47309
47372
|
const currentAssistantSegmentsRef = useRef68([]);
|
|
47310
47373
|
const onMessagesChangeRef = useRef68(onMessagesChange);
|
|
47311
47374
|
onMessagesChangeRef.current = onMessagesChange;
|
|
@@ -47598,7 +47661,7 @@ function useChat({
|
|
|
47598
47661
|
}
|
|
47599
47662
|
|
|
47600
47663
|
// src/components/chat/hooks/use-sse-chat-adapter.ts
|
|
47601
|
-
import { useState as
|
|
47664
|
+
import { useState as useState111, useEffect as useEffect83, useCallback as useCallback50, useMemo as useMemo41, useRef as useRef69 } from "react";
|
|
47602
47665
|
function createEmptyTurnMeta() {
|
|
47603
47666
|
return {
|
|
47604
47667
|
provider: null,
|
|
@@ -47933,8 +47996,8 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
47933
47996
|
const metaMapRef = useRef69(/* @__PURE__ */ new Map());
|
|
47934
47997
|
const messagesRef = useRef69(persistedRef.current.messages);
|
|
47935
47998
|
const sendCountRef = useRef69(persistedRef.current.sendCount);
|
|
47936
|
-
const [streamingPhase, setStreamingPhase] =
|
|
47937
|
-
const [metaTick, setMetaTick] =
|
|
47999
|
+
const [streamingPhase, setStreamingPhase] = useState111("idle");
|
|
48000
|
+
const [metaTick, setMetaTick] = useState111(0);
|
|
47938
48001
|
const bumpMetaTick = useCallback50(() => setMetaTick((t) => t + 1), []);
|
|
47939
48002
|
const streamFn = useMemo41(
|
|
47940
48003
|
() => createDocStreamFn(
|
|
@@ -48207,7 +48270,7 @@ import {
|
|
|
48207
48270
|
useEffect as useEffect84,
|
|
48208
48271
|
useMemo as useMemo42,
|
|
48209
48272
|
useRef as useRef70,
|
|
48210
|
-
useState as
|
|
48273
|
+
useState as useState112
|
|
48211
48274
|
} from "react";
|
|
48212
48275
|
|
|
48213
48276
|
// src/components/chat/utils/process-historical-messages.ts
|
|
@@ -48697,23 +48760,23 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
48697
48760
|
modelLabel = null
|
|
48698
48761
|
} = config;
|
|
48699
48762
|
const isManagedMode = fetchDialogs !== void 0;
|
|
48700
|
-
const [internalDialogId, setInternalDialogId] =
|
|
48763
|
+
const [internalDialogId, setInternalDialogId] = useState112(null);
|
|
48701
48764
|
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] =
|
|
48765
|
+
const [messages, setMessages] = useState112([]);
|
|
48766
|
+
const [streamingPhase, setStreamingPhase] = useState112("idle");
|
|
48767
|
+
const [approvalStatuses, setApprovalStatuses] = useState112({});
|
|
48768
|
+
const [dialogs, setDialogs] = useState112([]);
|
|
48769
|
+
const [dialogsNextCursor, setDialogsNextCursor] = useState112(null);
|
|
48770
|
+
const [isDialogsLoading, setIsDialogsLoading] = useState112(false);
|
|
48771
|
+
const [dialogsError, setDialogsError] = useState112(false);
|
|
48772
|
+
const [isCreatingDialog, setIsCreatingDialog] = useState112(false);
|
|
48773
|
+
const [messagesNextCursor, setMessagesNextCursor] = useState112(null);
|
|
48774
|
+
const [isMessagesLoading, setIsMessagesLoading] = useState112(false);
|
|
48775
|
+
const [dialogTokenUsage, setDialogTokenUsage] = useState112(
|
|
48713
48776
|
null
|
|
48714
48777
|
);
|
|
48715
|
-
const [liveModel, setLiveModel] =
|
|
48716
|
-
const [connectionState, setConnectionState] =
|
|
48778
|
+
const [liveModel, setLiveModel] = useState112(null);
|
|
48779
|
+
const [connectionState, setConnectionState] = useState112("connecting");
|
|
48717
48780
|
const handleApprove = useCallback51(
|
|
48718
48781
|
async (requestId) => {
|
|
48719
48782
|
if (!approveRequestCallback) return;
|
|
@@ -49509,7 +49572,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
|
|
|
49509
49572
|
}
|
|
49510
49573
|
|
|
49511
49574
|
// src/components/chat/embeddable-chat.tsx
|
|
49512
|
-
import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as
|
|
49575
|
+
import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as useState114 } from "react";
|
|
49513
49576
|
import * as DialogPrimitive4 from "@radix-ui/react-dialog";
|
|
49514
49577
|
import { usePreventScroll } from "@react-aria/overlays";
|
|
49515
49578
|
import { isIOS } from "@react-aria/utils";
|
|
@@ -49590,7 +49653,7 @@ init_button2();
|
|
|
49590
49653
|
import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
|
|
49591
49654
|
|
|
49592
49655
|
// src/components/chat/hooks/use-chat-dialog-manager.ts
|
|
49593
|
-
import { useCallback as useCallback53, useMemo as useMemo44, useState as
|
|
49656
|
+
import { useCallback as useCallback53, useMemo as useMemo44, useState as useState113 } from "react";
|
|
49594
49657
|
function useChatDialogManager({
|
|
49595
49658
|
dialogs,
|
|
49596
49659
|
activeDialogId,
|
|
@@ -49601,8 +49664,8 @@ function useChatDialogManager({
|
|
|
49601
49664
|
fetchArchivedDialogs,
|
|
49602
49665
|
unarchiveDialog
|
|
49603
49666
|
}) {
|
|
49604
|
-
const [renameTarget, setRenameTarget] =
|
|
49605
|
-
const [archiveTarget, setArchiveTarget] =
|
|
49667
|
+
const [renameTarget, setRenameTarget] = useState113(null);
|
|
49668
|
+
const [archiveTarget, setArchiveTarget] = useState113(null);
|
|
49606
49669
|
const handleConfirmRename = useCallback53(
|
|
49607
49670
|
(name) => {
|
|
49608
49671
|
if (renameTarget) void renameDialog(renameTarget.id, name);
|
|
@@ -49625,10 +49688,10 @@ function useChatDialogManager({
|
|
|
49625
49688
|
}
|
|
49626
49689
|
setArchiveTarget(null);
|
|
49627
49690
|
}, [archiveTarget, archiveDialog, activeDialogId, clearMessages]);
|
|
49628
|
-
const [archiveOpen, setArchiveOpen] =
|
|
49629
|
-
const [archivedDialogs, setArchivedDialogs] =
|
|
49630
|
-
const [archivedCursor, setArchivedCursor] =
|
|
49631
|
-
const [archivedLoading, setArchivedLoading] =
|
|
49691
|
+
const [archiveOpen, setArchiveOpen] = useState113(false);
|
|
49692
|
+
const [archivedDialogs, setArchivedDialogs] = useState113([]);
|
|
49693
|
+
const [archivedCursor, setArchivedCursor] = useState113(null);
|
|
49694
|
+
const [archivedLoading, setArchivedLoading] = useState113(false);
|
|
49632
49695
|
const loadArchivedPage = useCallback53(
|
|
49633
49696
|
async (cursor) => {
|
|
49634
49697
|
if (!fetchArchivedDialogs) return;
|
|
@@ -49654,10 +49717,10 @@ function useChatDialogManager({
|
|
|
49654
49717
|
void loadArchivedPage();
|
|
49655
49718
|
}, [loadArchivedPage]);
|
|
49656
49719
|
const closeArchive = useCallback53(() => setArchiveOpen(false), []);
|
|
49657
|
-
const [viewingArchivedId, setViewingArchivedId] =
|
|
49720
|
+
const [viewingArchivedId, setViewingArchivedId] = useState113(
|
|
49658
49721
|
null
|
|
49659
49722
|
);
|
|
49660
|
-
const [openingDialogId, setOpeningDialogId] =
|
|
49723
|
+
const [openingDialogId, setOpeningDialogId] = useState113(null);
|
|
49661
49724
|
const handleSelectDialog = useCallback53(
|
|
49662
49725
|
(id) => {
|
|
49663
49726
|
setViewingArchivedId(null);
|
|
@@ -49676,7 +49739,7 @@ function useChatDialogManager({
|
|
|
49676
49739
|
},
|
|
49677
49740
|
[selectDialog]
|
|
49678
49741
|
);
|
|
49679
|
-
const [restoreTarget, setRestoreTarget] =
|
|
49742
|
+
const [restoreTarget, setRestoreTarget] = useState113(null);
|
|
49680
49743
|
const handleConfirmRestore = useCallback53(async () => {
|
|
49681
49744
|
if (restoreTarget) {
|
|
49682
49745
|
try {
|
|
@@ -49738,7 +49801,7 @@ function useChatDialogManager({
|
|
|
49738
49801
|
|
|
49739
49802
|
// src/components/chat/embeddable-chat.tsx
|
|
49740
49803
|
init_next_navigation();
|
|
49741
|
-
import { Fragment as
|
|
49804
|
+
import { Fragment as Fragment75, jsx as jsx351, jsxs as jsxs281 } from "react/jsx-runtime";
|
|
49742
49805
|
var formatRelativePath = (p) => p.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
49743
49806
|
var mentionTokenOf = (key, markerByType) => {
|
|
49744
49807
|
const ci = key.indexOf(":");
|
|
@@ -49858,7 +49921,7 @@ function SourceChip({
|
|
|
49858
49921
|
);
|
|
49859
49922
|
}
|
|
49860
49923
|
const displayName = src.name || formatRelativePath(src.path);
|
|
49861
|
-
const chipBody = (label) => /* @__PURE__ */ jsxs281(
|
|
49924
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs281(Fragment75, { children: [
|
|
49862
49925
|
icon,
|
|
49863
49926
|
/* @__PURE__ */ jsxs281("span", { className: "truncate max-w-[160px]", children: [
|
|
49864
49927
|
"[",
|
|
@@ -49928,7 +49991,7 @@ function SourceChips({
|
|
|
49928
49991
|
onClose,
|
|
49929
49992
|
onDiscuss
|
|
49930
49993
|
}) {
|
|
49931
|
-
const [expanded, setExpanded] =
|
|
49994
|
+
const [expanded, setExpanded] = useState114(false);
|
|
49932
49995
|
if (cited.length === 0) {
|
|
49933
49996
|
const fallback = uncited.slice(0, FALLBACK_TOP_RETRIEVED);
|
|
49934
49997
|
if (fallback.length === 0) return null;
|
|
@@ -50049,7 +50112,7 @@ function EmbeddableChatInner({
|
|
|
50049
50112
|
defaultProp: defaultOpen ?? false,
|
|
50050
50113
|
onChange: onOpenChange
|
|
50051
50114
|
});
|
|
50052
|
-
const [autoFocusInput] =
|
|
50115
|
+
const [autoFocusInput] = useState114(() => {
|
|
50053
50116
|
if (typeof window === "undefined") return false;
|
|
50054
50117
|
return !window.matchMedia("(pointer: coarse)").matches;
|
|
50055
50118
|
});
|
|
@@ -50082,7 +50145,7 @@ function EmbeddableChatInner({
|
|
|
50082
50145
|
};
|
|
50083
50146
|
}, [isOpen, shellLess]);
|
|
50084
50147
|
const chatInputRef = useRef72(null);
|
|
50085
|
-
const [quickActionPreview, setQuickActionPreview] =
|
|
50148
|
+
const [quickActionPreview, setQuickActionPreview] = useState114(null);
|
|
50086
50149
|
const slashCommandsProp = useMemo45(
|
|
50087
50150
|
() => ({
|
|
50088
50151
|
fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
|
|
@@ -50125,7 +50188,7 @@ function EmbeddableChatInner({
|
|
|
50125
50188
|
}, [mingoState, mingoDialogCapabilities, effectiveModes]);
|
|
50126
50189
|
const hasMingoMode = !!effectiveModes.mingo || !!mingoState;
|
|
50127
50190
|
const initialActiveMode = controlledActiveMode ?? defaultActiveMode ?? (effectiveModes.guide ? "guide" : "mingo");
|
|
50128
|
-
const [uncontrolledActiveMode, setUncontrolledActiveMode] =
|
|
50191
|
+
const [uncontrolledActiveMode, setUncontrolledActiveMode] = useState114(initialActiveMode);
|
|
50129
50192
|
const activeMode = controlledActiveMode ?? uncontrolledActiveMode;
|
|
50130
50193
|
const handleActiveModeChange = useCallback54(
|
|
50131
50194
|
(next) => {
|
|
@@ -50207,9 +50270,9 @@ function EmbeddableChatInner({
|
|
|
50207
50270
|
const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
|
|
50208
50271
|
const contextMaxItems = contextPicker?.maxItems ?? 10;
|
|
50209
50272
|
const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
|
|
50210
|
-
const [contextItems, setContextItems] =
|
|
50211
|
-
const [contextPickerOpen, setContextPickerOpen] =
|
|
50212
|
-
const [mentionQuery, setMentionQuery] =
|
|
50273
|
+
const [contextItems, setContextItems] = useState114([]);
|
|
50274
|
+
const [contextPickerOpen, setContextPickerOpen] = useState114(false);
|
|
50275
|
+
const [mentionQuery, setMentionQuery] = useState114(null);
|
|
50213
50276
|
const mentionActiveRef = useRef72(false);
|
|
50214
50277
|
useEffect85(() => {
|
|
50215
50278
|
mentionActiveRef.current = mentionQuery !== null;
|
|
@@ -50496,7 +50559,7 @@ function EmbeddableChatInner({
|
|
|
50496
50559
|
const uncited = sources.filter((s) => !seenOrder.has(s.index));
|
|
50497
50560
|
return { cited, uncited };
|
|
50498
50561
|
}, [lastAssistantMsg, chatLoading]);
|
|
50499
|
-
const [portalHost, setPortalHost] =
|
|
50562
|
+
const [portalHost, setPortalHost] = useState114(null);
|
|
50500
50563
|
const body = /* @__PURE__ */ jsxs281(PortalContainerContext.Provider, { value: portalHost, children: [
|
|
50501
50564
|
/* @__PURE__ */ jsx351(
|
|
50502
50565
|
"div",
|
|
@@ -50804,7 +50867,7 @@ function EmbeddableChatInner({
|
|
|
50804
50867
|
]
|
|
50805
50868
|
}
|
|
50806
50869
|
) }) });
|
|
50807
|
-
return /* @__PURE__ */ jsxs281(
|
|
50870
|
+
return /* @__PURE__ */ jsxs281(Fragment75, { children: [
|
|
50808
50871
|
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx351(
|
|
50809
50872
|
"div",
|
|
50810
50873
|
{
|
|
@@ -51081,6 +51144,7 @@ export {
|
|
|
51081
51144
|
ArgRow,
|
|
51082
51145
|
ResultBlock,
|
|
51083
51146
|
CommandBlock,
|
|
51147
|
+
ApprovalStatusTag,
|
|
51084
51148
|
ApprovalBatchMessage,
|
|
51085
51149
|
ContextCompactionDisplay,
|
|
51086
51150
|
SimpleMarkdownRenderer,
|
|
@@ -51764,4 +51828,4 @@ export {
|
|
|
51764
51828
|
LogsList,
|
|
51765
51829
|
assets
|
|
51766
51830
|
};
|
|
51767
|
-
//# sourceMappingURL=chunk-
|
|
51831
|
+
//# sourceMappingURL=chunk-XQ77CK5C.js.map
|