@flamingo-stack/openframe-frontend-core 0.0.382 → 0.0.383-snapshot.20260708154433
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-JQT7PD6Z.cjs → chunk-AZOME5YC.cjs} +57 -57
- package/dist/{chunk-JQT7PD6Z.cjs.map → chunk-AZOME5YC.cjs.map} +1 -1
- package/dist/{chunk-PI3XFKEW.js → chunk-EEUUTWFQ.js} +2 -2
- package/dist/{chunk-HDWY2SXF.js → chunk-FBUTS5UQ.js} +4 -4
- package/dist/{chunk-QQAHEWSR.cjs → chunk-FG4J67VX.cjs} +31 -31
- package/dist/{chunk-QQAHEWSR.cjs.map → chunk-FG4J67VX.cjs.map} +1 -1
- package/dist/{chunk-K5P6XKIT.js → chunk-FQR2CNKB.js} +2 -2
- package/dist/{chunk-7IQK3Y3G.cjs → chunk-FSN3GIUJ.cjs} +25 -25
- package/dist/{chunk-7IQK3Y3G.cjs.map → chunk-FSN3GIUJ.cjs.map} +1 -1
- package/dist/{chunk-EE26RXMG.cjs → chunk-FV2FQQYF.cjs} +12 -12
- package/dist/{chunk-EE26RXMG.cjs.map → chunk-FV2FQQYF.cjs.map} +1 -1
- package/dist/{chunk-32YONDMH.cjs → chunk-H7PRWFAQ.cjs} +26 -26
- package/dist/{chunk-32YONDMH.cjs.map → chunk-H7PRWFAQ.cjs.map} +1 -1
- package/dist/{chunk-GZ5N76H2.js → chunk-JEADRVBL.js} +4 -4
- package/dist/{chunk-LRA7FGQC.js → chunk-K7YBWMJ6.js} +4 -4
- package/dist/{chunk-AS6FET7G.cjs → chunk-KI5QS5C2.cjs} +15 -15
- package/dist/{chunk-AS6FET7G.cjs.map → chunk-KI5QS5C2.cjs.map} +1 -1
- package/dist/{chunk-23PZFAET.js → chunk-KJ3O7A65.js} +4 -4
- package/dist/{chunk-IENK6OY5.cjs → chunk-KJTGCH3I.cjs} +5 -5
- package/dist/{chunk-IENK6OY5.cjs.map → chunk-KJTGCH3I.cjs.map} +1 -1
- package/dist/{chunk-DQJCWNRT.js → chunk-LMIN2CWQ.js} +2 -2
- package/dist/{chunk-QI3PW4F7.cjs → chunk-MMYAOMD4.cjs} +7 -7
- package/dist/{chunk-QI3PW4F7.cjs.map → chunk-MMYAOMD4.cjs.map} +1 -1
- package/dist/{chunk-4A4DA7OX.js → chunk-MVLWQ6OZ.js} +2 -2
- package/dist/{chunk-SZSBHBXE.cjs → chunk-NGWYDTZZ.cjs} +666 -598
- package/dist/chunk-NGWYDTZZ.cjs.map +1 -0
- package/dist/{chunk-XHCRZDM6.cjs → chunk-Q2OBKYTK.cjs} +37 -37
- package/dist/{chunk-XHCRZDM6.cjs.map → chunk-Q2OBKYTK.cjs.map} +1 -1
- package/dist/{chunk-L3DRZ2WE.cjs → chunk-Q6EGRFVE.cjs} +62 -62
- package/dist/{chunk-L3DRZ2WE.cjs.map → chunk-Q6EGRFVE.cjs.map} +1 -1
- package/dist/{chunk-3GGIVFSI.js → chunk-U22GJXOD.js} +2 -2
- package/dist/{chunk-LIK575RM.js → chunk-UOLDL3U3.js} +2 -2
- package/dist/{chunk-GZIHB6TH.js → chunk-VZ4NJBQT.js} +364 -296
- package/dist/chunk-VZ4NJBQT.js.map +1 -0
- package/dist/{chunk-Z56MCQ6X.cjs → chunk-WRAECAST.cjs} +9 -9
- package/dist/{chunk-Z56MCQ6X.cjs.map → chunk-WRAECAST.cjs.map} +1 -1
- package/dist/{chunk-MGDDM2UI.js → chunk-XGE53EOX.js} +2 -2
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/approval-batch-message.d.ts +20 -0
- package/dist/components/chat/approval-batch-message.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +4 -2
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +3 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/auth/create-organization-form.d.ts +8 -1
- package/dist/components/features/auth/create-organization-form.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-tile.d.ts +8 -2
- package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/types.d.ts +11 -1
- package/dist/components/features/notifications/types.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +122 -120
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +11 -9
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +4 -2
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +3 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -1
- package/package.json +1 -1
- package/src/components/chat/approval-batch-message.tsx +28 -15
- package/src/components/features/auth/create-organization-form.tsx +21 -10
- 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/stories/NotificationDrawer.stories.tsx +220 -31
- package/dist/chunk-GZIHB6TH.js.map +0 -1
- package/dist/chunk-SZSBHBXE.cjs.map +0 -1
- /package/dist/{chunk-PI3XFKEW.js.map → chunk-EEUUTWFQ.js.map} +0 -0
- /package/dist/{chunk-HDWY2SXF.js.map → chunk-FBUTS5UQ.js.map} +0 -0
- /package/dist/{chunk-K5P6XKIT.js.map → chunk-FQR2CNKB.js.map} +0 -0
- /package/dist/{chunk-GZ5N76H2.js.map → chunk-JEADRVBL.js.map} +0 -0
- /package/dist/{chunk-LRA7FGQC.js.map → chunk-K7YBWMJ6.js.map} +0 -0
- /package/dist/{chunk-23PZFAET.js.map → chunk-KJ3O7A65.js.map} +0 -0
- /package/dist/{chunk-DQJCWNRT.js.map → chunk-LMIN2CWQ.js.map} +0 -0
- /package/dist/{chunk-4A4DA7OX.js.map → chunk-MVLWQ6OZ.js.map} +0 -0
- /package/dist/{chunk-3GGIVFSI.js.map → chunk-U22GJXOD.js.map} +0 -0
- /package/dist/{chunk-LIK575RM.js.map → chunk-UOLDL3U3.js.map} +0 -0
- /package/dist/{chunk-MGDDM2UI.js.map → chunk-XGE53EOX.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
|
|
@@ -24617,6 +24620,8 @@ function CreateOrganizationForm({
|
|
|
24617
24620
|
disabled = false,
|
|
24618
24621
|
errors,
|
|
24619
24622
|
emailStatus,
|
|
24623
|
+
domainStatus,
|
|
24624
|
+
domainSlot,
|
|
24620
24625
|
ssoProviders,
|
|
24621
24626
|
onSsoClick,
|
|
24622
24627
|
ssoActionLabel = "Sign Up with",
|
|
@@ -24669,19 +24674,23 @@ function CreateOrganizationForm({
|
|
|
24669
24674
|
}
|
|
24670
24675
|
) })
|
|
24671
24676
|
] }),
|
|
24672
|
-
/* @__PURE__ */
|
|
24673
|
-
|
|
24674
|
-
|
|
24675
|
-
|
|
24676
|
-
|
|
24677
|
-
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
|
|
24681
|
-
|
|
24682
|
-
|
|
24683
|
-
|
|
24684
|
-
|
|
24677
|
+
/* @__PURE__ */ jsxs147("div", { className: "flex flex-col", children: [
|
|
24678
|
+
/* @__PURE__ */ jsx188(
|
|
24679
|
+
Input,
|
|
24680
|
+
{
|
|
24681
|
+
label: "Domain",
|
|
24682
|
+
placeholder: domainPlaceholder,
|
|
24683
|
+
value: domain,
|
|
24684
|
+
error: errors?.domain ?? domainStatus?.message,
|
|
24685
|
+
errorVariant: errors?.domain ? "error" : domainStatus?.variant,
|
|
24686
|
+
disabled: fieldsDisabled,
|
|
24687
|
+
endAdornment: domainSuffix ? /* @__PURE__ */ jsx188("span", { className: "whitespace-nowrap", children: domainSuffix }) : void 0,
|
|
24688
|
+
onChange: (event) => onDomainChange(event.target.value),
|
|
24689
|
+
onKeyDown: handleKeyDown
|
|
24690
|
+
}
|
|
24691
|
+
),
|
|
24692
|
+
domainSlot && /* @__PURE__ */ jsx188("div", { className: "pt-[var(--spacing-system-l)]", children: domainSlot })
|
|
24693
|
+
] }),
|
|
24685
24694
|
/* @__PURE__ */ jsx188(
|
|
24686
24695
|
CheckboxBlock,
|
|
24687
24696
|
{
|
|
@@ -31042,20 +31051,51 @@ init_button2();
|
|
|
31042
31051
|
init_cn();
|
|
31043
31052
|
|
|
31044
31053
|
// src/components/features/notifications/notification-tile.tsx
|
|
31045
|
-
import { useMemo as useMemo28, useEffect as useEffect52 } from "react";
|
|
31046
|
-
init_button();
|
|
31054
|
+
import { useMemo as useMemo28, useEffect as useEffect52, useState as useState72 } from "react";
|
|
31047
31055
|
init_cn();
|
|
31048
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";
|
|
31049
31071
|
function NotificationTile({
|
|
31050
31072
|
notification,
|
|
31051
31073
|
liveDurationMs = 4e3,
|
|
31052
31074
|
onComplete,
|
|
31053
31075
|
onSettle,
|
|
31054
31076
|
className,
|
|
31077
|
+
actions,
|
|
31055
31078
|
children,
|
|
31056
31079
|
paused = false
|
|
31057
31080
|
}) {
|
|
31058
|
-
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();
|
|
31059
31099
|
const initialElapsed = useMemo28(() => Date.now() - createdAt, [createdAt]);
|
|
31060
31100
|
const isLive = !read && !settled && initialElapsed < liveDurationMs;
|
|
31061
31101
|
const counting = isLive && !paused;
|
|
@@ -31079,37 +31119,75 @@ function NotificationTile({
|
|
|
31079
31119
|
"div",
|
|
31080
31120
|
{
|
|
31081
31121
|
className: cn(
|
|
31082
|
-
"relative flex
|
|
31083
|
-
|
|
31122
|
+
"relative flex flex-col gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)]",
|
|
31123
|
+
isLive && "pb-[var(--spacing-system-m)]"
|
|
31084
31124
|
),
|
|
31085
31125
|
children: [
|
|
31086
|
-
/* @__PURE__ */
|
|
31087
|
-
|
|
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: [
|
|
31088
31180
|
title ? /* @__PURE__ */ jsx247("p", { className: "truncate text-h4 text-ods-text-primary", title: typeof title === "string" ? title : void 0, children: title }) : null,
|
|
31089
|
-
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
|
|
31090
31182
|
] }),
|
|
31091
|
-
|
|
31092
|
-
Button,
|
|
31093
|
-
{
|
|
31094
|
-
variant: "outline",
|
|
31095
|
-
size: "small",
|
|
31096
|
-
onClick: () => onComplete(id),
|
|
31097
|
-
"aria-label": "Mark notification complete",
|
|
31098
|
-
tabIndex: isLive ? -1 : 0,
|
|
31099
|
-
className: cn(
|
|
31100
|
-
"shrink-0 hover:text-ods-text-primary",
|
|
31101
|
-
isLive && "invisible"
|
|
31102
|
-
),
|
|
31103
|
-
children: /* @__PURE__ */ jsx247(CheckCircleIcon, {})
|
|
31104
|
-
}
|
|
31105
|
-
),
|
|
31183
|
+
actions,
|
|
31106
31184
|
counting ? /* @__PURE__ */ jsx247(
|
|
31107
31185
|
"div",
|
|
31108
31186
|
{
|
|
31109
31187
|
"aria-hidden": true,
|
|
31110
31188
|
className: cn(
|
|
31111
31189
|
"absolute inset-x-0 -bottom-px h-1 origin-left",
|
|
31112
|
-
progressColorByVariant[
|
|
31190
|
+
progressColorByVariant[accentVariant]
|
|
31113
31191
|
),
|
|
31114
31192
|
style: {
|
|
31115
31193
|
animation: `toast-progress ${liveDurationMs}ms linear forwards`,
|
|
@@ -31120,21 +31198,7 @@ function NotificationTile({
|
|
|
31120
31198
|
]
|
|
31121
31199
|
}
|
|
31122
31200
|
),
|
|
31123
|
-
children
|
|
31124
|
-
/* @__PURE__ */ jsx247(
|
|
31125
|
-
"button",
|
|
31126
|
-
{
|
|
31127
|
-
type: "button",
|
|
31128
|
-
onClick: () => onSettle?.(id),
|
|
31129
|
-
"aria-label": "Dismiss notification",
|
|
31130
|
-
tabIndex: isLive ? 0 : -1,
|
|
31131
|
-
className: cn(
|
|
31132
|
-
"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",
|
|
31133
|
-
!isLive && "pointer-events-none opacity-0"
|
|
31134
|
-
),
|
|
31135
|
-
children: /* @__PURE__ */ jsx247(XmarkIcon, { size: 16 })
|
|
31136
|
-
}
|
|
31137
|
-
)
|
|
31201
|
+
children
|
|
31138
31202
|
]
|
|
31139
31203
|
}
|
|
31140
31204
|
);
|
|
@@ -31470,8 +31534,8 @@ function NotificationPopups({
|
|
|
31470
31534
|
}
|
|
31471
31535
|
|
|
31472
31536
|
// src/components/features/notifications/approval-request-notification-tile.tsx
|
|
31473
|
-
|
|
31474
|
-
import { useMemo as useMemo29, useState as
|
|
31537
|
+
init_button2();
|
|
31538
|
+
import { useMemo as useMemo29, useState as useState73 } from "react";
|
|
31475
31539
|
|
|
31476
31540
|
// src/components/chat/types/chat.types.ts
|
|
31477
31541
|
var CHAT_TYPE = {
|
|
@@ -31665,7 +31729,7 @@ function approvalMetaToBatchData(approval) {
|
|
|
31665
31729
|
}
|
|
31666
31730
|
|
|
31667
31731
|
// src/components/features/notifications/approval-request-notification-tile.tsx
|
|
31668
|
-
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";
|
|
31669
31733
|
function ApprovalRequestNotificationTile({
|
|
31670
31734
|
notification,
|
|
31671
31735
|
onApprove,
|
|
@@ -31676,78 +31740,81 @@ function ApprovalRequestNotificationTile({
|
|
|
31676
31740
|
defaultExpanded = false,
|
|
31677
31741
|
className
|
|
31678
31742
|
}) {
|
|
31679
|
-
const [expanded, setExpanded] =
|
|
31680
|
-
const [pinned, setPinned] =
|
|
31681
|
-
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);
|
|
31682
31747
|
const approval = getApprovalMeta(notification);
|
|
31683
31748
|
const resolvedStatus = resolutionToStatus(approval?.resolution);
|
|
31684
31749
|
const status = resolvedStatus !== "pending" ? resolvedStatus : localStatus ?? "pending";
|
|
31685
31750
|
const batchData = useMemo29(() => approval ? approvalMetaToBatchData(approval) : null, [approval]);
|
|
31686
31751
|
const { innerRef, containerStyle } = useCollapsible({ expanded });
|
|
31687
31752
|
if (!approval || !batchData) return null;
|
|
31688
|
-
const
|
|
31689
|
-
|
|
31690
|
-
|
|
31691
|
-
|
|
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);
|
|
31692
31762
|
try {
|
|
31693
|
-
await
|
|
31694
|
-
onComplete(notification.id);
|
|
31695
|
-
} catch {
|
|
31696
|
-
setLocalStatus(null);
|
|
31697
|
-
}
|
|
31698
|
-
};
|
|
31699
|
-
const handleReject = async () => {
|
|
31700
|
-
setLocalStatus("rejected");
|
|
31701
|
-
try {
|
|
31702
|
-
await onReject(batchData.approvalRequestId);
|
|
31703
|
-
onComplete(notification.id);
|
|
31763
|
+
await action(batchData.approvalRequestId);
|
|
31704
31764
|
} catch {
|
|
31705
31765
|
setLocalStatus(null);
|
|
31766
|
+
return;
|
|
31767
|
+
} finally {
|
|
31768
|
+
setProcessing(false);
|
|
31706
31769
|
}
|
|
31770
|
+
onComplete(notification.id);
|
|
31707
31771
|
};
|
|
31708
|
-
return /* @__PURE__ */
|
|
31772
|
+
return /* @__PURE__ */ jsx250(
|
|
31709
31773
|
NotificationTile,
|
|
31710
31774
|
{
|
|
31711
|
-
notification,
|
|
31775
|
+
notification: tileNotification,
|
|
31712
31776
|
liveDurationMs,
|
|
31713
31777
|
onComplete,
|
|
31714
31778
|
onSettle,
|
|
31715
31779
|
className,
|
|
31716
|
-
paused: pinned,
|
|
31717
|
-
children: [
|
|
31718
|
-
/* @__PURE__ */ jsxs196(
|
|
31719
|
-
"
|
|
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,
|
|
31720
31794
|
{
|
|
31721
|
-
|
|
31795
|
+
variant: "outline",
|
|
31796
|
+
size: "small",
|
|
31722
31797
|
onClick: () => {
|
|
31723
31798
|
setExpanded((prev) => !prev);
|
|
31724
31799
|
setPinned(true);
|
|
31725
31800
|
},
|
|
31726
31801
|
"aria-expanded": expanded,
|
|
31727
|
-
|
|
31728
|
-
|
|
31729
|
-
|
|
31730
|
-
),
|
|
31731
|
-
children: [
|
|
31732
|
-
/* @__PURE__ */ jsx250("span", { className: "min-w-0 flex-1 text-h6 text-ods-text-primary", children: toggleLabel }),
|
|
31733
|
-
/* @__PURE__ */ jsx250(ExpandChevron, { expanded })
|
|
31734
|
-
]
|
|
31802
|
+
"aria-label": toggleLabel,
|
|
31803
|
+
className: "ml-auto w-6 shrink-0 px-0 md:w-8",
|
|
31804
|
+
children: /* @__PURE__ */ jsx250(ExpandChevron, { expanded })
|
|
31735
31805
|
}
|
|
31736
|
-
)
|
|
31737
|
-
|
|
31738
|
-
|
|
31739
|
-
|
|
31740
|
-
|
|
31741
|
-
|
|
31742
|
-
|
|
31743
|
-
|
|
31744
|
-
|
|
31745
|
-
|
|
31746
|
-
|
|
31747
|
-
|
|
31748
|
-
}
|
|
31749
|
-
) }) })
|
|
31750
|
-
]
|
|
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
|
+
) }) }) })
|
|
31751
31818
|
}
|
|
31752
31819
|
);
|
|
31753
31820
|
}
|
|
@@ -31777,12 +31844,12 @@ function useOptionalTimeTracker() {
|
|
|
31777
31844
|
|
|
31778
31845
|
// src/components/features/time-tracker/time-tracker-panel.tsx
|
|
31779
31846
|
init_cn();
|
|
31780
|
-
import { useEffect as useEffect55, useState as
|
|
31847
|
+
import { useEffect as useEffect55, useState as useState76 } from "react";
|
|
31781
31848
|
init_button();
|
|
31782
31849
|
init_split_button();
|
|
31783
31850
|
|
|
31784
31851
|
// src/components/features/time-tracker/use-tracker-clock.ts
|
|
31785
|
-
import { useEffect as useEffect54, useState as
|
|
31852
|
+
import { useEffect as useEffect54, useState as useState75 } from "react";
|
|
31786
31853
|
function formatElapsed(totalMs) {
|
|
31787
31854
|
const totalSeconds = Math.max(0, Math.floor(totalMs / 1e3));
|
|
31788
31855
|
const hours = Math.floor(totalSeconds / 3600);
|
|
@@ -31792,7 +31859,7 @@ function formatElapsed(totalMs) {
|
|
|
31792
31859
|
return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
|
|
31793
31860
|
}
|
|
31794
31861
|
function useTrackerClock({ status, runningSince, accumulatedMs = 0 }) {
|
|
31795
|
-
const [now, setNow] =
|
|
31862
|
+
const [now, setNow] = useState75(() => Date.now());
|
|
31796
31863
|
useEffect54(() => {
|
|
31797
31864
|
if (status !== "tracking") return;
|
|
31798
31865
|
setNow(Date.now());
|
|
@@ -31848,7 +31915,7 @@ function TimeTrackerPanel({
|
|
|
31848
31915
|
className
|
|
31849
31916
|
}) {
|
|
31850
31917
|
const elapsedLabel = useTrackerClock({ status, runningSince, accumulatedMs });
|
|
31851
|
-
const [showValidationError, setShowValidationError] =
|
|
31918
|
+
const [showValidationError, setShowValidationError] = useState76(false);
|
|
31852
31919
|
const isRunning = status === "tracking";
|
|
31853
31920
|
const isActive = status !== "ready";
|
|
31854
31921
|
const hasContent = selectedTicketId != null || notes.trim() !== "";
|
|
@@ -32130,7 +32197,7 @@ function HeaderButton({
|
|
|
32130
32197
|
}
|
|
32131
32198
|
|
|
32132
32199
|
// src/components/features/time-tracker/time-tracker-header-button.tsx
|
|
32133
|
-
import { Fragment as
|
|
32200
|
+
import { Fragment as Fragment42, jsx as jsx254, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
32134
32201
|
function TimeTrackerHeaderButton({ className, disabled }) {
|
|
32135
32202
|
const ctx = useOptionalTimeTracker();
|
|
32136
32203
|
const elapsedLabel = useTrackerClock({
|
|
@@ -32154,7 +32221,7 @@ function TimeTrackerHeaderButton({ className, disabled }) {
|
|
|
32154
32221
|
isActive && "w-auto gap-[var(--spacing-system-xsf)] px-[var(--spacing-system-sf)] md:w-auto",
|
|
32155
32222
|
className
|
|
32156
32223
|
),
|
|
32157
|
-
icon: /* @__PURE__ */ jsxs198(
|
|
32224
|
+
icon: /* @__PURE__ */ jsxs198(Fragment42, { children: [
|
|
32158
32225
|
/* @__PURE__ */ jsx254(
|
|
32159
32226
|
ClockHistoryIcon,
|
|
32160
32227
|
{
|
|
@@ -32396,7 +32463,7 @@ function BoardTicketApproval({ pendingApproval, onApprove, onReject }) {
|
|
|
32396
32463
|
}
|
|
32397
32464
|
|
|
32398
32465
|
// src/components/features/board/ticket-card.tsx
|
|
32399
|
-
import { Fragment as
|
|
32466
|
+
import { Fragment as Fragment43, jsx as jsx257, jsxs as jsxs201 } from "react/jsx-runtime";
|
|
32400
32467
|
var PRIORITY_COLOR_CLASS = {
|
|
32401
32468
|
low: "text-ods-text-secondary",
|
|
32402
32469
|
medium: "text-ods-info",
|
|
@@ -32469,7 +32536,7 @@ function TicketCard({
|
|
|
32469
32536
|
] }) : null;
|
|
32470
32537
|
const timestampLabel = ticket.createdAt ? formatTicketRelativeTime(ticket.createdAt) : null;
|
|
32471
32538
|
const tooltipLabel = ticket.createdAt ? formatTicketFullTimestamp(ticket.createdAt) : null;
|
|
32472
|
-
const body = /* @__PURE__ */ jsxs201(
|
|
32539
|
+
const body = /* @__PURE__ */ jsxs201(Fragment43, { children: [
|
|
32473
32540
|
/* @__PURE__ */ jsxs201("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
32474
32541
|
/* @__PURE__ */ jsxs201("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-zero)]", title: ticket.title, children: [
|
|
32475
32542
|
/* @__PURE__ */ jsx257("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
@@ -32597,7 +32664,7 @@ var TicketCardSkeleton = React100.forwardRef(
|
|
|
32597
32664
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
32598
32665
|
|
|
32599
32666
|
// src/components/features/board/board-column.tsx
|
|
32600
|
-
import { Fragment as
|
|
32667
|
+
import { Fragment as Fragment44, jsx as jsx259, jsxs as jsxs203 } from "react/jsx-runtime";
|
|
32601
32668
|
function BoardColumn({
|
|
32602
32669
|
column,
|
|
32603
32670
|
collapsed = false,
|
|
@@ -32636,7 +32703,7 @@ function BoardColumn({
|
|
|
32636
32703
|
onArchive: !collapsed && column.archivable && onArchive ? () => onArchive(column.id) : void 0
|
|
32637
32704
|
}
|
|
32638
32705
|
),
|
|
32639
|
-
!collapsed && /* @__PURE__ */ jsxs203(
|
|
32706
|
+
!collapsed && /* @__PURE__ */ jsxs203(Fragment44, { children: [
|
|
32640
32707
|
/* @__PURE__ */ jsx259("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
32641
32708
|
/* @__PURE__ */ jsx259(
|
|
32642
32709
|
ColumnBody,
|
|
@@ -32729,7 +32796,7 @@ function SkeletonStack({ count = 4 }) {
|
|
|
32729
32796
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
32730
32797
|
[count]
|
|
32731
32798
|
);
|
|
32732
|
-
return /* @__PURE__ */ jsx259(
|
|
32799
|
+
return /* @__PURE__ */ jsx259(Fragment44, { children: keys.map((k) => /* @__PURE__ */ jsx259(TicketCardSkeleton, {}, k)) });
|
|
32733
32800
|
}
|
|
32734
32801
|
function EmptyState2() {
|
|
32735
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: [
|
|
@@ -32742,13 +32809,13 @@ function EmptyState2() {
|
|
|
32742
32809
|
}
|
|
32743
32810
|
|
|
32744
32811
|
// src/components/features/board/use-board-collapse.ts
|
|
32745
|
-
import { useCallback as useCallback30, useState as
|
|
32812
|
+
import { useCallback as useCallback30, useState as useState78 } from "react";
|
|
32746
32813
|
function useBoardCollapse(storageKey) {
|
|
32747
32814
|
const [persisted, setPersisted] = useLocalStorage(
|
|
32748
32815
|
storageKey ?? "__board_collapse_unused__",
|
|
32749
32816
|
{}
|
|
32750
32817
|
);
|
|
32751
|
-
const [memory, setMemory] =
|
|
32818
|
+
const [memory, setMemory] = useState78({});
|
|
32752
32819
|
const collapsed = storageKey ? persisted : memory;
|
|
32753
32820
|
const setMap = storageKey ? setPersisted : setMemory;
|
|
32754
32821
|
const toggle = useCallback30(
|
|
@@ -33139,13 +33206,13 @@ function SortableRow({
|
|
|
33139
33206
|
|
|
33140
33207
|
// src/components/navigation/header.tsx
|
|
33141
33208
|
init_next_link();
|
|
33142
|
-
import React104, { useEffect as useEffect58, useRef as useRef42, useState as
|
|
33209
|
+
import React104, { useEffect as useEffect58, useRef as useRef42, useState as useState80 } from "react";
|
|
33143
33210
|
init_button2();
|
|
33144
|
-
import { Fragment as
|
|
33211
|
+
import { Fragment as Fragment46, jsx as jsx262, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
33145
33212
|
function Header2({ config, platform }) {
|
|
33146
|
-
const [show, setShow] =
|
|
33147
|
-
const [lastScrollY, setLastScrollY] =
|
|
33148
|
-
const [openDropdowns, setOpenDropdowns] =
|
|
33213
|
+
const [show, setShow] = useState80(true);
|
|
33214
|
+
const [lastScrollY, setLastScrollY] = useState80(0);
|
|
33215
|
+
const [openDropdowns, setOpenDropdowns] = useState80({});
|
|
33149
33216
|
const dropdownRefs = useRef42({});
|
|
33150
33217
|
const triggerRefs = useRef42({});
|
|
33151
33218
|
useEffect58(() => {
|
|
@@ -33286,7 +33353,7 @@ function Header2({ config, platform }) {
|
|
|
33286
33353
|
},
|
|
33287
33354
|
child.id
|
|
33288
33355
|
)) }),
|
|
33289
|
-
item.dropdownContent && /* @__PURE__ */ jsxs205(
|
|
33356
|
+
item.dropdownContent && /* @__PURE__ */ jsxs205(Fragment46, { children: [
|
|
33290
33357
|
item.showDropdownDivider !== false && /* @__PURE__ */ jsx262("div", { className: "h-px my-2 mx-2 bg-ods-border" }),
|
|
33291
33358
|
/* @__PURE__ */ jsx262("div", { className: "px-2 pb-2", children: item.dropdownContent })
|
|
33292
33359
|
] })
|
|
@@ -33407,7 +33474,7 @@ function Header2({ config, platform }) {
|
|
|
33407
33474
|
}
|
|
33408
33475
|
|
|
33409
33476
|
// src/components/navigation/client-only-header.tsx
|
|
33410
|
-
import { useState as
|
|
33477
|
+
import { useState as useState81, useEffect as useEffect59 } from "react";
|
|
33411
33478
|
|
|
33412
33479
|
// src/components/navigation/header-skeleton.tsx
|
|
33413
33480
|
import { jsx as jsx263, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
@@ -33455,7 +33522,7 @@ function HeaderSkeleton({ config }) {
|
|
|
33455
33522
|
// src/components/navigation/client-only-header.tsx
|
|
33456
33523
|
import { jsx as jsx264 } from "react/jsx-runtime";
|
|
33457
33524
|
function ClientOnlyHeader({ config, skeleton }) {
|
|
33458
|
-
const [isClient, setIsClient] =
|
|
33525
|
+
const [isClient, setIsClient] = useState81(false);
|
|
33459
33526
|
useEffect59(() => {
|
|
33460
33527
|
setIsClient(true);
|
|
33461
33528
|
}, []);
|
|
@@ -33469,7 +33536,7 @@ function ClientOnlyHeader({ config, skeleton }) {
|
|
|
33469
33536
|
import { useEffect as useEffect60, useRef as useRef43 } from "react";
|
|
33470
33537
|
init_button2();
|
|
33471
33538
|
import { X as X10 } from "lucide-react";
|
|
33472
|
-
import { Fragment as
|
|
33539
|
+
import { Fragment as Fragment47, jsx as jsx265, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
33473
33540
|
function MobileNavPanel({ isOpen, config }) {
|
|
33474
33541
|
const panelRef = useRef43(null);
|
|
33475
33542
|
useEffect60(() => {
|
|
@@ -33542,7 +33609,7 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
33542
33609
|
item.id
|
|
33543
33610
|
);
|
|
33544
33611
|
};
|
|
33545
|
-
return /* @__PURE__ */ jsxs207(
|
|
33612
|
+
return /* @__PURE__ */ jsxs207(Fragment47, { children: [
|
|
33546
33613
|
/* @__PURE__ */ jsx265(
|
|
33547
33614
|
"div",
|
|
33548
33615
|
{
|
|
@@ -33590,13 +33657,13 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
33590
33657
|
}
|
|
33591
33658
|
|
|
33592
33659
|
// src/components/navigation/sliding-sidebar.tsx
|
|
33593
|
-
import { useState as
|
|
33660
|
+
import { useState as useState82, useEffect as useEffect61 } from "react";
|
|
33594
33661
|
import { motion as motion2, AnimatePresence } from "framer-motion";
|
|
33595
33662
|
init_button2();
|
|
33596
|
-
import { Fragment as
|
|
33663
|
+
import { Fragment as Fragment48, jsx as jsx266, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
33597
33664
|
function SlidingSidebar({ config }) {
|
|
33598
|
-
const [expandedItems, setExpandedItems] =
|
|
33599
|
-
const [mounted, setMounted] =
|
|
33665
|
+
const [expandedItems, setExpandedItems] = useState82(/* @__PURE__ */ new Set());
|
|
33666
|
+
const [mounted, setMounted] = useState82(false);
|
|
33600
33667
|
const headerHeight = useHeaderHeight();
|
|
33601
33668
|
useEffect61(() => {
|
|
33602
33669
|
setMounted(true);
|
|
@@ -33715,7 +33782,7 @@ function SlidingSidebar({ config }) {
|
|
|
33715
33782
|
if (!mounted) {
|
|
33716
33783
|
return null;
|
|
33717
33784
|
}
|
|
33718
|
-
return /* @__PURE__ */ jsxs208(
|
|
33785
|
+
return /* @__PURE__ */ jsxs208(Fragment48, { children: [
|
|
33719
33786
|
/* @__PURE__ */ jsx266(AnimatePresence, { children: config.isOpen && /* @__PURE__ */ jsx266(
|
|
33720
33787
|
motion2.div,
|
|
33721
33788
|
{
|
|
@@ -33761,7 +33828,7 @@ function SlidingSidebar({ config }) {
|
|
|
33761
33828
|
}
|
|
33762
33829
|
|
|
33763
33830
|
// src/components/navigation/sticky-section-nav.tsx
|
|
33764
|
-
import { useEffect as useEffect62, useState as
|
|
33831
|
+
import { useEffect as useEffect62, useState as useState83, useCallback as useCallback32, useRef as useRef44 } from "react";
|
|
33765
33832
|
import { jsx as jsx267, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
33766
33833
|
function StickySectionNav({
|
|
33767
33834
|
sections,
|
|
@@ -33822,7 +33889,7 @@ function StickySectionNav({
|
|
|
33822
33889
|
] });
|
|
33823
33890
|
}
|
|
33824
33891
|
function useSectionNavigation(sections, options) {
|
|
33825
|
-
const [activeSection, setActiveSection] =
|
|
33892
|
+
const [activeSection, setActiveSection] = useState83(sections[0]?.id || "");
|
|
33826
33893
|
const isScrollingFromClick = useRef44(false);
|
|
33827
33894
|
const { offset: offset2 = 100 } = options || {};
|
|
33828
33895
|
const handleSectionClick = useCallback32((sectionId) => {
|
|
@@ -33875,7 +33942,7 @@ function useSectionNavigation(sections, options) {
|
|
|
33875
33942
|
}
|
|
33876
33943
|
|
|
33877
33944
|
// src/components/navigation/navigation-sidebar.tsx
|
|
33878
|
-
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";
|
|
33879
33946
|
|
|
33880
33947
|
// src/components/navigation/navigation-sidebar-header.tsx
|
|
33881
33948
|
import { jsx as jsx268, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
@@ -34021,7 +34088,7 @@ function NavigationSidebarToggle({
|
|
|
34021
34088
|
}
|
|
34022
34089
|
|
|
34023
34090
|
// src/components/navigation/navigation-sidebar.tsx
|
|
34024
|
-
import { Fragment as
|
|
34091
|
+
import { Fragment as Fragment49, jsx as jsx271, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
34025
34092
|
var MINIMIZED_WIDTH = 56;
|
|
34026
34093
|
var EXPANDED_WIDTH = 224;
|
|
34027
34094
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
@@ -34033,12 +34100,12 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34033
34100
|
STORAGE_KEY,
|
|
34034
34101
|
config.minimized ?? false
|
|
34035
34102
|
);
|
|
34036
|
-
const [tabletMinimized, setTabletMinimized] =
|
|
34103
|
+
const [tabletMinimized, setTabletMinimized] = useState84(true);
|
|
34037
34104
|
useEffect63(() => {
|
|
34038
34105
|
if (isTablet) setTabletMinimized(true);
|
|
34039
34106
|
}, [isTablet]);
|
|
34040
34107
|
const minimized = isTablet ? tabletMinimized : desktopMinimized;
|
|
34041
|
-
const [transitionsEnabled, setTransitionsEnabled] =
|
|
34108
|
+
const [transitionsEnabled, setTransitionsEnabled] = useState84(false);
|
|
34042
34109
|
const isOverlayOpen = isTablet && !minimized;
|
|
34043
34110
|
const showLabel = !minimized;
|
|
34044
34111
|
const handleToggle = useCallback33(() => {
|
|
@@ -34086,7 +34153,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34086
34153
|
return () => cancelAnimationFrame(id);
|
|
34087
34154
|
}
|
|
34088
34155
|
}, [isHydrated, transitionsEnabled]);
|
|
34089
|
-
return /* @__PURE__ */ jsxs213(
|
|
34156
|
+
return /* @__PURE__ */ jsxs213(Fragment49, { children: [
|
|
34090
34157
|
/* @__PURE__ */ jsx271(
|
|
34091
34158
|
"div",
|
|
34092
34159
|
{
|
|
@@ -34120,7 +34187,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
34120
34187
|
),
|
|
34121
34188
|
style: { width: sidebarWidth },
|
|
34122
34189
|
"aria-label": "Main navigation sidebar",
|
|
34123
|
-
children: isHydrated && /* @__PURE__ */ jsxs213(
|
|
34190
|
+
children: isHydrated && /* @__PURE__ */ jsxs213(Fragment49, { children: [
|
|
34124
34191
|
/* @__PURE__ */ jsx271(NavigationSidebarHeader, { minimized }),
|
|
34125
34192
|
/* @__PURE__ */ jsxs213("div", { className: "flex-1 flex flex-col justify-between py-4 overflow-y-auto", children: [
|
|
34126
34193
|
/* @__PURE__ */ jsx271("nav", { className: "flex flex-col", "aria-label": "Primary navigation", children: primaryItems.map((item) => /* @__PURE__ */ jsx271(
|
|
@@ -34528,11 +34595,11 @@ function NotificationsHeaderButton({
|
|
|
34528
34595
|
}
|
|
34529
34596
|
|
|
34530
34597
|
// src/components/navigation/app-layout.tsx
|
|
34531
|
-
import { createContext as createContext9, Suspense as Suspense2, useCallback as useCallback35, useContext as useContext9, useMemo as useMemo34, useRef as useRef45, useState as
|
|
34598
|
+
import { createContext as createContext9, Suspense as Suspense2, useCallback as useCallback35, useContext as useContext9, useMemo as useMemo34, useRef as useRef45, useState as useState85 } from "react";
|
|
34532
34599
|
|
|
34533
34600
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
34534
34601
|
import React110, { useCallback as useCallback34, useEffect as useEffect64 } from "react";
|
|
34535
|
-
import { Fragment as
|
|
34602
|
+
import { Fragment as Fragment50, jsx as jsx276, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
34536
34603
|
var HEADER_HEIGHT = 48;
|
|
34537
34604
|
var MobileBurgerMenu = React110.memo(function MobileBurgerMenu2({
|
|
34538
34605
|
isOpen,
|
|
@@ -34618,7 +34685,7 @@ var MobileBurgerMenu = React110.memo(function MobileBurgerMenu2({
|
|
|
34618
34685
|
row.length === 1 && /* @__PURE__ */ jsx276("div", { className: "flex-1" })
|
|
34619
34686
|
] }, rowIndex)) });
|
|
34620
34687
|
};
|
|
34621
|
-
return /* @__PURE__ */ jsxs218(
|
|
34688
|
+
return /* @__PURE__ */ jsxs218(Fragment50, { children: [
|
|
34622
34689
|
/* @__PURE__ */ jsx276(
|
|
34623
34690
|
"div",
|
|
34624
34691
|
{
|
|
@@ -34749,8 +34816,8 @@ function AppLayout({
|
|
|
34749
34816
|
disabled = false,
|
|
34750
34817
|
drawer
|
|
34751
34818
|
}) {
|
|
34752
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
34753
|
-
const [drawerContainer, setDrawerContainer] =
|
|
34819
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState85(false);
|
|
34820
|
+
const [drawerContainer, setDrawerContainer] = useState85(null);
|
|
34754
34821
|
const mobileMenuOpenRef = useRef45(mobileMenuOpen);
|
|
34755
34822
|
mobileMenuOpenRef.current = mobileMenuOpen;
|
|
34756
34823
|
const drawerHandlesRef = useRef45(/* @__PURE__ */ new Set());
|
|
@@ -35850,7 +35917,7 @@ import React113, { useRef as useRef47, useCallback as useCallback37 } from "reac
|
|
|
35850
35917
|
import React112 from "react";
|
|
35851
35918
|
init_button2();
|
|
35852
35919
|
init_cn();
|
|
35853
|
-
import { Fragment as
|
|
35920
|
+
import { Fragment as Fragment51, jsx as jsx287, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
35854
35921
|
function OnboardingStepCard({
|
|
35855
35922
|
step,
|
|
35856
35923
|
isCompleted,
|
|
@@ -35892,10 +35959,10 @@ function OnboardingStepCard({
|
|
|
35892
35959
|
/* @__PURE__ */ jsx287("h3", { className: "text-h4 text-ods-text-primary truncate", title: step.title, children: step.title }),
|
|
35893
35960
|
/* @__PURE__ */ jsx287("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate h-[20px]", title: step.description, children: step.description })
|
|
35894
35961
|
] }),
|
|
35895
|
-
/* @__PURE__ */ jsx287("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", onClick: (e) => e.stopPropagation(), children: isCheckingCompletion ? /* @__PURE__ */ jsxs229(
|
|
35962
|
+
/* @__PURE__ */ jsx287("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", onClick: (e) => e.stopPropagation(), children: isCheckingCompletion ? /* @__PURE__ */ jsxs229(Fragment51, { children: [
|
|
35896
35963
|
/* @__PURE__ */ jsx287("div", { className: "h-[32px] w-[100px] bg-ods-border rounded-[6px] animate-pulse" }),
|
|
35897
35964
|
/* @__PURE__ */ jsx287("div", { className: "h-[32px] w-[120px] bg-ods-border rounded-[6px] animate-pulse" })
|
|
35898
|
-
] }) : isCompleted ? /* @__PURE__ */ jsxs229(
|
|
35965
|
+
] }) : isCompleted ? /* @__PURE__ */ jsxs229(Fragment51, { children: [
|
|
35899
35966
|
/* @__PURE__ */ jsx287(
|
|
35900
35967
|
StatusBadge,
|
|
35901
35968
|
{
|
|
@@ -35914,14 +35981,14 @@ function OnboardingStepCard({
|
|
|
35914
35981
|
children: step.completedText
|
|
35915
35982
|
}
|
|
35916
35983
|
)
|
|
35917
|
-
] }) : isSkipped ? /* @__PURE__ */ jsx287(
|
|
35984
|
+
] }) : isSkipped ? /* @__PURE__ */ jsx287(Fragment51, { children: /* @__PURE__ */ jsx287(
|
|
35918
35985
|
StatusBadge,
|
|
35919
35986
|
{
|
|
35920
35987
|
text: "SKIPPED",
|
|
35921
35988
|
variant: "card",
|
|
35922
35989
|
colorScheme: "default"
|
|
35923
35990
|
}
|
|
35924
|
-
) }) : /* @__PURE__ */ jsxs229(
|
|
35991
|
+
) }) : /* @__PURE__ */ jsxs229(Fragment51, { children: [
|
|
35925
35992
|
/* @__PURE__ */ jsx287(
|
|
35926
35993
|
Button,
|
|
35927
35994
|
{
|
|
@@ -36310,7 +36377,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
|
|
|
36310
36377
|
] });
|
|
36311
36378
|
}
|
|
36312
36379
|
function ServiceCardRowItem({ row }) {
|
|
36313
|
-
const [revealed, setRevealed] =
|
|
36380
|
+
const [revealed, setRevealed] = useState87(false);
|
|
36314
36381
|
const { copy, copied } = useCopyToClipboard();
|
|
36315
36382
|
const actions = useMemo35(() => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
|
|
36316
36383
|
const displayValue = row.isSecret ? /* @__PURE__ */ jsx291(MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ jsx291("span", { children: row.value });
|
|
@@ -36928,7 +36995,7 @@ function getHideClasses(hideAt) {
|
|
|
36928
36995
|
}
|
|
36929
36996
|
|
|
36930
36997
|
// src/components/ui/table/table-header.tsx
|
|
36931
|
-
import { Fragment as
|
|
36998
|
+
import { Fragment as Fragment52, jsx as jsx301, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
36932
36999
|
function TableHeader({
|
|
36933
37000
|
columns,
|
|
36934
37001
|
className,
|
|
@@ -37039,10 +37106,10 @@ function TableHeader({
|
|
|
37039
37106
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
37040
37107
|
),
|
|
37041
37108
|
onClick: () => handleSort(column),
|
|
37042
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs240(
|
|
37109
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs240(Fragment52, { children: [
|
|
37043
37110
|
column.renderHeader(),
|
|
37044
37111
|
getSortIcon(column)
|
|
37045
|
-
] }) : /* @__PURE__ */ jsxs240(
|
|
37112
|
+
] }) : /* @__PURE__ */ jsxs240(Fragment52, { children: [
|
|
37046
37113
|
/* @__PURE__ */ jsx301("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
37047
37114
|
getSortIcon(column)
|
|
37048
37115
|
] })
|
|
@@ -37097,7 +37164,7 @@ function TableCell({
|
|
|
37097
37164
|
|
|
37098
37165
|
// src/components/ui/table/table-skeleton.tsx
|
|
37099
37166
|
init_cn();
|
|
37100
|
-
import { Fragment as
|
|
37167
|
+
import { Fragment as Fragment53, jsx as jsx303, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
37101
37168
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
37102
37169
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
37103
37170
|
function TableCardSkeleton({
|
|
@@ -37109,7 +37176,7 @@ function TableCardSkeleton({
|
|
|
37109
37176
|
rowClassName
|
|
37110
37177
|
}) {
|
|
37111
37178
|
const primaryKey = (columns.find((c) => /flex-(1|\[)/.test(c.width || "")) ?? columns[0])?.key;
|
|
37112
|
-
return /* @__PURE__ */ jsx303(
|
|
37179
|
+
return /* @__PURE__ */ jsx303(Fragment53, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs241(
|
|
37113
37180
|
"div",
|
|
37114
37181
|
{
|
|
37115
37182
|
className: cn(
|
|
@@ -37270,9 +37337,9 @@ function TableRow({
|
|
|
37270
37337
|
}
|
|
37271
37338
|
|
|
37272
37339
|
// src/components/ui/table/use-table-motion.ts
|
|
37273
|
-
import { useEffect as useEffect66, useState as
|
|
37340
|
+
import { useEffect as useEffect66, useState as useState88 } from "react";
|
|
37274
37341
|
function useTableMotion(enabled) {
|
|
37275
|
-
const [runtime, setRuntime] =
|
|
37342
|
+
const [runtime, setRuntime] = useState88(null);
|
|
37276
37343
|
useEffect66(() => {
|
|
37277
37344
|
if (!enabled || runtime) return;
|
|
37278
37345
|
let active = true;
|
|
@@ -37288,7 +37355,7 @@ function useTableMotion(enabled) {
|
|
|
37288
37355
|
}
|
|
37289
37356
|
|
|
37290
37357
|
// src/components/ui/table/table.tsx
|
|
37291
|
-
import { Fragment as
|
|
37358
|
+
import { Fragment as Fragment54, jsx as jsx305, jsxs as jsxs243 } from "react/jsx-runtime";
|
|
37292
37359
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
37293
37360
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
37294
37361
|
const result = [...columns];
|
|
@@ -37490,7 +37557,7 @@ function Table({
|
|
|
37490
37557
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
37491
37558
|
hasChevron: Boolean(rowHref)
|
|
37492
37559
|
}
|
|
37493
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx305(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs243(
|
|
37560
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx305(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs243(Fragment54, { children: [
|
|
37494
37561
|
(() => {
|
|
37495
37562
|
const rows = data.map((item, index) => /* @__PURE__ */ jsx305(
|
|
37496
37563
|
TableRow,
|
|
@@ -37640,7 +37707,7 @@ import { useMemo as useMemo36 } from "react";
|
|
|
37640
37707
|
|
|
37641
37708
|
// src/components/ui/query-report-table/query-report-table-header.tsx
|
|
37642
37709
|
init_cn();
|
|
37643
|
-
import { useRef as useRef50, useState as
|
|
37710
|
+
import { useRef as useRef50, useState as useState89, useCallback as useCallback38 } from "react";
|
|
37644
37711
|
import { jsx as jsx308, jsxs as jsxs245 } from "react/jsx-runtime";
|
|
37645
37712
|
function QueryReportTableHeader({
|
|
37646
37713
|
columns,
|
|
@@ -37670,7 +37737,7 @@ function QueryReportTableHeader({
|
|
|
37670
37737
|
}
|
|
37671
37738
|
function TruncatedHeaderCell({ value, width }) {
|
|
37672
37739
|
const textRef = useRef50(null);
|
|
37673
|
-
const [isTruncated, setIsTruncated] =
|
|
37740
|
+
const [isTruncated, setIsTruncated] = useState89(false);
|
|
37674
37741
|
const checkTruncation = useCallback38(() => {
|
|
37675
37742
|
const el = textRef.current;
|
|
37676
37743
|
if (el) {
|
|
@@ -37699,7 +37766,7 @@ function TruncatedHeaderCell({ value, width }) {
|
|
|
37699
37766
|
|
|
37700
37767
|
// src/components/ui/query-report-table/query-report-table-row.tsx
|
|
37701
37768
|
init_cn();
|
|
37702
|
-
import { useRef as useRef51, useState as
|
|
37769
|
+
import { useRef as useRef51, useState as useState90, useCallback as useCallback39 } from "react";
|
|
37703
37770
|
import { jsx as jsx309, jsxs as jsxs246 } from "react/jsx-runtime";
|
|
37704
37771
|
function QueryReportTableRow({
|
|
37705
37772
|
row,
|
|
@@ -37746,7 +37813,7 @@ function QueryReportTableRow({
|
|
|
37746
37813
|
}
|
|
37747
37814
|
function TruncatedCell({ value, className }) {
|
|
37748
37815
|
const textRef = useRef51(null);
|
|
37749
|
-
const [isTruncated, setIsTruncated] =
|
|
37816
|
+
const [isTruncated, setIsTruncated] = useState90(false);
|
|
37750
37817
|
const checkTruncation = useCallback39(() => {
|
|
37751
37818
|
const el = textRef.current;
|
|
37752
37819
|
if (el) {
|
|
@@ -38117,7 +38184,7 @@ function DataTableColumnFilter({
|
|
|
38117
38184
|
}
|
|
38118
38185
|
|
|
38119
38186
|
// src/components/ui/data-table/data-table-header.tsx
|
|
38120
|
-
import { Fragment as
|
|
38187
|
+
import { Fragment as Fragment55, jsx as jsx314, jsxs as jsxs250 } from "react/jsx-runtime";
|
|
38121
38188
|
function DataTableHeader({
|
|
38122
38189
|
className,
|
|
38123
38190
|
stickyHeader,
|
|
@@ -38211,7 +38278,7 @@ function HeaderLabel({ header }) {
|
|
|
38211
38278
|
if (typeof headerDef === "string") {
|
|
38212
38279
|
return /* @__PURE__ */ jsx314("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
|
|
38213
38280
|
}
|
|
38214
|
-
return /* @__PURE__ */ jsx314(
|
|
38281
|
+
return /* @__PURE__ */ jsx314(Fragment55, { children: flexRender(headerDef, header.getContext()) });
|
|
38215
38282
|
}
|
|
38216
38283
|
function SortIcon({ sorted }) {
|
|
38217
38284
|
if (sorted === "asc") return /* @__PURE__ */ jsx314(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -38250,7 +38317,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
38250
38317
|
|
|
38251
38318
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
38252
38319
|
init_cn();
|
|
38253
|
-
import { Fragment as
|
|
38320
|
+
import { Fragment as Fragment56, jsx as jsx316, jsxs as jsxs251 } from "react/jsx-runtime";
|
|
38254
38321
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
38255
38322
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
38256
38323
|
function DataTableSkeleton({
|
|
@@ -38261,7 +38328,7 @@ function DataTableSkeleton({
|
|
|
38261
38328
|
const table = useDataTableContext();
|
|
38262
38329
|
const columns = table.getVisibleFlatColumns();
|
|
38263
38330
|
const firstColumnId = columns[0]?.id;
|
|
38264
|
-
return /* @__PURE__ */ jsx316(
|
|
38331
|
+
return /* @__PURE__ */ jsx316(Fragment56, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs251(
|
|
38265
38332
|
"div",
|
|
38266
38333
|
{
|
|
38267
38334
|
className: cn(
|
|
@@ -38317,7 +38384,7 @@ function DataTableSkeleton({
|
|
|
38317
38384
|
}
|
|
38318
38385
|
|
|
38319
38386
|
// src/components/ui/data-table/data-table-row.tsx
|
|
38320
|
-
import { Fragment as
|
|
38387
|
+
import { Fragment as Fragment57, jsx as jsx317, jsxs as jsxs252 } from "react/jsx-runtime";
|
|
38321
38388
|
function DataTableRowImpl({
|
|
38322
38389
|
row,
|
|
38323
38390
|
onClick,
|
|
@@ -38418,7 +38485,7 @@ function CellContent({ children }) {
|
|
|
38418
38485
|
if (typeof children === "string" || typeof children === "number") {
|
|
38419
38486
|
return /* @__PURE__ */ jsx317("span", { className: "text-h4 text-ods-text-primary truncate", title: String(children), children });
|
|
38420
38487
|
}
|
|
38421
|
-
return /* @__PURE__ */ jsx317(
|
|
38488
|
+
return /* @__PURE__ */ jsx317(Fragment57, { children });
|
|
38422
38489
|
}
|
|
38423
38490
|
|
|
38424
38491
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -38496,7 +38563,7 @@ function DataTableBody({
|
|
|
38496
38563
|
|
|
38497
38564
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
38498
38565
|
import { useEffect as useEffect68, useRef as useRef53 } from "react";
|
|
38499
|
-
import { Fragment as
|
|
38566
|
+
import { Fragment as Fragment58, jsx as jsx319, jsxs as jsxs254 } from "react/jsx-runtime";
|
|
38500
38567
|
function DataTableInfiniteFooter({
|
|
38501
38568
|
hasNextPage,
|
|
38502
38569
|
isFetchingNextPage,
|
|
@@ -38520,7 +38587,7 @@ function DataTableInfiniteFooter({
|
|
|
38520
38587
|
observer.observe(sentinel);
|
|
38521
38588
|
return () => observer.disconnect();
|
|
38522
38589
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
38523
|
-
return /* @__PURE__ */ jsxs254(
|
|
38590
|
+
return /* @__PURE__ */ jsxs254(Fragment58, { children: [
|
|
38524
38591
|
isFetchingNextPage && /* @__PURE__ */ jsx319(DataTableSkeleton, { rows: skeletonRows }),
|
|
38525
38592
|
hasNextPage && /* @__PURE__ */ jsx319("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
38526
38593
|
] });
|
|
@@ -39143,7 +39210,7 @@ function FilterList({
|
|
|
39143
39210
|
import {
|
|
39144
39211
|
useEffect as useEffect70,
|
|
39145
39212
|
useRef as useRef55,
|
|
39146
|
-
useState as
|
|
39213
|
+
useState as useState92
|
|
39147
39214
|
} from "react";
|
|
39148
39215
|
init_cn();
|
|
39149
39216
|
import { jsx as jsx323, jsxs as jsxs258 } from "react/jsx-runtime";
|
|
@@ -39180,7 +39247,7 @@ function TagSearchInput({
|
|
|
39180
39247
|
const wrapperRef = useRef55(null);
|
|
39181
39248
|
const hiddenTagsRef = useRef55(null);
|
|
39182
39249
|
const hiddenTagsPopupRef = useRef55(null);
|
|
39183
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
39250
|
+
const [showHiddenTags, setShowHiddenTags] = useState92(false);
|
|
39184
39251
|
useEffect70(() => {
|
|
39185
39252
|
if (!showHiddenTags) return;
|
|
39186
39253
|
const handleClick = (e) => {
|
|
@@ -39336,7 +39403,7 @@ function TagSearchInput({
|
|
|
39336
39403
|
}
|
|
39337
39404
|
|
|
39338
39405
|
// src/components/ui/markdown-editor.tsx
|
|
39339
|
-
import { useRef as useRef56, useCallback as useCallback42, useState as
|
|
39406
|
+
import { useRef as useRef56, useCallback as useCallback42, useState as useState93, useEffect as useEffect71 } from "react";
|
|
39340
39407
|
init_cn();
|
|
39341
39408
|
import { Loader2 as Loader29, Upload as Upload8 } from "lucide-react";
|
|
39342
39409
|
import { jsx as jsx324, jsxs as jsxs259 } from "react/jsx-runtime";
|
|
@@ -39392,9 +39459,9 @@ function MarkdownEditor({
|
|
|
39392
39459
|
renderPreview
|
|
39393
39460
|
}) {
|
|
39394
39461
|
const fileInputRef = useRef56(null);
|
|
39395
|
-
const [isUploading, setIsUploading] =
|
|
39396
|
-
const [uploadProgress, setUploadProgress] =
|
|
39397
|
-
const [defaultExtraCommands, setDefaultExtraCommands] =
|
|
39462
|
+
const [isUploading, setIsUploading] = useState93(false);
|
|
39463
|
+
const [uploadProgress, setUploadProgress] = useState93("");
|
|
39464
|
+
const [defaultExtraCommands, setDefaultExtraCommands] = useState93([]);
|
|
39398
39465
|
useEffect71(() => {
|
|
39399
39466
|
import("@uiw/react-md-editor").then((mod) => {
|
|
39400
39467
|
if (mod.commands?.getExtraCommands) {
|
|
@@ -39930,7 +39997,7 @@ function FileUpload({
|
|
|
39930
39997
|
import * as React124 from "react";
|
|
39931
39998
|
import { Loader2 as Loader211 } from "lucide-react";
|
|
39932
39999
|
init_cn();
|
|
39933
|
-
import { Fragment as
|
|
40000
|
+
import { Fragment as Fragment60, jsx as jsx326, jsxs as jsxs261 } from "react/jsx-runtime";
|
|
39934
40001
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
39935
40002
|
function formatSize(bytes) {
|
|
39936
40003
|
const mb = bytes / (1024 * 1024);
|
|
@@ -40058,7 +40125,7 @@ function ImageUploader({
|
|
|
40058
40125
|
!hasImage && !interactive && "cursor-not-allowed",
|
|
40059
40126
|
dropzoneClassName
|
|
40060
40127
|
),
|
|
40061
|
-
children: hasImage ? /* @__PURE__ */ jsxs261(
|
|
40128
|
+
children: hasImage ? /* @__PURE__ */ jsxs261(Fragment60, { children: [
|
|
40062
40129
|
/* @__PURE__ */ jsx326("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx326(
|
|
40063
40130
|
"img",
|
|
40064
40131
|
{
|
|
@@ -40095,7 +40162,7 @@ function ImageUploader({
|
|
|
40095
40162
|
)
|
|
40096
40163
|
] }),
|
|
40097
40164
|
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" }) })
|
|
40098
|
-
] }) : loading ? /* @__PURE__ */ jsx326(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs261(
|
|
40165
|
+
] }) : loading ? /* @__PURE__ */ jsx326(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs261(Fragment60, { children: [
|
|
40099
40166
|
/* @__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" }) }),
|
|
40100
40167
|
/* @__PURE__ */ jsxs261("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
40101
40168
|
/* @__PURE__ */ jsx326("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -40165,7 +40232,7 @@ PopoverContent.displayName = PopoverPrimitive7.Content.displayName;
|
|
|
40165
40232
|
|
|
40166
40233
|
// src/components/ui/color-preset-select.tsx
|
|
40167
40234
|
init_cn();
|
|
40168
|
-
import { Fragment as
|
|
40235
|
+
import { Fragment as Fragment61, jsx as jsx328, jsxs as jsxs262 } from "react/jsx-runtime";
|
|
40169
40236
|
var TICKET_STATUS_COLOR_PRESETS = [
|
|
40170
40237
|
{ key: "green", label: "Green", color: "#5ea62e" },
|
|
40171
40238
|
{ key: "lime", label: "Lime", color: "#8bc34a" },
|
|
@@ -40316,7 +40383,7 @@ function RgbInputs({ value, onChange }) {
|
|
|
40316
40383
|
const b = next.b ?? rgb.b;
|
|
40317
40384
|
onChange(rgbToHex(r, g, b));
|
|
40318
40385
|
};
|
|
40319
|
-
return /* @__PURE__ */ jsxs262(
|
|
40386
|
+
return /* @__PURE__ */ jsxs262(Fragment61, { children: [
|
|
40320
40387
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.r, min: 0, max: 255, ariaLabel: "Red", onCommit: (r) => update({ r }) }),
|
|
40321
40388
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.g, min: 0, max: 255, ariaLabel: "Green", onCommit: (g) => update({ g }) }),
|
|
40322
40389
|
/* @__PURE__ */ jsx328(ChannelInput, { value: rgb.b, min: 0, max: 255, ariaLabel: "Blue", onCommit: (b) => update({ b }) })
|
|
@@ -40332,7 +40399,7 @@ function HslInputs({ value, onChange }) {
|
|
|
40332
40399
|
const out = hslToRgb(h, s, l);
|
|
40333
40400
|
onChange(rgbToHex(out.r, out.g, out.b));
|
|
40334
40401
|
};
|
|
40335
|
-
return /* @__PURE__ */ jsxs262(
|
|
40402
|
+
return /* @__PURE__ */ jsxs262(Fragment61, { children: [
|
|
40336
40403
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.h, min: 0, max: 360, ariaLabel: "Hue", onCommit: (h) => update({ h }) }),
|
|
40337
40404
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.s, min: 0, max: 100, ariaLabel: "Saturation", onCommit: (s) => update({ s }) }),
|
|
40338
40405
|
/* @__PURE__ */ jsx328(ChannelInput, { value: hsl.l, min: 0, max: 100, ariaLabel: "Lightness", onCommit: (l) => update({ l }) })
|
|
@@ -40629,7 +40696,7 @@ init_cn();
|
|
|
40629
40696
|
// src/components/ui/ticket-note-card.tsx
|
|
40630
40697
|
import * as React128 from "react";
|
|
40631
40698
|
init_cn();
|
|
40632
|
-
import { Fragment as
|
|
40699
|
+
import { Fragment as Fragment62, jsx as jsx332, jsxs as jsxs266 } from "react/jsx-runtime";
|
|
40633
40700
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
40634
40701
|
const [isEditing, setIsEditing] = React128.useState(false);
|
|
40635
40702
|
const [editText, setEditText] = React128.useState(note.text);
|
|
@@ -40703,7 +40770,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
40703
40770
|
children: /* @__PURE__ */ jsx332(XmarkIcon, { className: "size-5" })
|
|
40704
40771
|
}
|
|
40705
40772
|
)
|
|
40706
|
-
] }) : /* @__PURE__ */ jsxs266(
|
|
40773
|
+
] }) : /* @__PURE__ */ jsxs266(Fragment62, { children: [
|
|
40707
40774
|
/* @__PURE__ */ jsx332("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
40708
40775
|
/* @__PURE__ */ jsxs266(
|
|
40709
40776
|
"p",
|
|
@@ -40810,7 +40877,7 @@ function TicketNotesSection({
|
|
|
40810
40877
|
}
|
|
40811
40878
|
|
|
40812
40879
|
// src/components/ui/ticket-info-section.tsx
|
|
40813
|
-
import { Fragment as
|
|
40880
|
+
import { Fragment as Fragment63, jsx as jsx334, jsxs as jsxs268 } from "react/jsx-runtime";
|
|
40814
40881
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
40815
40882
|
return /* @__PURE__ */ jsx334("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs268("div", { className: "flex flex-col justify-center", children: [
|
|
40816
40883
|
/* @__PURE__ */ jsxs268("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -40935,7 +41002,7 @@ function TicketInfoSection({
|
|
|
40935
41002
|
)
|
|
40936
41003
|
] })
|
|
40937
41004
|
] }),
|
|
40938
|
-
expanded && /* @__PURE__ */ jsxs268(
|
|
41005
|
+
expanded && /* @__PURE__ */ jsxs268(Fragment63, { children: [
|
|
40939
41006
|
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" }) }),
|
|
40940
41007
|
/* @__PURE__ */ jsxs268("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
40941
41008
|
description && /* @__PURE__ */ jsx334(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -40993,14 +41060,14 @@ function FilterPillRow({
|
|
|
40993
41060
|
|
|
40994
41061
|
// src/components/ui/image-gallery-modal.tsx
|
|
40995
41062
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight10 } from "lucide-react";
|
|
40996
|
-
import { Fragment as
|
|
41063
|
+
import { Fragment as Fragment64, jsx as jsx336, jsxs as jsxs270 } from "react/jsx-runtime";
|
|
40997
41064
|
function ImageGalleryModal({
|
|
40998
41065
|
images,
|
|
40999
41066
|
isOpen,
|
|
41000
41067
|
onClose,
|
|
41001
41068
|
initialIndex = 0
|
|
41002
41069
|
}) {
|
|
41003
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
41070
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState100(initialIndex);
|
|
41004
41071
|
useEffect74(() => {
|
|
41005
41072
|
if (isOpen) {
|
|
41006
41073
|
setSelectedImageIndex(initialIndex);
|
|
@@ -41049,7 +41116,7 @@ function ImageGalleryModal({
|
|
|
41049
41116
|
onClose,
|
|
41050
41117
|
className: "max-w-[95vw]",
|
|
41051
41118
|
children: /* @__PURE__ */ jsxs270("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
41052
|
-
images.length > 1 && /* @__PURE__ */ jsxs270(
|
|
41119
|
+
images.length > 1 && /* @__PURE__ */ jsxs270(Fragment64, { children: [
|
|
41053
41120
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx336("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx336(
|
|
41054
41121
|
Button,
|
|
41055
41122
|
{
|
|
@@ -41167,7 +41234,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
|
41167
41234
|
}
|
|
41168
41235
|
|
|
41169
41236
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
41170
|
-
import { Fragment as
|
|
41237
|
+
import { Fragment as Fragment65, jsx as jsx338, jsxs as jsxs271 } from "react/jsx-runtime";
|
|
41171
41238
|
function RoadmapCardSkeleton({ size: size2 = "default" }) {
|
|
41172
41239
|
if (size2 === "sm") {
|
|
41173
41240
|
return /* @__PURE__ */ jsxs271("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -41219,7 +41286,7 @@ function RoadmapCard({
|
|
|
41219
41286
|
onVote,
|
|
41220
41287
|
isVoting = false
|
|
41221
41288
|
}) {
|
|
41222
|
-
const [showScreenshots, setShowScreenshots] =
|
|
41289
|
+
const [showScreenshots, setShowScreenshots] = useState101(false);
|
|
41223
41290
|
const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
|
|
41224
41291
|
const iconSrc = logoUrl ? getProxiedImageUrl(logoUrl, { directHttps: true }) || logoUrl : null;
|
|
41225
41292
|
if (size2 === "sm") {
|
|
@@ -41229,7 +41296,7 @@ function RoadmapCard({
|
|
|
41229
41296
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
41230
41297
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
41231
41298
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
41232
|
-
const body = /* @__PURE__ */ jsxs271(
|
|
41299
|
+
const body = /* @__PURE__ */ jsxs271(Fragment65, { children: [
|
|
41233
41300
|
/* @__PURE__ */ jsx338(
|
|
41234
41301
|
"span",
|
|
41235
41302
|
{
|
|
@@ -41421,7 +41488,7 @@ function RoadmapCard({
|
|
|
41421
41488
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
41422
41489
|
import React131 from "react";
|
|
41423
41490
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink8 } from "lucide-react";
|
|
41424
|
-
import { Fragment as
|
|
41491
|
+
import { Fragment as Fragment66, jsx as jsx339, jsxs as jsxs272 } from "react/jsx-runtime";
|
|
41425
41492
|
function parseRepoFromUrl(url) {
|
|
41426
41493
|
if (!url) return null;
|
|
41427
41494
|
try {
|
|
@@ -41553,7 +41620,7 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
41553
41620
|
if (repo) metaParts.push(/* @__PURE__ */ jsx339("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
41554
41621
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx339("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41555
41622
|
const href = safeHref(item.url);
|
|
41556
|
-
const body = /* @__PURE__ */ jsxs272(
|
|
41623
|
+
const body = /* @__PURE__ */ jsxs272(Fragment66, { children: [
|
|
41557
41624
|
/* @__PURE__ */ jsx339("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
41558
41625
|
/* @__PURE__ */ jsxs272("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41559
41626
|
/* @__PURE__ */ jsxs272("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
@@ -41608,7 +41675,7 @@ function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
|
41608
41675
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
41609
41676
|
import React132 from "react";
|
|
41610
41677
|
import { ExternalLink as ExternalLink9, Hash } from "lucide-react";
|
|
41611
|
-
import { Fragment as
|
|
41678
|
+
import { Fragment as Fragment67, jsx as jsx340, jsxs as jsxs273 } from "react/jsx-runtime";
|
|
41612
41679
|
function parseChannelFromUrl(url) {
|
|
41613
41680
|
if (!url) return null;
|
|
41614
41681
|
try {
|
|
@@ -41647,7 +41714,7 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
41647
41714
|
}
|
|
41648
41715
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx340("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41649
41716
|
const href = safeHref(item.url);
|
|
41650
|
-
const body = /* @__PURE__ */ jsxs273(
|
|
41717
|
+
const body = /* @__PURE__ */ jsxs273(Fragment67, { children: [
|
|
41651
41718
|
/* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx340(SlackIcon, { className: "h-5 w-5" }) }),
|
|
41652
41719
|
/* @__PURE__ */ jsxs273("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41653
41720
|
/* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx340("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
@@ -41697,7 +41764,7 @@ function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
|
41697
41764
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
41698
41765
|
import React133 from "react";
|
|
41699
41766
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
41700
|
-
import { Fragment as
|
|
41767
|
+
import { Fragment as Fragment68, jsx as jsx341, jsxs as jsxs274 } from "react/jsx-runtime";
|
|
41701
41768
|
function formatToken(token) {
|
|
41702
41769
|
if (!token) return null;
|
|
41703
41770
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -41736,7 +41803,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
41736
41803
|
}
|
|
41737
41804
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx341("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
41738
41805
|
const href = safeHref(item.url);
|
|
41739
|
-
const body = /* @__PURE__ */ jsxs274(
|
|
41806
|
+
const body = /* @__PURE__ */ jsxs274(Fragment68, { children: [
|
|
41740
41807
|
/* @__PURE__ */ jsxs274("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41741
41808
|
/* @__PURE__ */ jsxs274("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
41742
41809
|
/* @__PURE__ */ jsx341("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -41816,9 +41883,9 @@ function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
|
41816
41883
|
|
|
41817
41884
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
41818
41885
|
import { ExternalLink as ExternalLink11 } from "lucide-react";
|
|
41819
|
-
import { Fragment as
|
|
41886
|
+
import { Fragment as Fragment69, jsx as jsx342, jsxs as jsxs275 } from "react/jsx-runtime";
|
|
41820
41887
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
41821
|
-
const body = /* @__PURE__ */ jsxs275(
|
|
41888
|
+
const body = /* @__PURE__ */ jsxs275(Fragment69, { children: [
|
|
41822
41889
|
/* @__PURE__ */ jsxs275("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
41823
41890
|
/* @__PURE__ */ jsxs275("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
41824
41891
|
/* @__PURE__ */ jsx342("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -41855,7 +41922,7 @@ function DataRoomDocCardSkeleton({ className }) {
|
|
|
41855
41922
|
}
|
|
41856
41923
|
|
|
41857
41924
|
// src/components/chat/entity-cards/program-card.tsx
|
|
41858
|
-
import { useState as
|
|
41925
|
+
import { useState as useState102 } from "react";
|
|
41859
41926
|
|
|
41860
41927
|
// node_modules/date-fns/toDate.mjs
|
|
41861
41928
|
function toDate(argument) {
|
|
@@ -43428,7 +43495,7 @@ function cleanEscapedString(input) {
|
|
|
43428
43495
|
init_button();
|
|
43429
43496
|
import { ExternalLink as ExternalLink12, Clock as Clock2, Play as Play4, Video as Video8 } from "lucide-react";
|
|
43430
43497
|
init_cn();
|
|
43431
|
-
import { Fragment as
|
|
43498
|
+
import { Fragment as Fragment70, jsx as jsx343, jsxs as jsxs276 } from "react/jsx-runtime";
|
|
43432
43499
|
function formatUtc(date, fmt) {
|
|
43433
43500
|
return format(new Date(date.getTime() + date.getTimezoneOffset() * 6e4), fmt);
|
|
43434
43501
|
}
|
|
@@ -43492,8 +43559,8 @@ function getHosts(hosts) {
|
|
|
43492
43559
|
return [];
|
|
43493
43560
|
}
|
|
43494
43561
|
function MediaGallery({ images, title }) {
|
|
43495
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
43496
|
-
const [isModalOpen, setIsModalOpen] =
|
|
43562
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState102(null);
|
|
43563
|
+
const [isModalOpen, setIsModalOpen] = useState102(false);
|
|
43497
43564
|
const openImageModal = (index, event) => {
|
|
43498
43565
|
if (event) event.stopPropagation();
|
|
43499
43566
|
setSelectedImageIndex(index);
|
|
@@ -43503,7 +43570,7 @@ function MediaGallery({ images, title }) {
|
|
|
43503
43570
|
setIsModalOpen(false);
|
|
43504
43571
|
setSelectedImageIndex(null);
|
|
43505
43572
|
};
|
|
43506
|
-
return /* @__PURE__ */ jsxs276(
|
|
43573
|
+
return /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43507
43574
|
/* @__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(
|
|
43508
43575
|
"div",
|
|
43509
43576
|
{
|
|
@@ -43620,7 +43687,7 @@ function ProgramCard({
|
|
|
43620
43687
|
const dateFormat = formatUtc(itemDate, "EEEE d MMMM");
|
|
43621
43688
|
const defaultRenderMeta = () => {
|
|
43622
43689
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
43623
|
-
return /* @__PURE__ */ jsxs276(
|
|
43690
|
+
return /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43624
43691
|
/* @__PURE__ */ jsx343(Clock2, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
43625
43692
|
/* @__PURE__ */ jsx343("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
43626
43693
|
] });
|
|
@@ -43631,7 +43698,7 @@ function ProgramCard({
|
|
|
43631
43698
|
if (config.type === "webinar" && "start_at" in item) {
|
|
43632
43699
|
const webinarItem = item;
|
|
43633
43700
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
43634
|
-
return /* @__PURE__ */ jsxs276(
|
|
43701
|
+
return /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43635
43702
|
/* @__PURE__ */ jsx343(Video8, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
43636
43703
|
/* @__PURE__ */ jsxs276("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: [
|
|
43637
43704
|
formatTimeWithTimezone(webinarItem.start_at, webinarItem.timezone ?? null),
|
|
@@ -43665,10 +43732,10 @@ function ProgramCard({
|
|
|
43665
43732
|
/* @__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 }),
|
|
43666
43733
|
/* @__PURE__ */ jsxs276("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
43667
43734
|
/* @__PURE__ */ jsx343("span", { className: "font-['DM_Sans'] font-medium", style: { color: accentColor }, children: dateFormat }),
|
|
43668
|
-
renderMeta ? /* @__PURE__ */ jsxs276(
|
|
43735
|
+
renderMeta ? /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43669
43736
|
/* @__PURE__ */ jsx343("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
43670
43737
|
renderMeta(item)
|
|
43671
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs276(
|
|
43738
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs276(Fragment70, { children: [
|
|
43672
43739
|
/* @__PURE__ */ jsx343("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
43673
43740
|
/* @__PURE__ */ jsx343("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
43674
43741
|
] })
|
|
@@ -43745,10 +43812,10 @@ function ProgramCard({
|
|
|
43745
43812
|
|
|
43746
43813
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
43747
43814
|
import { Megaphone as Megaphone3 } from "lucide-react";
|
|
43748
|
-
import { Fragment as
|
|
43815
|
+
import { Fragment as Fragment71, jsx as jsx344, jsxs as jsxs277 } from "react/jsx-runtime";
|
|
43749
43816
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
43750
43817
|
const goalsCount = campaign.goals?.length || 0;
|
|
43751
|
-
const innerChildren = /* @__PURE__ */ jsxs277(
|
|
43818
|
+
const innerChildren = /* @__PURE__ */ jsxs277(Fragment71, { children: [
|
|
43752
43819
|
/* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx344(Megaphone3, { className: "h-5 w-5" }) }),
|
|
43753
43820
|
/* @__PURE__ */ jsxs277("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
43754
43821
|
/* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx344("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
@@ -43778,11 +43845,11 @@ function CampaignCardAdminSkeleton({ className }) {
|
|
|
43778
43845
|
|
|
43779
43846
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
43780
43847
|
import { ExternalLink as ExternalLink13 } from "lucide-react";
|
|
43781
|
-
import { Fragment as
|
|
43848
|
+
import { Fragment as Fragment72, jsx as jsx345, jsxs as jsxs278 } from "react/jsx-runtime";
|
|
43782
43849
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
43783
43850
|
const href = safeHref(item.url);
|
|
43784
43851
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
43785
|
-
const body = /* @__PURE__ */ jsxs278(
|
|
43852
|
+
const body = /* @__PURE__ */ jsxs278(Fragment72, { children: [
|
|
43786
43853
|
/* @__PURE__ */ jsxs278("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
43787
43854
|
/* @__PURE__ */ jsxs278("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
43788
43855
|
/* @__PURE__ */ jsx345("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -43967,7 +44034,7 @@ function resolveSourceIcon(input, ctx = {}) {
|
|
|
43967
44034
|
|
|
43968
44035
|
// src/components/chat/mingo-info-card.tsx
|
|
43969
44036
|
init_cn();
|
|
43970
|
-
import { Fragment as
|
|
44037
|
+
import { Fragment as Fragment73, jsx as jsx346, jsxs as jsxs279 } from "react/jsx-runtime";
|
|
43971
44038
|
function CardMedia({
|
|
43972
44039
|
imageSrc,
|
|
43973
44040
|
imageAlt,
|
|
@@ -44011,7 +44078,7 @@ function MingoInfoCard({
|
|
|
44011
44078
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
44012
44079
|
const isAnchor = !!anchorProps;
|
|
44013
44080
|
const isInteractive = isAnchor || !!onClick;
|
|
44014
|
-
const content = /* @__PURE__ */ jsxs279(
|
|
44081
|
+
const content = /* @__PURE__ */ jsxs279(Fragment73, { children: [
|
|
44015
44082
|
hasMedia && /* @__PURE__ */ jsx346(CardMedia, { imageSrc, imageAlt, icon }),
|
|
44016
44083
|
/* @__PURE__ */ jsxs279("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
44017
44084
|
/* @__PURE__ */ jsx346("span", { className: "truncate text-h4 font-medium text-ods-text-primary", children: title }),
|
|
@@ -44060,7 +44127,7 @@ function MingoInfoCard({
|
|
|
44060
44127
|
}
|
|
44061
44128
|
|
|
44062
44129
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
44063
|
-
import { Fragment as
|
|
44130
|
+
import { Fragment as Fragment74, jsx as jsx347, jsxs as jsxs280 } from "react/jsx-runtime";
|
|
44064
44131
|
function githubKindIcon(kind) {
|
|
44065
44132
|
switch (kind) {
|
|
44066
44133
|
case "pull_request":
|
|
@@ -45028,10 +45095,10 @@ function ChatCardLoader({
|
|
|
45028
45095
|
}
|
|
45029
45096
|
);
|
|
45030
45097
|
}
|
|
45031
|
-
if (isLoading) return /* @__PURE__ */ jsx347(
|
|
45098
|
+
if (isLoading) return /* @__PURE__ */ jsx347(Fragment74, { children: entry.skeleton() });
|
|
45032
45099
|
if (!item) return null;
|
|
45033
45100
|
if (entry.bareInline) {
|
|
45034
|
-
return /* @__PURE__ */ jsx347(
|
|
45101
|
+
return /* @__PURE__ */ jsx347(Fragment74, { children: navWrap(entry.render(item, finalChatRef, renderOpts)) });
|
|
45035
45102
|
}
|
|
45036
45103
|
return /* @__PURE__ */ jsx347(
|
|
45037
45104
|
ChatCardWithDiscuss,
|
|
@@ -45278,7 +45345,7 @@ function useChunkCatchup({
|
|
|
45278
45345
|
}
|
|
45279
45346
|
|
|
45280
45347
|
// src/components/chat/hooks/use-jetstream-dialog-subscription.ts
|
|
45281
|
-
import { useEffect as useEffect75, useRef as useRef61, useState as
|
|
45348
|
+
import { useEffect as useEffect75, useRef as useRef61, useState as useState103 } from "react";
|
|
45282
45349
|
var DEFAULT_INACTIVE_THRESHOLD_MS = 5 * 6e4;
|
|
45283
45350
|
var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
|
|
45284
45351
|
function useJetStreamDialogSubscription({
|
|
@@ -45297,10 +45364,10 @@ function useJetStreamDialogSubscription({
|
|
|
45297
45364
|
reconnectionBackoff,
|
|
45298
45365
|
inactiveThresholdMs
|
|
45299
45366
|
}) {
|
|
45300
|
-
const [isConnected, setIsConnected] =
|
|
45301
|
-
const [isSubscribed, setIsSubscribed] =
|
|
45302
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
45303
|
-
const [currentStreamSeq, setCurrentStreamSeq] =
|
|
45367
|
+
const [isConnected, setIsConnected] = useState103(false);
|
|
45368
|
+
const [isSubscribed, setIsSubscribed] = useState103(false);
|
|
45369
|
+
const [reconnectionCount, setReconnectionCount] = useState103(0);
|
|
45370
|
+
const [currentStreamSeq, setCurrentStreamSeq] = useState103(null);
|
|
45304
45371
|
const clientRef = useRef61(null);
|
|
45305
45372
|
const subscriptionRef = useRef61(null);
|
|
45306
45373
|
const highestStreamSeqRef = useRef61(null);
|
|
@@ -45519,7 +45586,7 @@ function useJetStreamDialogSubscription({
|
|
|
45519
45586
|
}
|
|
45520
45587
|
|
|
45521
45588
|
// src/components/chat/hooks/use-nats-dialog-subscription.ts
|
|
45522
|
-
import { useEffect as useEffect76, useRef as useRef62, useState as
|
|
45589
|
+
import { useEffect as useEffect76, useRef as useRef62, useState as useState104 } from "react";
|
|
45523
45590
|
function useNatsDialogSubscription({
|
|
45524
45591
|
enabled,
|
|
45525
45592
|
dialogId,
|
|
@@ -45533,9 +45600,9 @@ function useNatsDialogSubscription({
|
|
|
45533
45600
|
clientConfig = {},
|
|
45534
45601
|
reconnectionBackoff
|
|
45535
45602
|
}) {
|
|
45536
|
-
const [isConnected, setIsConnected] =
|
|
45537
|
-
const [isSubscribed, setIsSubscribed] =
|
|
45538
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
45603
|
+
const [isConnected, setIsConnected] = useState104(false);
|
|
45604
|
+
const [isSubscribed, setIsSubscribed] = useState104(false);
|
|
45605
|
+
const [reconnectionCount, setReconnectionCount] = useState104(0);
|
|
45539
45606
|
const clientRef = useRef62(null);
|
|
45540
45607
|
const subscriptionRefs = useRef62(/* @__PURE__ */ new Map());
|
|
45541
45608
|
const onEventRef = useRef62(onEvent);
|
|
@@ -46729,7 +46796,7 @@ function useRealtimeChunkProcessor(options) {
|
|
|
46729
46796
|
}
|
|
46730
46797
|
|
|
46731
46798
|
// src/components/chat/hooks/use-slash-commands.ts
|
|
46732
|
-
import { useEffect as useEffect78, useState as
|
|
46799
|
+
import { useEffect as useEffect78, useState as useState105 } from "react";
|
|
46733
46800
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
46734
46801
|
async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
46735
46802
|
try {
|
|
@@ -46746,8 +46813,8 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
|
46746
46813
|
}
|
|
46747
46814
|
}
|
|
46748
46815
|
function useSlashCommands(prefix, commandsUrl) {
|
|
46749
|
-
const [commands, setCommands] =
|
|
46750
|
-
const [loading, setLoading] =
|
|
46816
|
+
const [commands, setCommands] = useState105([]);
|
|
46817
|
+
const [loading, setLoading] = useState105(false);
|
|
46751
46818
|
useEffect78(() => {
|
|
46752
46819
|
if (prefix == null) {
|
|
46753
46820
|
setCommands([]);
|
|
@@ -46854,7 +46921,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
|
|
|
46854
46921
|
}
|
|
46855
46922
|
|
|
46856
46923
|
// src/components/chat/hooks/use-chat-attachments.ts
|
|
46857
|
-
import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as
|
|
46924
|
+
import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as useState106 } from "react";
|
|
46858
46925
|
import { fileTypeFromBlob } from "file-type";
|
|
46859
46926
|
var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
|
|
46860
46927
|
var CHAT_ATTACHMENTS_FOLDER = "chat";
|
|
@@ -46930,7 +46997,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
|
|
|
46930
46997
|
function useChatAttachments() {
|
|
46931
46998
|
const runtime = useRequiredChatRuntime();
|
|
46932
46999
|
const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
|
|
46933
|
-
const [attachments, setAttachments] =
|
|
47000
|
+
const [attachments, setAttachments] = useState106([]);
|
|
46934
47001
|
const controllersRef = useRef64(/* @__PURE__ */ new Map());
|
|
46935
47002
|
const updateOne = useCallback46((id, patch) => {
|
|
46936
47003
|
setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
|
|
@@ -47097,14 +47164,14 @@ function useChatAttachments() {
|
|
|
47097
47164
|
}
|
|
47098
47165
|
|
|
47099
47166
|
// src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
|
|
47100
|
-
import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as
|
|
47167
|
+
import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as useState107 } from "react";
|
|
47101
47168
|
import { jsx as jsx348 } from "react/jsx-runtime";
|
|
47102
47169
|
var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
|
|
47103
47170
|
function useChatAttachmentImageGallery() {
|
|
47104
47171
|
const runtime = useRequiredChatRuntime();
|
|
47105
47172
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
47106
47173
|
const panelRef = useRef65(null);
|
|
47107
|
-
const [state, setState] =
|
|
47174
|
+
const [state, setState] = useState107(CLOSED);
|
|
47108
47175
|
const handleClose = useCallback47(() => setState(CLOSED), []);
|
|
47109
47176
|
useEffect79(() => {
|
|
47110
47177
|
const root = panelRef.current;
|
|
@@ -47152,7 +47219,7 @@ function absolutize(prefix) {
|
|
|
47152
47219
|
}
|
|
47153
47220
|
|
|
47154
47221
|
// src/components/chat/hooks/use-chat-identity.ts
|
|
47155
|
-
import { createContext as createContext12, createElement as createElement2, useContext as useContext12, useEffect as useEffect80, useState as
|
|
47222
|
+
import { createContext as createContext12, createElement as createElement2, useContext as useContext12, useEffect as useEffect80, useState as useState108 } from "react";
|
|
47156
47223
|
var ANON_DEFAULTS = {
|
|
47157
47224
|
authTier: "anon",
|
|
47158
47225
|
source: null,
|
|
@@ -47163,8 +47230,8 @@ function useResolveChatIdentity(enabled) {
|
|
|
47163
47230
|
const runtime = useRequiredChatRuntime();
|
|
47164
47231
|
const url = runtime.endpoints.identityUrl;
|
|
47165
47232
|
const proxyEmail = getEmbedProxyAuth()?.email ?? null;
|
|
47166
|
-
const [data, setData] =
|
|
47167
|
-
const [isLoading, setIsLoading] =
|
|
47233
|
+
const [data, setData] = useState108(ANON_DEFAULTS);
|
|
47234
|
+
const [isLoading, setIsLoading] = useState108(enabled);
|
|
47168
47235
|
useEffect80(() => {
|
|
47169
47236
|
if (!enabled) return;
|
|
47170
47237
|
let cancelled = false;
|
|
@@ -47225,13 +47292,13 @@ function useCloseOnNavigation(close, pathname) {
|
|
|
47225
47292
|
}
|
|
47226
47293
|
|
|
47227
47294
|
// src/components/chat/hooks/use-chat.ts
|
|
47228
|
-
import { useState as
|
|
47295
|
+
import { useState as useState110, useCallback as useCallback49, useEffect as useEffect82, useRef as useRef68 } from "react";
|
|
47229
47296
|
|
|
47230
47297
|
// src/components/chat/hooks/use-sse.ts
|
|
47231
|
-
import { useState as
|
|
47298
|
+
import { useState as useState109, useCallback as useCallback48, useRef as useRef67 } from "react";
|
|
47232
47299
|
function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
47233
|
-
const [isStreaming, setIsStreaming] =
|
|
47234
|
-
const [error, setError] =
|
|
47300
|
+
const [isStreaming, setIsStreaming] = useState109(false);
|
|
47301
|
+
const [error, setError] = useState109(null);
|
|
47235
47302
|
const abortControllerRef = useRef67(null);
|
|
47236
47303
|
const fallbackStream = useCallback48(async function* () {
|
|
47237
47304
|
throw new Error(
|
|
@@ -47298,8 +47365,8 @@ function useChat({
|
|
|
47298
47365
|
initialMessages,
|
|
47299
47366
|
onMessagesChange
|
|
47300
47367
|
} = {}) {
|
|
47301
|
-
const [messages, setMessages] =
|
|
47302
|
-
const [isTyping, setIsTyping] =
|
|
47368
|
+
const [messages, setMessages] = useState110(() => initialMessages ?? []);
|
|
47369
|
+
const [isTyping, setIsTyping] = useState110(false);
|
|
47303
47370
|
const currentAssistantSegmentsRef = useRef68([]);
|
|
47304
47371
|
const onMessagesChangeRef = useRef68(onMessagesChange);
|
|
47305
47372
|
onMessagesChangeRef.current = onMessagesChange;
|
|
@@ -47592,7 +47659,7 @@ function useChat({
|
|
|
47592
47659
|
}
|
|
47593
47660
|
|
|
47594
47661
|
// src/components/chat/hooks/use-sse-chat-adapter.ts
|
|
47595
|
-
import { useState as
|
|
47662
|
+
import { useState as useState111, useEffect as useEffect83, useCallback as useCallback50, useMemo as useMemo41, useRef as useRef69 } from "react";
|
|
47596
47663
|
function createEmptyTurnMeta() {
|
|
47597
47664
|
return {
|
|
47598
47665
|
provider: null,
|
|
@@ -47927,8 +47994,8 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
47927
47994
|
const metaMapRef = useRef69(/* @__PURE__ */ new Map());
|
|
47928
47995
|
const messagesRef = useRef69(persistedRef.current.messages);
|
|
47929
47996
|
const sendCountRef = useRef69(persistedRef.current.sendCount);
|
|
47930
|
-
const [streamingPhase, setStreamingPhase] =
|
|
47931
|
-
const [metaTick, setMetaTick] =
|
|
47997
|
+
const [streamingPhase, setStreamingPhase] = useState111("idle");
|
|
47998
|
+
const [metaTick, setMetaTick] = useState111(0);
|
|
47932
47999
|
const bumpMetaTick = useCallback50(() => setMetaTick((t) => t + 1), []);
|
|
47933
48000
|
const streamFn = useMemo41(
|
|
47934
48001
|
() => createDocStreamFn(
|
|
@@ -48201,7 +48268,7 @@ import {
|
|
|
48201
48268
|
useEffect as useEffect84,
|
|
48202
48269
|
useMemo as useMemo42,
|
|
48203
48270
|
useRef as useRef70,
|
|
48204
|
-
useState as
|
|
48271
|
+
useState as useState112
|
|
48205
48272
|
} from "react";
|
|
48206
48273
|
|
|
48207
48274
|
// src/components/chat/utils/process-historical-messages.ts
|
|
@@ -48691,23 +48758,23 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
48691
48758
|
modelLabel = null
|
|
48692
48759
|
} = config;
|
|
48693
48760
|
const isManagedMode = fetchDialogs !== void 0;
|
|
48694
|
-
const [internalDialogId, setInternalDialogId] =
|
|
48761
|
+
const [internalDialogId, setInternalDialogId] = useState112(null);
|
|
48695
48762
|
const dialogId = isManagedMode ? internalDialogId : controlledDialogId !== void 0 ? controlledDialogId : null;
|
|
48696
|
-
const [messages, setMessages] =
|
|
48697
|
-
const [streamingPhase, setStreamingPhase] =
|
|
48698
|
-
const [approvalStatuses, setApprovalStatuses] =
|
|
48699
|
-
const [dialogs, setDialogs] =
|
|
48700
|
-
const [dialogsNextCursor, setDialogsNextCursor] =
|
|
48701
|
-
const [isDialogsLoading, setIsDialogsLoading] =
|
|
48702
|
-
const [dialogsError, setDialogsError] =
|
|
48703
|
-
const [isCreatingDialog, setIsCreatingDialog] =
|
|
48704
|
-
const [messagesNextCursor, setMessagesNextCursor] =
|
|
48705
|
-
const [isMessagesLoading, setIsMessagesLoading] =
|
|
48706
|
-
const [dialogTokenUsage, setDialogTokenUsage] =
|
|
48763
|
+
const [messages, setMessages] = useState112([]);
|
|
48764
|
+
const [streamingPhase, setStreamingPhase] = useState112("idle");
|
|
48765
|
+
const [approvalStatuses, setApprovalStatuses] = useState112({});
|
|
48766
|
+
const [dialogs, setDialogs] = useState112([]);
|
|
48767
|
+
const [dialogsNextCursor, setDialogsNextCursor] = useState112(null);
|
|
48768
|
+
const [isDialogsLoading, setIsDialogsLoading] = useState112(false);
|
|
48769
|
+
const [dialogsError, setDialogsError] = useState112(false);
|
|
48770
|
+
const [isCreatingDialog, setIsCreatingDialog] = useState112(false);
|
|
48771
|
+
const [messagesNextCursor, setMessagesNextCursor] = useState112(null);
|
|
48772
|
+
const [isMessagesLoading, setIsMessagesLoading] = useState112(false);
|
|
48773
|
+
const [dialogTokenUsage, setDialogTokenUsage] = useState112(
|
|
48707
48774
|
null
|
|
48708
48775
|
);
|
|
48709
|
-
const [liveModel, setLiveModel] =
|
|
48710
|
-
const [connectionState, setConnectionState] =
|
|
48776
|
+
const [liveModel, setLiveModel] = useState112(null);
|
|
48777
|
+
const [connectionState, setConnectionState] = useState112("connecting");
|
|
48711
48778
|
const handleApprove = useCallback51(
|
|
48712
48779
|
async (requestId) => {
|
|
48713
48780
|
if (!approveRequestCallback) return;
|
|
@@ -49503,7 +49570,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
|
|
|
49503
49570
|
}
|
|
49504
49571
|
|
|
49505
49572
|
// src/components/chat/embeddable-chat.tsx
|
|
49506
|
-
import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as
|
|
49573
|
+
import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as useState114 } from "react";
|
|
49507
49574
|
import * as DialogPrimitive4 from "@radix-ui/react-dialog";
|
|
49508
49575
|
import { usePreventScroll } from "@react-aria/overlays";
|
|
49509
49576
|
import { isIOS } from "@react-aria/utils";
|
|
@@ -49584,7 +49651,7 @@ init_button2();
|
|
|
49584
49651
|
import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
|
|
49585
49652
|
|
|
49586
49653
|
// src/components/chat/hooks/use-chat-dialog-manager.ts
|
|
49587
|
-
import { useCallback as useCallback53, useMemo as useMemo44, useState as
|
|
49654
|
+
import { useCallback as useCallback53, useMemo as useMemo44, useState as useState113 } from "react";
|
|
49588
49655
|
function useChatDialogManager({
|
|
49589
49656
|
dialogs,
|
|
49590
49657
|
activeDialogId,
|
|
@@ -49595,8 +49662,8 @@ function useChatDialogManager({
|
|
|
49595
49662
|
fetchArchivedDialogs,
|
|
49596
49663
|
unarchiveDialog
|
|
49597
49664
|
}) {
|
|
49598
|
-
const [renameTarget, setRenameTarget] =
|
|
49599
|
-
const [archiveTarget, setArchiveTarget] =
|
|
49665
|
+
const [renameTarget, setRenameTarget] = useState113(null);
|
|
49666
|
+
const [archiveTarget, setArchiveTarget] = useState113(null);
|
|
49600
49667
|
const handleConfirmRename = useCallback53(
|
|
49601
49668
|
(name) => {
|
|
49602
49669
|
if (renameTarget) void renameDialog(renameTarget.id, name);
|
|
@@ -49619,10 +49686,10 @@ function useChatDialogManager({
|
|
|
49619
49686
|
}
|
|
49620
49687
|
setArchiveTarget(null);
|
|
49621
49688
|
}, [archiveTarget, archiveDialog, activeDialogId, clearMessages]);
|
|
49622
|
-
const [archiveOpen, setArchiveOpen] =
|
|
49623
|
-
const [archivedDialogs, setArchivedDialogs] =
|
|
49624
|
-
const [archivedCursor, setArchivedCursor] =
|
|
49625
|
-
const [archivedLoading, setArchivedLoading] =
|
|
49689
|
+
const [archiveOpen, setArchiveOpen] = useState113(false);
|
|
49690
|
+
const [archivedDialogs, setArchivedDialogs] = useState113([]);
|
|
49691
|
+
const [archivedCursor, setArchivedCursor] = useState113(null);
|
|
49692
|
+
const [archivedLoading, setArchivedLoading] = useState113(false);
|
|
49626
49693
|
const loadArchivedPage = useCallback53(
|
|
49627
49694
|
async (cursor) => {
|
|
49628
49695
|
if (!fetchArchivedDialogs) return;
|
|
@@ -49648,10 +49715,10 @@ function useChatDialogManager({
|
|
|
49648
49715
|
void loadArchivedPage();
|
|
49649
49716
|
}, [loadArchivedPage]);
|
|
49650
49717
|
const closeArchive = useCallback53(() => setArchiveOpen(false), []);
|
|
49651
|
-
const [viewingArchivedId, setViewingArchivedId] =
|
|
49718
|
+
const [viewingArchivedId, setViewingArchivedId] = useState113(
|
|
49652
49719
|
null
|
|
49653
49720
|
);
|
|
49654
|
-
const [openingDialogId, setOpeningDialogId] =
|
|
49721
|
+
const [openingDialogId, setOpeningDialogId] = useState113(null);
|
|
49655
49722
|
const handleSelectDialog = useCallback53(
|
|
49656
49723
|
(id) => {
|
|
49657
49724
|
setViewingArchivedId(null);
|
|
@@ -49670,7 +49737,7 @@ function useChatDialogManager({
|
|
|
49670
49737
|
},
|
|
49671
49738
|
[selectDialog]
|
|
49672
49739
|
);
|
|
49673
|
-
const [restoreTarget, setRestoreTarget] =
|
|
49740
|
+
const [restoreTarget, setRestoreTarget] = useState113(null);
|
|
49674
49741
|
const handleConfirmRestore = useCallback53(async () => {
|
|
49675
49742
|
if (restoreTarget) {
|
|
49676
49743
|
try {
|
|
@@ -49732,7 +49799,7 @@ function useChatDialogManager({
|
|
|
49732
49799
|
|
|
49733
49800
|
// src/components/chat/embeddable-chat.tsx
|
|
49734
49801
|
init_next_navigation();
|
|
49735
|
-
import { Fragment as
|
|
49802
|
+
import { Fragment as Fragment75, jsx as jsx351, jsxs as jsxs281 } from "react/jsx-runtime";
|
|
49736
49803
|
var formatRelativePath = (p) => p.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
49737
49804
|
var mentionTokenOf = (key, markerByType) => {
|
|
49738
49805
|
const ci = key.indexOf(":");
|
|
@@ -49852,7 +49919,7 @@ function SourceChip({
|
|
|
49852
49919
|
);
|
|
49853
49920
|
}
|
|
49854
49921
|
const displayName = src.name || formatRelativePath(src.path);
|
|
49855
|
-
const chipBody = (label) => /* @__PURE__ */ jsxs281(
|
|
49922
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs281(Fragment75, { children: [
|
|
49856
49923
|
icon,
|
|
49857
49924
|
/* @__PURE__ */ jsxs281("span", { className: "truncate max-w-[160px]", children: [
|
|
49858
49925
|
"[",
|
|
@@ -49922,7 +49989,7 @@ function SourceChips({
|
|
|
49922
49989
|
onClose,
|
|
49923
49990
|
onDiscuss
|
|
49924
49991
|
}) {
|
|
49925
|
-
const [expanded, setExpanded] =
|
|
49992
|
+
const [expanded, setExpanded] = useState114(false);
|
|
49926
49993
|
if (cited.length === 0) {
|
|
49927
49994
|
const fallback = uncited.slice(0, FALLBACK_TOP_RETRIEVED);
|
|
49928
49995
|
if (fallback.length === 0) return null;
|
|
@@ -50043,7 +50110,7 @@ function EmbeddableChatInner({
|
|
|
50043
50110
|
defaultProp: defaultOpen ?? false,
|
|
50044
50111
|
onChange: onOpenChange
|
|
50045
50112
|
});
|
|
50046
|
-
const [autoFocusInput] =
|
|
50113
|
+
const [autoFocusInput] = useState114(() => {
|
|
50047
50114
|
if (typeof window === "undefined") return false;
|
|
50048
50115
|
return !window.matchMedia("(pointer: coarse)").matches;
|
|
50049
50116
|
});
|
|
@@ -50076,7 +50143,7 @@ function EmbeddableChatInner({
|
|
|
50076
50143
|
};
|
|
50077
50144
|
}, [isOpen, shellLess]);
|
|
50078
50145
|
const chatInputRef = useRef72(null);
|
|
50079
|
-
const [quickActionPreview, setQuickActionPreview] =
|
|
50146
|
+
const [quickActionPreview, setQuickActionPreview] = useState114(null);
|
|
50080
50147
|
const slashCommandsProp = useMemo45(
|
|
50081
50148
|
() => ({
|
|
50082
50149
|
fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
|
|
@@ -50119,7 +50186,7 @@ function EmbeddableChatInner({
|
|
|
50119
50186
|
}, [mingoState, mingoDialogCapabilities, effectiveModes]);
|
|
50120
50187
|
const hasMingoMode = !!effectiveModes.mingo || !!mingoState;
|
|
50121
50188
|
const initialActiveMode = controlledActiveMode ?? defaultActiveMode ?? (effectiveModes.guide ? "guide" : "mingo");
|
|
50122
|
-
const [uncontrolledActiveMode, setUncontrolledActiveMode] =
|
|
50189
|
+
const [uncontrolledActiveMode, setUncontrolledActiveMode] = useState114(initialActiveMode);
|
|
50123
50190
|
const activeMode = controlledActiveMode ?? uncontrolledActiveMode;
|
|
50124
50191
|
const handleActiveModeChange = useCallback54(
|
|
50125
50192
|
(next) => {
|
|
@@ -50201,9 +50268,9 @@ function EmbeddableChatInner({
|
|
|
50201
50268
|
const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
|
|
50202
50269
|
const contextMaxItems = contextPicker?.maxItems ?? 10;
|
|
50203
50270
|
const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
|
|
50204
|
-
const [contextItems, setContextItems] =
|
|
50205
|
-
const [contextPickerOpen, setContextPickerOpen] =
|
|
50206
|
-
const [mentionQuery, setMentionQuery] =
|
|
50271
|
+
const [contextItems, setContextItems] = useState114([]);
|
|
50272
|
+
const [contextPickerOpen, setContextPickerOpen] = useState114(false);
|
|
50273
|
+
const [mentionQuery, setMentionQuery] = useState114(null);
|
|
50207
50274
|
const mentionActiveRef = useRef72(false);
|
|
50208
50275
|
useEffect85(() => {
|
|
50209
50276
|
mentionActiveRef.current = mentionQuery !== null;
|
|
@@ -50490,7 +50557,7 @@ function EmbeddableChatInner({
|
|
|
50490
50557
|
const uncited = sources.filter((s) => !seenOrder.has(s.index));
|
|
50491
50558
|
return { cited, uncited };
|
|
50492
50559
|
}, [lastAssistantMsg, chatLoading]);
|
|
50493
|
-
const [portalHost, setPortalHost] =
|
|
50560
|
+
const [portalHost, setPortalHost] = useState114(null);
|
|
50494
50561
|
const body = /* @__PURE__ */ jsxs281(PortalContainerContext.Provider, { value: portalHost, children: [
|
|
50495
50562
|
/* @__PURE__ */ jsx351(
|
|
50496
50563
|
"div",
|
|
@@ -50798,7 +50865,7 @@ function EmbeddableChatInner({
|
|
|
50798
50865
|
]
|
|
50799
50866
|
}
|
|
50800
50867
|
) }) });
|
|
50801
|
-
return /* @__PURE__ */ jsxs281(
|
|
50868
|
+
return /* @__PURE__ */ jsxs281(Fragment75, { children: [
|
|
50802
50869
|
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx351(
|
|
50803
50870
|
"div",
|
|
50804
50871
|
{
|
|
@@ -51075,6 +51142,7 @@ export {
|
|
|
51075
51142
|
ArgRow,
|
|
51076
51143
|
ResultBlock,
|
|
51077
51144
|
CommandBlock,
|
|
51145
|
+
ApprovalStatusTag,
|
|
51078
51146
|
ApprovalBatchMessage,
|
|
51079
51147
|
ContextCompactionDisplay,
|
|
51080
51148
|
SimpleMarkdownRenderer,
|
|
@@ -51758,4 +51826,4 @@ export {
|
|
|
51758
51826
|
LogsList,
|
|
51759
51827
|
assets
|
|
51760
51828
|
};
|
|
51761
|
-
//# sourceMappingURL=chunk-
|
|
51829
|
+
//# sourceMappingURL=chunk-VZ4NJBQT.js.map
|