@arbidocs/react 0.3.183 → 0.3.185
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-3MLQUKT4.cjs +97 -0
- package/dist/chunk-3MLQUKT4.cjs.map +1 -0
- package/dist/{chunk-FIPS3VPH.cjs → chunk-IZPXHVPJ.cjs} +1463 -3
- package/dist/chunk-IZPXHVPJ.cjs.map +1 -0
- package/dist/chunk-J3XEKOV5.js +87 -0
- package/dist/chunk-J3XEKOV5.js.map +1 -0
- package/dist/{chunk-I256BUCX.js → chunk-YJAYST7S.js} +1429 -6
- package/dist/chunk-YJAYST7S.js.map +1 -0
- package/dist/index-4WwLZsQO.d.cts +78 -0
- package/dist/index-4WwLZsQO.d.ts +78 -0
- package/dist/index.cjs +776 -2136
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -751
- package/dist/index.d.ts +7 -751
- package/dist/index.js +74 -1563
- package/dist/index.js.map +1 -1
- package/dist/shell/index.cjs +20 -0
- package/dist/shell/index.cjs.map +1 -0
- package/dist/shell/index.d.cts +4 -0
- package/dist/shell/index.d.ts +4 -0
- package/dist/shell/index.js +3 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/ui/index.cjs +229 -109
- package/dist/ui/index.d.cts +677 -3
- package/dist/ui/index.d.ts +677 -3
- package/dist/ui/index.js +1 -1
- package/package.json +11 -3
- package/dist/chunk-FIPS3VPH.cjs.map +0 -1
- package/dist/chunk-I256BUCX.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3MLQUKT4_cjs = require('./chunk-3MLQUKT4.cjs');
|
|
4
|
+
var chunkIZPXHVPJ_cjs = require('./chunk-IZPXHVPJ.cjs');
|
|
4
5
|
var chunk7IOCMCC5_cjs = require('./chunk-7IOCMCC5.cjs');
|
|
5
|
-
var
|
|
6
|
+
var React = require('react');
|
|
6
7
|
var reactQuery = require('@tanstack/react-query');
|
|
7
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
9
|
var browser = require('@arbidocs/sdk/browser');
|
|
@@ -12,14 +13,13 @@ var zustand = require('zustand');
|
|
|
12
13
|
var diff = require('diff');
|
|
13
14
|
var framerMotion = require('framer-motion');
|
|
14
15
|
var ReactMarkdown = require('react-markdown');
|
|
15
|
-
var sonner = require('sonner');
|
|
16
16
|
var Cropper = require('react-easy-crop');
|
|
17
17
|
var agGridReact = require('ag-grid-react');
|
|
18
18
|
var agGridCommunity = require('ag-grid-community');
|
|
19
19
|
|
|
20
20
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
23
23
|
var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
|
|
24
24
|
var Cropper__default = /*#__PURE__*/_interopDefault(Cropper);
|
|
25
25
|
|
|
@@ -347,16 +347,16 @@ function agentStatusStyle(theme) {
|
|
|
347
347
|
}
|
|
348
348
|
function AuthScreen({ theme, labels, onLogin }) {
|
|
349
349
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
350
|
-
const [mode, setMode] =
|
|
351
|
-
const [step, setStep] =
|
|
352
|
-
const [email, setEmail] =
|
|
353
|
-
const [password, setPassword] =
|
|
354
|
-
const [confirmPw, setConfirmPw] =
|
|
355
|
-
const [code, setCode] =
|
|
356
|
-
const [firstName, setFirstName] =
|
|
357
|
-
const [lastName, setLastName] =
|
|
358
|
-
const [loading, setLoading] =
|
|
359
|
-
const [error, setError] =
|
|
350
|
+
const [mode, setMode] = React.useState("login");
|
|
351
|
+
const [step, setStep] = React.useState("email");
|
|
352
|
+
const [email, setEmail] = React.useState("");
|
|
353
|
+
const [password, setPassword] = React.useState("");
|
|
354
|
+
const [confirmPw, setConfirmPw] = React.useState("");
|
|
355
|
+
const [code, setCode] = React.useState("");
|
|
356
|
+
const [firstName, setFirstName] = React.useState("");
|
|
357
|
+
const [lastName, setLastName] = React.useState("");
|
|
358
|
+
const [loading, setLoading] = React.useState(false);
|
|
359
|
+
const [error, setError] = React.useState("");
|
|
360
360
|
const resetForm = () => {
|
|
361
361
|
setPassword("");
|
|
362
362
|
setConfirmPw("");
|
|
@@ -746,7 +746,7 @@ function useProjectsUsage(projectExtIds, monthsBack = 0, options) {
|
|
|
746
746
|
}))
|
|
747
747
|
});
|
|
748
748
|
const signature = results.map((r) => `${r.status}:${r.dataUpdatedAt ?? 0}`).join("|");
|
|
749
|
-
return
|
|
749
|
+
return React.useMemo(() => {
|
|
750
750
|
const dailyMap = /* @__PURE__ */ new Map();
|
|
751
751
|
const modelMap = /* @__PURE__ */ new Map();
|
|
752
752
|
let totalSpend = 0;
|
|
@@ -819,11 +819,11 @@ function useUserUsageToday(options) {
|
|
|
819
819
|
function WorkspaceScreen({ theme, labels, onSelect }) {
|
|
820
820
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
821
821
|
const { data: workspaces, isLoading } = useWorkspaces();
|
|
822
|
-
const [mode, setMode] =
|
|
823
|
-
const [selected, setSelected] =
|
|
824
|
-
const [newName, setNewName] =
|
|
825
|
-
const [loading, setLoading] =
|
|
826
|
-
const [error, setError] =
|
|
822
|
+
const [mode, setMode] = React.useState("select");
|
|
823
|
+
const [selected, setSelected] = React.useState("");
|
|
824
|
+
const [newName, setNewName] = React.useState("");
|
|
825
|
+
const [loading, setLoading] = React.useState(false);
|
|
826
|
+
const [error, setError] = React.useState("");
|
|
827
827
|
if (isLoading) {
|
|
828
828
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: loadingContainerStyle(), children: "Loading workspaces..." });
|
|
829
829
|
}
|
|
@@ -944,7 +944,7 @@ function WorkspaceScreen({ theme, labels, onSelect }) {
|
|
|
944
944
|
}
|
|
945
945
|
var CITE_RE = /\[([^\]]+)\]\(#cite-(\d+)\)/g;
|
|
946
946
|
function MessageBubble({ message, theme }) {
|
|
947
|
-
const [expandedCite, setExpandedCite] =
|
|
947
|
+
const [expandedCite, setExpandedCite] = React.useState(null);
|
|
948
948
|
const hasCitations = message.role === "assistant" && message.metadata && CITE_RE.test(message.text);
|
|
949
949
|
CITE_RE.lastIndex = 0;
|
|
950
950
|
const resolved = hasCitations ? browser.resolveCitations(message.metadata) : [];
|
|
@@ -952,7 +952,7 @@ function MessageBubble({ message, theme }) {
|
|
|
952
952
|
const summaryMap = new Map(summaries.map((s) => [s.citationNum, s]));
|
|
953
953
|
const activeSummary = expandedCite ? summaryMap.get(expandedCite) : null;
|
|
954
954
|
const activeResolved = expandedCite ? resolved.find((r) => r.citationNum === expandedCite) : null;
|
|
955
|
-
const markdownComponents =
|
|
955
|
+
const markdownComponents = React.useMemo(
|
|
956
956
|
() => ({
|
|
957
957
|
a: ({ href, children, ...props }) => {
|
|
958
958
|
if (href?.startsWith("#cite-")) {
|
|
@@ -989,7 +989,7 @@ function MessageBubble({ message, theme }) {
|
|
|
989
989
|
[theme]
|
|
990
990
|
);
|
|
991
991
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
992
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: messageBubbleStyle(theme, message.role), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
992
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: messageBubbleStyle(theme, message.role), children: /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.MarkdownRenderer, { components: markdownComponents, children: message.text }) }),
|
|
993
993
|
activeSummary && activeResolved && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: citePanelStyle(theme), children: [
|
|
994
994
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: citePanelHeaderStyle(theme), children: [
|
|
995
995
|
/* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
|
|
@@ -1057,22 +1057,22 @@ function ChatView({ workspaceId, theme, labels }) {
|
|
|
1057
1057
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
1058
1058
|
const { data: docs, refetch: refetchDocs } = useDocuments(workspaceId);
|
|
1059
1059
|
const mutation = useAssistantQuery();
|
|
1060
|
-
const [messages, setMessages] =
|
|
1061
|
-
const [input, setInput] =
|
|
1062
|
-
const [streaming, setStreaming] =
|
|
1063
|
-
const [agentStatus, setAgentStatus] =
|
|
1064
|
-
const [selectedDocs, setSelectedDocs] =
|
|
1065
|
-
const [docsExpanded, setDocsExpanded] =
|
|
1066
|
-
const [previousResponseId, setPreviousResponseId] =
|
|
1067
|
-
const [uploading, setUploading] =
|
|
1068
|
-
const messagesEndRef =
|
|
1069
|
-
const fileInputRef =
|
|
1070
|
-
|
|
1060
|
+
const [messages, setMessages] = React.useState([]);
|
|
1061
|
+
const [input, setInput] = React.useState("");
|
|
1062
|
+
const [streaming, setStreaming] = React.useState("");
|
|
1063
|
+
const [agentStatus, setAgentStatus] = React.useState("");
|
|
1064
|
+
const [selectedDocs, setSelectedDocs] = React.useState([]);
|
|
1065
|
+
const [docsExpanded, setDocsExpanded] = React.useState(false);
|
|
1066
|
+
const [previousResponseId, setPreviousResponseId] = React.useState(null);
|
|
1067
|
+
const [uploading, setUploading] = React.useState(false);
|
|
1068
|
+
const messagesEndRef = React.useRef(null);
|
|
1069
|
+
const fileInputRef = React.useRef(null);
|
|
1070
|
+
React.useEffect(() => {
|
|
1071
1071
|
if (docs && docs.length > 0 && selectedDocs.length === 0) {
|
|
1072
1072
|
setSelectedDocs(docs.map((d) => d.external_id));
|
|
1073
1073
|
}
|
|
1074
1074
|
}, [docs, selectedDocs.length]);
|
|
1075
|
-
|
|
1075
|
+
React.useEffect(() => {
|
|
1076
1076
|
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
1077
1077
|
}, [messages, streaming, agentStatus]);
|
|
1078
1078
|
const toggleDoc = (docId) => {
|
|
@@ -1080,7 +1080,7 @@ function ChatView({ workspaceId, theme, labels }) {
|
|
|
1080
1080
|
(prev) => prev.includes(docId) ? prev.filter((id) => id !== docId) : [...prev, docId]
|
|
1081
1081
|
);
|
|
1082
1082
|
};
|
|
1083
|
-
const handleUpload =
|
|
1083
|
+
const handleUpload = React.useCallback(
|
|
1084
1084
|
async (e) => {
|
|
1085
1085
|
const files = e.target.files;
|
|
1086
1086
|
if (!files || files.length === 0) return;
|
|
@@ -1101,7 +1101,7 @@ function ChatView({ workspaceId, theme, labels }) {
|
|
|
1101
1101
|
},
|
|
1102
1102
|
[arbi, refetchDocs]
|
|
1103
1103
|
);
|
|
1104
|
-
const handleSubmit =
|
|
1104
|
+
const handleSubmit = React.useCallback(
|
|
1105
1105
|
(e) => {
|
|
1106
1106
|
e.preventDefault();
|
|
1107
1107
|
const question = input.trim();
|
|
@@ -1235,9 +1235,9 @@ function ChatView({ workspaceId, theme, labels }) {
|
|
|
1235
1235
|
}
|
|
1236
1236
|
function ChatWidget({ theme, labels, initialWorkspaceId, width, height }) {
|
|
1237
1237
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
1238
|
-
const [screen, setScreen] =
|
|
1239
|
-
const [workspaceId, setWorkspaceId] =
|
|
1240
|
-
const resolveWorkspace =
|
|
1238
|
+
const [screen, setScreen] = React.useState("auth");
|
|
1239
|
+
const [workspaceId, setWorkspaceId] = React.useState(initialWorkspaceId);
|
|
1240
|
+
const resolveWorkspace = React.useCallback(async () => {
|
|
1241
1241
|
if (initialWorkspaceId) {
|
|
1242
1242
|
try {
|
|
1243
1243
|
await arbi.selectWorkspace(initialWorkspaceId);
|
|
@@ -1250,15 +1250,15 @@ function ChatWidget({ theme, labels, initialWorkspaceId, width, height }) {
|
|
|
1250
1250
|
}
|
|
1251
1251
|
setScreen("workspace");
|
|
1252
1252
|
}, [arbi, initialWorkspaceId]);
|
|
1253
|
-
const handleLogin =
|
|
1254
|
-
|
|
1253
|
+
const handleLogin = React.useCallback(() => resolveWorkspace(), [resolveWorkspace]);
|
|
1254
|
+
React.useEffect(() => {
|
|
1255
1255
|
if (arbi.isLoggedIn) void resolveWorkspace();
|
|
1256
1256
|
}, [arbi, resolveWorkspace]);
|
|
1257
|
-
const handleWorkspaceSelect =
|
|
1257
|
+
const handleWorkspaceSelect = React.useCallback((id) => {
|
|
1258
1258
|
setWorkspaceId(id);
|
|
1259
1259
|
setScreen("chat");
|
|
1260
1260
|
}, []);
|
|
1261
|
-
const handleChangeWorkspace =
|
|
1261
|
+
const handleChangeWorkspace = React.useCallback(() => {
|
|
1262
1262
|
setScreen("workspace");
|
|
1263
1263
|
}, []);
|
|
1264
1264
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: containerStyle(theme, width, height), children: [
|
|
@@ -1294,8 +1294,8 @@ function ArbiChatPanel({
|
|
|
1294
1294
|
width = "100%",
|
|
1295
1295
|
height = "100%"
|
|
1296
1296
|
}) {
|
|
1297
|
-
const theme =
|
|
1298
|
-
const labels =
|
|
1297
|
+
const theme = React.useMemo(() => getTheme(themeOverrides), [themeOverrides]);
|
|
1298
|
+
const labels = React.useMemo(() => getLabels(labelOverrides), [labelOverrides]);
|
|
1299
1299
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1300
1300
|
ChatWidget,
|
|
1301
1301
|
{
|
|
@@ -1315,7 +1315,7 @@ function ArbiChat({
|
|
|
1315
1315
|
width = "400px",
|
|
1316
1316
|
height = "600px"
|
|
1317
1317
|
}) {
|
|
1318
|
-
const queryClient =
|
|
1318
|
+
const queryClient = React.useMemo(
|
|
1319
1319
|
() => new reactQuery.QueryClient({
|
|
1320
1320
|
defaultOptions: {
|
|
1321
1321
|
queries: { retry: 1, refetchOnWindowFocus: false },
|
|
@@ -1335,14 +1335,14 @@ function ArbiChat({
|
|
|
1335
1335
|
}
|
|
1336
1336
|
) }) });
|
|
1337
1337
|
}
|
|
1338
|
-
var TypingIndicator =
|
|
1338
|
+
var TypingIndicator = React.memo(function TypingIndicator2() {
|
|
1339
1339
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full justify-start mb-2", "data-testid": "dm-typing-indicator", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-card border border-primary rounded-2xl rounded-bl-md px-4 py-2.5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1 items-center", children: [
|
|
1340
1340
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-muted-foreground animate-bounce [animation-delay:0ms]" }),
|
|
1341
1341
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-muted-foreground animate-bounce [animation-delay:150ms]" }),
|
|
1342
1342
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-muted-foreground animate-bounce [animation-delay:300ms]" })
|
|
1343
1343
|
] }) }) });
|
|
1344
1344
|
});
|
|
1345
|
-
var ChatBubble =
|
|
1345
|
+
var ChatBubble = React.memo(function ChatBubble2({
|
|
1346
1346
|
message,
|
|
1347
1347
|
timestamp,
|
|
1348
1348
|
isSent,
|
|
@@ -1359,8 +1359,8 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1359
1359
|
formatTimestamp = (t) => t,
|
|
1360
1360
|
"data-testid": testId
|
|
1361
1361
|
}) {
|
|
1362
|
-
const [isHovered, setIsHovered] =
|
|
1363
|
-
const [isFocused, setIsFocused] =
|
|
1362
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
1363
|
+
const [isFocused, setIsFocused] = React.useState(false);
|
|
1364
1364
|
const showActions = isHovered || isFocused;
|
|
1365
1365
|
if (deleted) {
|
|
1366
1366
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1373,12 +1373,12 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1373
1373
|
}
|
|
1374
1374
|
);
|
|
1375
1375
|
}
|
|
1376
|
-
const bubbleRadius =
|
|
1376
|
+
const bubbleRadius = chunkIZPXHVPJ_cjs.cn(
|
|
1377
1377
|
"rounded-2xl",
|
|
1378
1378
|
isSent && isLastOfRun && "rounded-br-sm",
|
|
1379
1379
|
!isSent && isLastOfRun && "rounded-bl-sm"
|
|
1380
1380
|
);
|
|
1381
|
-
const bubbleSurface = isSent ?
|
|
1381
|
+
const bubbleSurface = isSent ? chunkIZPXHVPJ_cjs.cn("bg-ai-accent-soft text-foreground chat-bubble-sent", classNames?.ownBubble) : chunkIZPXHVPJ_cjs.cn("border border-border bg-card text-card-foreground", classNames?.peerBubble);
|
|
1382
1382
|
const highlightClass = highlighted && "ring-2 ring-blue-400 dark:ring-blue-600";
|
|
1383
1383
|
const copyLinkButton = onCopyLink && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1384
1384
|
"button",
|
|
@@ -1386,7 +1386,7 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1386
1386
|
onClick: onCopyLink,
|
|
1387
1387
|
onFocus: () => setIsFocused(true),
|
|
1388
1388
|
onBlur: () => setIsFocused(false),
|
|
1389
|
-
className:
|
|
1389
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1390
1390
|
"self-end p-1 transition-opacity focus:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded",
|
|
1391
1391
|
showActions ? "opacity-100 text-foreground" : "opacity-0 text-muted-foreground"
|
|
1392
1392
|
),
|
|
@@ -1399,7 +1399,7 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1399
1399
|
{
|
|
1400
1400
|
id,
|
|
1401
1401
|
"data-testid": testId,
|
|
1402
|
-
className:
|
|
1402
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1403
1403
|
"flex w-full items-end",
|
|
1404
1404
|
isLastOfRun ? "mb-2" : "mb-0.5",
|
|
1405
1405
|
isSent ? "justify-end" : "justify-start"
|
|
@@ -1415,7 +1415,7 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1415
1415
|
onClick: onDelete,
|
|
1416
1416
|
onFocus: () => setIsFocused(true),
|
|
1417
1417
|
onBlur: () => setIsFocused(false),
|
|
1418
|
-
className:
|
|
1418
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1419
1419
|
"self-end p-1 transition-opacity focus:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded",
|
|
1420
1420
|
showActions ? "opacity-100 text-destructive" : "opacity-0 text-muted-foreground"
|
|
1421
1421
|
),
|
|
@@ -1427,7 +1427,7 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1427
1427
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col max-w-[80%] md:max-w-[60%]", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1428
1428
|
"div",
|
|
1429
1429
|
{
|
|
1430
|
-
className:
|
|
1430
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1431
1431
|
"px-3.5 py-2 break-words shadow-sm transition-shadow",
|
|
1432
1432
|
bubbleRadius,
|
|
1433
1433
|
bubbleSurface,
|
|
@@ -1438,7 +1438,7 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1438
1438
|
isLastOfRun && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1439
1439
|
"div",
|
|
1440
1440
|
{
|
|
1441
|
-
className:
|
|
1441
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1442
1442
|
"flex items-center gap-1.5 mt-0.5",
|
|
1443
1443
|
isSent ? "justify-end" : "justify-start"
|
|
1444
1444
|
),
|
|
@@ -1459,7 +1459,7 @@ var ChatBubble = React2.memo(function ChatBubble2({
|
|
|
1459
1459
|
onClick: onDelete,
|
|
1460
1460
|
onFocus: () => setIsFocused(true),
|
|
1461
1461
|
onBlur: () => setIsFocused(false),
|
|
1462
|
-
className:
|
|
1462
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1463
1463
|
"self-end p-1 transition-opacity focus:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded",
|
|
1464
1464
|
showActions ? "opacity-100 text-destructive" : "opacity-0 text-muted-foreground"
|
|
1465
1465
|
),
|
|
@@ -1483,9 +1483,9 @@ var useArbiWsStore = zustand.create((set) => ({
|
|
|
1483
1483
|
applyPresence: (msg) => set((s) => ({ presence: { ...s.presence, [msg.user_id]: msg.status } })),
|
|
1484
1484
|
reset: () => set({ status: "disconnected", tasks: {}, lastTaskUpdate: null, presence: {} })
|
|
1485
1485
|
}));
|
|
1486
|
-
var ArbiWsContext =
|
|
1486
|
+
var ArbiWsContext = React.createContext(null);
|
|
1487
1487
|
function useArbiWsContext() {
|
|
1488
|
-
const ctx =
|
|
1488
|
+
const ctx = React.useContext(ArbiWsContext);
|
|
1489
1489
|
if (!ctx) {
|
|
1490
1490
|
throw new Error("useArbiWebSocket hooks must be used within an <ArbiWebSocketProvider>");
|
|
1491
1491
|
}
|
|
@@ -1493,12 +1493,12 @@ function useArbiWsContext() {
|
|
|
1493
1493
|
}
|
|
1494
1494
|
function ArbiWebSocketProvider({ enabled = true, children }) {
|
|
1495
1495
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
1496
|
-
const subscribersRef =
|
|
1496
|
+
const subscribersRef = React.useRef(/* @__PURE__ */ new Set());
|
|
1497
1497
|
const setStatus = useArbiWsStore((s) => s.setStatus);
|
|
1498
1498
|
const applyTaskUpdate = useArbiWsStore((s) => s.applyTaskUpdate);
|
|
1499
1499
|
const applyPresence = useArbiWsStore((s) => s.applyPresence);
|
|
1500
1500
|
const reset = useArbiWsStore((s) => s.reset);
|
|
1501
|
-
const context =
|
|
1501
|
+
const context = React.useMemo(
|
|
1502
1502
|
() => ({
|
|
1503
1503
|
subscribe: (fn) => {
|
|
1504
1504
|
subscribersRef.current.add(fn);
|
|
@@ -1509,7 +1509,7 @@ function ArbiWebSocketProvider({ enabled = true, children }) {
|
|
|
1509
1509
|
}),
|
|
1510
1510
|
[]
|
|
1511
1511
|
);
|
|
1512
|
-
|
|
1512
|
+
React.useEffect(() => {
|
|
1513
1513
|
if (!enabled) {
|
|
1514
1514
|
reset();
|
|
1515
1515
|
return;
|
|
@@ -1564,15 +1564,15 @@ function ArbiWebSocketProvider({ enabled = true, children }) {
|
|
|
1564
1564
|
}
|
|
1565
1565
|
function useArbiWebSocket(onMessage) {
|
|
1566
1566
|
const { subscribe } = useArbiWsContext();
|
|
1567
|
-
const handlerRef =
|
|
1567
|
+
const handlerRef = React.useRef(onMessage);
|
|
1568
1568
|
handlerRef.current = onMessage;
|
|
1569
|
-
|
|
1569
|
+
React.useEffect(() => subscribe((msg) => handlerRef.current(msg)), [subscribe]);
|
|
1570
1570
|
}
|
|
1571
1571
|
function useArbiWsMessage(type, handler) {
|
|
1572
1572
|
const { subscribe } = useArbiWsContext();
|
|
1573
|
-
const handlerRef =
|
|
1573
|
+
const handlerRef = React.useRef(handler);
|
|
1574
1574
|
handlerRef.current = handler;
|
|
1575
|
-
|
|
1575
|
+
React.useEffect(
|
|
1576
1576
|
() => subscribe((msg) => {
|
|
1577
1577
|
if (client.isMessageType(msg, type)) handlerRef.current(msg);
|
|
1578
1578
|
}),
|
|
@@ -1618,7 +1618,7 @@ function useArbiDocumentSync(workspaceId) {
|
|
|
1618
1618
|
}
|
|
1619
1619
|
function useWorkspaceDocs(workspaceId) {
|
|
1620
1620
|
const { data: docs = [], isLoading, isError } = useDocuments(workspaceId);
|
|
1621
|
-
const docIds =
|
|
1621
|
+
const docIds = React.useMemo(
|
|
1622
1622
|
() => docs.map((d) => d.external_id).filter((id) => !!id),
|
|
1623
1623
|
[docs]
|
|
1624
1624
|
);
|
|
@@ -1626,15 +1626,15 @@ function useWorkspaceDocs(workspaceId) {
|
|
|
1626
1626
|
}
|
|
1627
1627
|
function useAiTask() {
|
|
1628
1628
|
const mutation = useAssistantQuery();
|
|
1629
|
-
const [status, setStatus] =
|
|
1630
|
-
const [text, setText] =
|
|
1631
|
-
const [stepCount, setStepCount] =
|
|
1632
|
-
const [error, setError] =
|
|
1633
|
-
const [responseId, setResponseId] =
|
|
1634
|
-
const [artifacts, setArtifacts] =
|
|
1635
|
-
const bufferRef =
|
|
1636
|
-
const artifactsRef =
|
|
1637
|
-
const reset =
|
|
1629
|
+
const [status, setStatus] = React.useState("idle");
|
|
1630
|
+
const [text, setText] = React.useState("");
|
|
1631
|
+
const [stepCount, setStepCount] = React.useState(0);
|
|
1632
|
+
const [error, setError] = React.useState(null);
|
|
1633
|
+
const [responseId, setResponseId] = React.useState(null);
|
|
1634
|
+
const [artifacts, setArtifacts] = React.useState([]);
|
|
1635
|
+
const bufferRef = React.useRef("");
|
|
1636
|
+
const artifactsRef = React.useRef(/* @__PURE__ */ new Map());
|
|
1637
|
+
const reset = React.useCallback(() => {
|
|
1638
1638
|
setStatus("idle");
|
|
1639
1639
|
setText("");
|
|
1640
1640
|
setStepCount(0);
|
|
@@ -1644,7 +1644,7 @@ function useAiTask() {
|
|
|
1644
1644
|
artifactsRef.current = /* @__PURE__ */ new Map();
|
|
1645
1645
|
bufferRef.current = "";
|
|
1646
1646
|
}, []);
|
|
1647
|
-
const run =
|
|
1647
|
+
const run = React.useCallback(
|
|
1648
1648
|
async (question, docIds, opts) => {
|
|
1649
1649
|
setStatus("running");
|
|
1650
1650
|
setText("");
|
|
@@ -1715,7 +1715,7 @@ function useAiTask() {
|
|
|
1715
1715
|
}
|
|
1716
1716
|
function useSemanticSearch(docIds) {
|
|
1717
1717
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
1718
|
-
const [query, setQuery] =
|
|
1718
|
+
const [query, setQuery] = React.useState("");
|
|
1719
1719
|
const mutation = reactQuery.useMutation({
|
|
1720
1720
|
mutationFn: async ({ query: q, mode }) => {
|
|
1721
1721
|
const res = await arbi.assistant.retrieve(q, docIds, { searchMode: mode });
|
|
@@ -1733,7 +1733,7 @@ function useSemanticSearch(docIds) {
|
|
|
1733
1733
|
}
|
|
1734
1734
|
});
|
|
1735
1735
|
const { mutateAsync, reset } = mutation;
|
|
1736
|
-
const search =
|
|
1736
|
+
const search = React.useCallback(
|
|
1737
1737
|
async (q, mode = "hybrid") => {
|
|
1738
1738
|
const trimmed = q.trim();
|
|
1739
1739
|
setQuery(trimmed);
|
|
@@ -1803,7 +1803,7 @@ function AiAnswer({
|
|
|
1803
1803
|
runningHint = "Reading the documents\u2026",
|
|
1804
1804
|
testId = "ai-answer"
|
|
1805
1805
|
}) {
|
|
1806
|
-
const [copied, setCopied] =
|
|
1806
|
+
const [copied, setCopied] = React.useState(false);
|
|
1807
1807
|
const running = status === "running";
|
|
1808
1808
|
const hasText = text.trim().length > 0;
|
|
1809
1809
|
const copy = async () => {
|
|
@@ -1812,9 +1812,9 @@ function AiAnswer({
|
|
|
1812
1812
|
setTimeout(() => setCopied(false), 1600);
|
|
1813
1813
|
};
|
|
1814
1814
|
if (status === "idle" && !hasText) {
|
|
1815
|
-
return emptyHint ? /* @__PURE__ */ jsxRuntime.jsx("p", { className:
|
|
1815
|
+
return emptyHint ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkIZPXHVPJ_cjs.cn("text-sm text-muted-foreground", className), "data-testid": `${testId}-empty`, children: emptyHint }) : null;
|
|
1816
1816
|
}
|
|
1817
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
1817
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkIZPXHVPJ_cjs.cn("space-y-3", className), "data-testid": testId, "data-status": status, children: [
|
|
1818
1818
|
running && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1819
1819
|
"div",
|
|
1820
1820
|
{
|
|
@@ -1838,7 +1838,7 @@ function AiAnswer({
|
|
|
1838
1838
|
}
|
|
1839
1839
|
),
|
|
1840
1840
|
hasText && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1841
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1841
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.AiMarkdown, { isStreaming: running, children: text }),
|
|
1842
1842
|
!running && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border pt-2.5", children: [
|
|
1843
1843
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1844
1844
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "size-3.5 text-ai-accent" }),
|
|
@@ -1883,7 +1883,7 @@ function AiActionCard({
|
|
|
1883
1883
|
const p = typeof prompt === "function" ? prompt() : prompt;
|
|
1884
1884
|
void task.run(p, docIds);
|
|
1885
1885
|
};
|
|
1886
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1886
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
|
|
1887
1887
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
1888
1888
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
1889
1889
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-ai-accent-soft text-ai-accent", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-4" }) }),
|
|
@@ -1893,7 +1893,7 @@ function AiActionCard({
|
|
|
1893
1893
|
] })
|
|
1894
1894
|
] }),
|
|
1895
1895
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1896
|
-
|
|
1896
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
1897
1897
|
{
|
|
1898
1898
|
variant: task.isDone ? "outline" : "accent",
|
|
1899
1899
|
size: "sm",
|
|
@@ -1928,9 +1928,9 @@ function ArtifactCanvas({
|
|
|
1928
1928
|
stepCount,
|
|
1929
1929
|
error = null
|
|
1930
1930
|
}) {
|
|
1931
|
-
const [activeId, setActiveId] =
|
|
1932
|
-
const [copied, setCopied] =
|
|
1933
|
-
|
|
1931
|
+
const [activeId, setActiveId] = React.useState(null);
|
|
1932
|
+
const [copied, setCopied] = React.useState(false);
|
|
1933
|
+
React.useEffect(() => {
|
|
1934
1934
|
if (artifacts.length && (!activeId || !artifacts.some((a) => a.doc_ext_id === activeId))) {
|
|
1935
1935
|
setActiveId(artifacts[artifacts.length - 1].doc_ext_id);
|
|
1936
1936
|
}
|
|
@@ -1940,7 +1940,7 @@ function ArtifactCanvas({
|
|
|
1940
1940
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1941
1941
|
"div",
|
|
1942
1942
|
{
|
|
1943
|
-
className:
|
|
1943
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1944
1944
|
"flex h-full min-h-[280px] flex-col items-center justify-center rounded-xl border border-destructive/30 bg-destructive/5 p-8 text-center",
|
|
1945
1945
|
className
|
|
1946
1946
|
),
|
|
@@ -1956,7 +1956,7 @@ function ArtifactCanvas({
|
|
|
1956
1956
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1957
1957
|
"div",
|
|
1958
1958
|
{
|
|
1959
|
-
className:
|
|
1959
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1960
1960
|
"flex h-full min-h-[280px] flex-col items-center justify-center rounded-xl border border-border bg-ai-surface/40 p-8 text-center",
|
|
1961
1961
|
className
|
|
1962
1962
|
),
|
|
@@ -1977,7 +1977,7 @@ function ArtifactCanvas({
|
|
|
1977
1977
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1978
1978
|
"div",
|
|
1979
1979
|
{
|
|
1980
|
-
className:
|
|
1980
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
1981
1981
|
"flex h-full min-h-[280px] flex-col items-center justify-center rounded-xl border border-dashed border-border bg-secondary/30 p-8 text-center",
|
|
1982
1982
|
className
|
|
1983
1983
|
),
|
|
@@ -2009,7 +2009,7 @@ function ArtifactCanvas({
|
|
|
2009
2009
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2010
2010
|
"div",
|
|
2011
2011
|
{
|
|
2012
|
-
className:
|
|
2012
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2013
2013
|
"flex h-full flex-col overflow-hidden rounded-xl border border-border bg-card",
|
|
2014
2014
|
className
|
|
2015
2015
|
),
|
|
@@ -2025,11 +2025,11 @@ function ArtifactCanvas({
|
|
|
2025
2025
|
children: active.title
|
|
2026
2026
|
}
|
|
2027
2027
|
),
|
|
2028
|
-
isRedline && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2028
|
+
isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Badge, { variant: "accent", className: "gap-1", children: [
|
|
2029
2029
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.GitCompareArrows, { className: "size-3" }),
|
|
2030
2030
|
" Redline"
|
|
2031
2031
|
] }),
|
|
2032
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2032
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Badge, { variant: "secondary", children: [
|
|
2033
2033
|
"v",
|
|
2034
2034
|
active.version
|
|
2035
2035
|
] }),
|
|
@@ -2070,7 +2070,7 @@ function ArtifactCanvas({
|
|
|
2070
2070
|
"button",
|
|
2071
2071
|
{
|
|
2072
2072
|
onClick: () => setActiveId(a.doc_ext_id),
|
|
2073
|
-
className:
|
|
2073
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2074
2074
|
"shrink-0 rounded-md px-2.5 py-1 text-xs font-medium",
|
|
2075
2075
|
a.doc_ext_id === active.doc_ext_id ? "bg-ai-accent-soft text-ai-accent" : "text-muted-foreground hover:bg-accent"
|
|
2076
2076
|
),
|
|
@@ -2085,7 +2085,7 @@ function ArtifactCanvas({
|
|
|
2085
2085
|
animate: { opacity: 1, y: 0 },
|
|
2086
2086
|
transition: { duration: 0.2 },
|
|
2087
2087
|
className: "mx-auto max-w-2xl rounded-lg bg-card p-8 shadow-sm ring-1 ring-border",
|
|
2088
|
-
children: active.mode === "html" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", dangerouslySetInnerHTML: { __html: active.content } }) : active.mode === "text" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap font-mono text-xs text-foreground", children: active.content }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2088
|
+
children: active.mode === "html" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", dangerouslySetInnerHTML: { __html: active.content } }) : active.mode === "text" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap font-mono text-xs text-foreground", children: active.content }) : /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.AiMarkdown, { children: active.content })
|
|
2089
2089
|
},
|
|
2090
2090
|
active.doc_ext_id
|
|
2091
2091
|
) }) })
|
|
@@ -2102,7 +2102,7 @@ function MessageArtifactCard({
|
|
|
2102
2102
|
const Icon = isImage ? lucideReact.Image : lucideReact.FileText;
|
|
2103
2103
|
const statusText = isImage ? isComplete ? "Image ready" : "Generating\u2026" : isComplete ? "Draft ready" : "Drafting\u2026";
|
|
2104
2104
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2105
|
-
|
|
2105
|
+
chunkIZPXHVPJ_cjs.Card,
|
|
2106
2106
|
{
|
|
2107
2107
|
variant: "outline",
|
|
2108
2108
|
className: "mt-3 flex items-center gap-3 px-3 py-2.5",
|
|
@@ -2141,11 +2141,11 @@ function DocSearch({
|
|
|
2141
2141
|
className
|
|
2142
2142
|
}) {
|
|
2143
2143
|
const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
|
|
2144
|
-
const [value, setValue] =
|
|
2144
|
+
const [value, setValue] = React.useState("");
|
|
2145
2145
|
const submit = () => {
|
|
2146
2146
|
if (value.trim()) void search(value, "hybrid");
|
|
2147
2147
|
};
|
|
2148
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
2148
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkIZPXHVPJ_cjs.cn("space-y-3", className), "data-testid": "doc-search", children: [
|
|
2149
2149
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
2150
2150
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
|
|
2151
2151
|
isRunning && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "absolute right-3 top-1/2 size-4 -translate-y-1/2 animate-spin text-ai-accent" }),
|
|
@@ -2178,10 +2178,10 @@ function DocSearch({
|
|
|
2178
2178
|
status === "done" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", "data-testid": "doc-search-results", children: [
|
|
2179
2179
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: results.length === 0 ? `No passages matched \u201C${query}\u201D.` : `${results.length} passage${results.length === 1 ? "" : "s"} for \u201C${query}\u201D` }),
|
|
2180
2180
|
results.slice(0, 8).map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2181
|
-
|
|
2181
|
+
chunkIZPXHVPJ_cjs.Card,
|
|
2182
2182
|
{
|
|
2183
2183
|
variant: "elevated",
|
|
2184
|
-
className:
|
|
2184
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2185
2185
|
"rounded-xl p-3",
|
|
2186
2186
|
onOpenDoc && r.docId && "cursor-pointer transition-colors hover:border-ai-accent/40"
|
|
2187
2187
|
),
|
|
@@ -2191,7 +2191,7 @@ function DocSearch({
|
|
|
2191
2191
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
|
|
2192
2192
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 text-ai-accent" }),
|
|
2193
2193
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: r.docTitle ?? "Document" }),
|
|
2194
|
-
r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2194
|
+
r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Badge, { variant: "secondary", children: [
|
|
2195
2195
|
"p.",
|
|
2196
2196
|
r.page
|
|
2197
2197
|
] }),
|
|
@@ -2208,350 +2208,6 @@ function DocSearch({
|
|
|
2208
2208
|
] })
|
|
2209
2209
|
] });
|
|
2210
2210
|
}
|
|
2211
|
-
var EntityPill = React2.forwardRef(function EntityPill2({
|
|
2212
|
-
icon,
|
|
2213
|
-
label,
|
|
2214
|
-
secondaryText,
|
|
2215
|
-
size = "sm",
|
|
2216
|
-
shape = "rounded",
|
|
2217
|
-
className,
|
|
2218
|
-
labelMaxWidth = "max-w-[320px]",
|
|
2219
|
-
labelClassName,
|
|
2220
|
-
fullWidth = false,
|
|
2221
|
-
highlight = false,
|
|
2222
|
-
onClick,
|
|
2223
|
-
onIconClick,
|
|
2224
|
-
onMoreClick,
|
|
2225
|
-
moreContent,
|
|
2226
|
-
href,
|
|
2227
|
-
disabled = false,
|
|
2228
|
-
tooltipContent,
|
|
2229
|
-
tooltipSide = "bottom",
|
|
2230
|
-
"data-testid": testId
|
|
2231
|
-
}, ref) {
|
|
2232
|
-
const shapeClass = shape === "pill" ? "rounded-full" : "rounded-md";
|
|
2233
|
-
const sizeClasses2 = size === "base" ? "gap-1.5 px-1.5 py-0.5" : "gap-1 px-1";
|
|
2234
|
-
const textSizeClass = size === "base" ? "text-base" : "text-sm";
|
|
2235
|
-
const baseClasses = chunkFIPS3VPH_cjs.cn(
|
|
2236
|
-
"group/pill items-center",
|
|
2237
|
-
fullWidth ? "flex w-full" : "inline-flex",
|
|
2238
|
-
sizeClasses2,
|
|
2239
|
-
shapeClass,
|
|
2240
|
-
"bg-muted",
|
|
2241
|
-
"border border-border",
|
|
2242
|
-
"transition-all",
|
|
2243
|
-
className
|
|
2244
|
-
);
|
|
2245
|
-
const interactiveClasses = "cursor-pointer hover:bg-muted/80";
|
|
2246
|
-
const disabledClasses = "cursor-default opacity-60";
|
|
2247
|
-
const highlightClasses = "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground";
|
|
2248
|
-
const mainContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2249
|
-
onIconClick ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2250
|
-
"span",
|
|
2251
|
-
{
|
|
2252
|
-
role: "button",
|
|
2253
|
-
tabIndex: 0,
|
|
2254
|
-
className: "flex-shrink-0 cursor-pointer hover:opacity-70 transition-opacity",
|
|
2255
|
-
onClick: (e) => {
|
|
2256
|
-
e.stopPropagation();
|
|
2257
|
-
onIconClick(e);
|
|
2258
|
-
},
|
|
2259
|
-
children: icon
|
|
2260
|
-
}
|
|
2261
|
-
) : icon,
|
|
2262
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2263
|
-
"span",
|
|
2264
|
-
{
|
|
2265
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
2266
|
-
textSizeClass,
|
|
2267
|
-
"font-medium truncate leading-tight min-w-0",
|
|
2268
|
-
labelMaxWidth,
|
|
2269
|
-
labelClassName
|
|
2270
|
-
),
|
|
2271
|
-
children: label
|
|
2272
|
-
}
|
|
2273
|
-
),
|
|
2274
|
-
secondaryText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground flex-shrink-0 leading-none", children: secondaryText })
|
|
2275
|
-
] });
|
|
2276
|
-
const tooltipWrap = (content, tip, side = tooltipSide, triggerClassName, triggerProps) => /* @__PURE__ */ jsxRuntime.jsxs(chunkFIPS3VPH_cjs.Tooltip, { children: [
|
|
2277
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2278
|
-
chunkFIPS3VPH_cjs.TooltipTrigger,
|
|
2279
|
-
{
|
|
2280
|
-
onFocusCapture: (e) => e.stopPropagation(),
|
|
2281
|
-
className: triggerClassName,
|
|
2282
|
-
...triggerProps,
|
|
2283
|
-
children: content
|
|
2284
|
-
}
|
|
2285
|
-
),
|
|
2286
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.TooltipContent, { side, className: "p-2", children: tip })
|
|
2287
|
-
] });
|
|
2288
|
-
const mainAreaClass = chunkFIPS3VPH_cjs.cn("inline-flex items-center gap-1", fullWidth && "min-w-0 flex-1");
|
|
2289
|
-
if (onMoreClick || moreContent) {
|
|
2290
|
-
let mainArea;
|
|
2291
|
-
if (tooltipContent) {
|
|
2292
|
-
mainArea = tooltipWrap(
|
|
2293
|
-
mainContent,
|
|
2294
|
-
tooltipContent,
|
|
2295
|
-
tooltipSide,
|
|
2296
|
-
chunkFIPS3VPH_cjs.cn(mainAreaClass, disabled && "opacity-60"),
|
|
2297
|
-
{
|
|
2298
|
-
type: "button",
|
|
2299
|
-
onClick: href ? onClick : disabled ? void 0 : onClick,
|
|
2300
|
-
disabled: disabled || void 0
|
|
2301
|
-
}
|
|
2302
|
-
);
|
|
2303
|
-
} else if (href) {
|
|
2304
|
-
mainArea = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2305
|
-
"a",
|
|
2306
|
-
{
|
|
2307
|
-
href,
|
|
2308
|
-
target: "_blank",
|
|
2309
|
-
rel: "noopener noreferrer",
|
|
2310
|
-
className: mainAreaClass,
|
|
2311
|
-
onClick,
|
|
2312
|
-
children: mainContent
|
|
2313
|
-
}
|
|
2314
|
-
);
|
|
2315
|
-
} else if (onClick) {
|
|
2316
|
-
mainArea = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2317
|
-
"button",
|
|
2318
|
-
{
|
|
2319
|
-
type: "button",
|
|
2320
|
-
onClick: disabled ? void 0 : onClick,
|
|
2321
|
-
disabled,
|
|
2322
|
-
className: chunkFIPS3VPH_cjs.cn("inline-flex items-center gap-1", disabled && "opacity-60"),
|
|
2323
|
-
children: mainContent
|
|
2324
|
-
}
|
|
2325
|
-
);
|
|
2326
|
-
} else {
|
|
2327
|
-
mainArea = /* @__PURE__ */ jsxRuntime.jsx("span", { className: mainAreaClass, children: mainContent });
|
|
2328
|
-
}
|
|
2329
|
-
const moreArea = moreContent ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0 leading-none", children: moreContent }) : tooltipWrap(
|
|
2330
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreVertical, { className: "w-3.5 h-3.5" }),
|
|
2331
|
-
"Click for more",
|
|
2332
|
-
tooltipSide,
|
|
2333
|
-
"flex-shrink-0 leading-none text-muted-foreground hover:text-foreground",
|
|
2334
|
-
{
|
|
2335
|
-
type: "button",
|
|
2336
|
-
onClick: (e) => {
|
|
2337
|
-
e.stopPropagation();
|
|
2338
|
-
onMoreClick?.(e);
|
|
2339
|
-
}
|
|
2340
|
-
}
|
|
2341
|
-
);
|
|
2342
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2343
|
-
"span",
|
|
2344
|
-
{
|
|
2345
|
-
ref,
|
|
2346
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
2347
|
-
baseClasses,
|
|
2348
|
-
(onClick || href) && !disabled && interactiveClasses,
|
|
2349
|
-
highlight && highlightClasses
|
|
2350
|
-
),
|
|
2351
|
-
"data-testid": testId,
|
|
2352
|
-
children: [
|
|
2353
|
-
mainArea,
|
|
2354
|
-
moreArea
|
|
2355
|
-
]
|
|
2356
|
-
}
|
|
2357
|
-
);
|
|
2358
|
-
}
|
|
2359
|
-
if (tooltipContent) {
|
|
2360
|
-
if (href) {
|
|
2361
|
-
return tooltipWrap(
|
|
2362
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2363
|
-
"a",
|
|
2364
|
-
{
|
|
2365
|
-
href,
|
|
2366
|
-
target: "_blank",
|
|
2367
|
-
rel: "noopener noreferrer",
|
|
2368
|
-
className: mainAreaClass,
|
|
2369
|
-
onClick,
|
|
2370
|
-
children: mainContent
|
|
2371
|
-
}
|
|
2372
|
-
),
|
|
2373
|
-
tooltipContent,
|
|
2374
|
-
tooltipSide,
|
|
2375
|
-
chunkFIPS3VPH_cjs.cn(baseClasses, interactiveClasses),
|
|
2376
|
-
{ "data-testid": testId }
|
|
2377
|
-
);
|
|
2378
|
-
}
|
|
2379
|
-
return tooltipWrap(
|
|
2380
|
-
mainContent,
|
|
2381
|
-
tooltipContent,
|
|
2382
|
-
tooltipSide,
|
|
2383
|
-
chunkFIPS3VPH_cjs.cn(
|
|
2384
|
-
baseClasses,
|
|
2385
|
-
onClick && !disabled ? interactiveClasses : "",
|
|
2386
|
-
disabled ? disabledClasses : "",
|
|
2387
|
-
highlight && highlightClasses
|
|
2388
|
-
),
|
|
2389
|
-
{
|
|
2390
|
-
type: "button",
|
|
2391
|
-
ref,
|
|
2392
|
-
onClick: onClick && !disabled ? onClick : void 0,
|
|
2393
|
-
disabled: disabled || void 0,
|
|
2394
|
-
"data-testid": testId
|
|
2395
|
-
}
|
|
2396
|
-
);
|
|
2397
|
-
}
|
|
2398
|
-
if (href) {
|
|
2399
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2400
|
-
"a",
|
|
2401
|
-
{
|
|
2402
|
-
ref,
|
|
2403
|
-
href,
|
|
2404
|
-
target: "_blank",
|
|
2405
|
-
rel: "noopener noreferrer",
|
|
2406
|
-
className: chunkFIPS3VPH_cjs.cn(baseClasses, interactiveClasses),
|
|
2407
|
-
"data-testid": testId,
|
|
2408
|
-
onClick,
|
|
2409
|
-
children: mainContent
|
|
2410
|
-
}
|
|
2411
|
-
);
|
|
2412
|
-
}
|
|
2413
|
-
if (onClick) {
|
|
2414
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2415
|
-
"button",
|
|
2416
|
-
{
|
|
2417
|
-
ref,
|
|
2418
|
-
type: "button",
|
|
2419
|
-
onClick: disabled ? void 0 : onClick,
|
|
2420
|
-
disabled,
|
|
2421
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
2422
|
-
baseClasses,
|
|
2423
|
-
disabled ? disabledClasses : interactiveClasses,
|
|
2424
|
-
highlight && highlightClasses
|
|
2425
|
-
),
|
|
2426
|
-
"data-testid": testId,
|
|
2427
|
-
children: mainContent
|
|
2428
|
-
}
|
|
2429
|
-
);
|
|
2430
|
-
}
|
|
2431
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2432
|
-
"span",
|
|
2433
|
-
{
|
|
2434
|
-
ref,
|
|
2435
|
-
className: chunkFIPS3VPH_cjs.cn(baseClasses, highlight && highlightClasses),
|
|
2436
|
-
"data-testid": testId,
|
|
2437
|
-
children: mainContent
|
|
2438
|
-
}
|
|
2439
|
-
);
|
|
2440
|
-
});
|
|
2441
|
-
var TAG_TYPE_LABELS = {
|
|
2442
|
-
checkbox: "Checkbox",
|
|
2443
|
-
select: "Select",
|
|
2444
|
-
number: "Number",
|
|
2445
|
-
text: "Text",
|
|
2446
|
-
folder: "Folder",
|
|
2447
|
-
search: "Saved Search",
|
|
2448
|
-
date: "Date",
|
|
2449
|
-
assistant: "AI Assistant"
|
|
2450
|
-
};
|
|
2451
|
-
var TAG_TYPE_ICONS = {
|
|
2452
|
-
checkbox: lucideReact.SquareCheckBig,
|
|
2453
|
-
select: lucideReact.List,
|
|
2454
|
-
number: lucideReact.Hash,
|
|
2455
|
-
text: lucideReact.NotebookPen,
|
|
2456
|
-
folder: lucideReact.Folder,
|
|
2457
|
-
search: lucideReact.Search,
|
|
2458
|
-
date: lucideReact.Calendar,
|
|
2459
|
-
assistant: lucideReact.Bot
|
|
2460
|
-
};
|
|
2461
|
-
function getTagTypeIcon(type) {
|
|
2462
|
-
return TAG_TYPE_ICONS[type ?? "text"] || lucideReact.NotebookPen;
|
|
2463
|
-
}
|
|
2464
|
-
function getTagTypeLabel(type) {
|
|
2465
|
-
const t = type ?? "text";
|
|
2466
|
-
return TAG_TYPE_LABELS[t] || t;
|
|
2467
|
-
}
|
|
2468
|
-
var BASE_COLORS = {
|
|
2469
|
-
"0": "#10b981",
|
|
2470
|
-
"1": "#3b82f6",
|
|
2471
|
-
"2": "#8b5cf6",
|
|
2472
|
-
"3": "#f43f5e",
|
|
2473
|
-
"4": "#f59e0b",
|
|
2474
|
-
"5": "#84cc16",
|
|
2475
|
-
"6": "#a855f7",
|
|
2476
|
-
"7": "#06b6d4",
|
|
2477
|
-
"8": "#f97316",
|
|
2478
|
-
"9": "#14b8a6",
|
|
2479
|
-
a: "#ef4444",
|
|
2480
|
-
b: "#6366f1",
|
|
2481
|
-
c: "#ec4899",
|
|
2482
|
-
d: "#22c55e",
|
|
2483
|
-
e: "#eab308",
|
|
2484
|
-
f: "#0ea5e9"
|
|
2485
|
-
};
|
|
2486
|
-
function getEntityColor(entityId) {
|
|
2487
|
-
return BASE_COLORS[entityId[4]] || BASE_COLORS["0"];
|
|
2488
|
-
}
|
|
2489
|
-
function TagEntity({
|
|
2490
|
-
tag,
|
|
2491
|
-
size = "md",
|
|
2492
|
-
className = "",
|
|
2493
|
-
onClick,
|
|
2494
|
-
showTooltip = true,
|
|
2495
|
-
tooltipContent
|
|
2496
|
-
}) {
|
|
2497
|
-
const tagType = tag.tag_type?.type ?? "text";
|
|
2498
|
-
const iconSize = size === "sm" ? 12 : size === "md" ? 14 : 16;
|
|
2499
|
-
const Icon = getTagTypeIcon(tagType);
|
|
2500
|
-
const sizeClasses2 = {
|
|
2501
|
-
sm: "p-0.5",
|
|
2502
|
-
md: "p-1",
|
|
2503
|
-
lg: "p-1.5"
|
|
2504
|
-
};
|
|
2505
|
-
const tagColor = tag.color ?? getEntityColor(tag.external_id);
|
|
2506
|
-
const iconElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2507
|
-
"span",
|
|
2508
|
-
{
|
|
2509
|
-
className: `inline-flex items-center justify-center rounded-md text-white flex-shrink-0 ${sizeClasses2[size]}`,
|
|
2510
|
-
style: { backgroundColor: tagColor },
|
|
2511
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: iconSize, className: "flex-shrink-0" })
|
|
2512
|
-
}
|
|
2513
|
-
);
|
|
2514
|
-
const pillSize = size === "lg" ? "base" : "sm";
|
|
2515
|
-
const defaultTooltip = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
2516
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2517
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2518
|
-
"span",
|
|
2519
|
-
{
|
|
2520
|
-
className: "inline-flex items-center justify-center rounded-md text-white p-1",
|
|
2521
|
-
style: { backgroundColor: tagColor },
|
|
2522
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 16 })
|
|
2523
|
-
}
|
|
2524
|
-
),
|
|
2525
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-sm", children: tag.name })
|
|
2526
|
-
] }),
|
|
2527
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5 text-sm", children: [
|
|
2528
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2529
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
2530
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: getTagTypeLabel(tagType) })
|
|
2531
|
-
] }),
|
|
2532
|
-
tag.doctag_count != null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2533
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Documents:" }),
|
|
2534
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.Badge, { variant: "secondary", className: "h-5 min-w-[20px] justify-center", children: tag.doctag_count ?? 0 })
|
|
2535
|
-
] }),
|
|
2536
|
-
tag.shared != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: tag.shared ? "Shared" : "Private" }) })
|
|
2537
|
-
] })
|
|
2538
|
-
] });
|
|
2539
|
-
const resolvedTooltip = showTooltip ? tooltipContent ?? defaultTooltip : void 0;
|
|
2540
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2541
|
-
EntityPill,
|
|
2542
|
-
{
|
|
2543
|
-
icon: iconElement,
|
|
2544
|
-
label: tag.name,
|
|
2545
|
-
size: pillSize,
|
|
2546
|
-
shape: "rounded",
|
|
2547
|
-
labelMaxWidth: "max-w-[180px]",
|
|
2548
|
-
tooltipContent: resolvedTooltip,
|
|
2549
|
-
onClick,
|
|
2550
|
-
className,
|
|
2551
|
-
"data-testid": `tag-entity-${tag.external_id}`
|
|
2552
|
-
}
|
|
2553
|
-
);
|
|
2554
|
-
}
|
|
2555
2211
|
function DocumentReview({
|
|
2556
2212
|
docId,
|
|
2557
2213
|
doc,
|
|
@@ -2563,7 +2219,7 @@ function DocumentReview({
|
|
|
2563
2219
|
}) {
|
|
2564
2220
|
const parsedQuery = useParsedDocument(docId, stage);
|
|
2565
2221
|
const tagsQuery = useTags(workspaceId);
|
|
2566
|
-
const tagNameById =
|
|
2222
|
+
const tagNameById = React__default.default.useMemo(() => {
|
|
2567
2223
|
const map = /* @__PURE__ */ new Map();
|
|
2568
2224
|
for (const t of tagsQuery.data ?? []) {
|
|
2569
2225
|
if (t.external_id) map.set(t.external_id, t.name ?? t.external_id.slice(0, 8));
|
|
@@ -2571,7 +2227,7 @@ function DocumentReview({
|
|
|
2571
2227
|
return map;
|
|
2572
2228
|
}, [tagsQuery.data]);
|
|
2573
2229
|
const title = doc?.doc_metadata?.title || doc?.file_name || "Document";
|
|
2574
|
-
const { findings, chunkToTag } =
|
|
2230
|
+
const { findings, chunkToTag } = React__default.default.useMemo(() => {
|
|
2575
2231
|
const list = [];
|
|
2576
2232
|
const chunkTag = /* @__PURE__ */ new Map();
|
|
2577
2233
|
for (const dt of doc?.doctags ?? []) {
|
|
@@ -2587,7 +2243,7 @@ function DocumentReview({
|
|
|
2587
2243
|
}
|
|
2588
2244
|
return { findings: list, chunkToTag: chunkTag };
|
|
2589
2245
|
}, [doc?.doctags]);
|
|
2590
|
-
const pages =
|
|
2246
|
+
const pages = React__default.default.useMemo(() => {
|
|
2591
2247
|
const chunks = parsedQuery.data?.chunks ?? [];
|
|
2592
2248
|
const byPage = /* @__PURE__ */ new Map();
|
|
2593
2249
|
for (const c of chunks) {
|
|
@@ -2597,9 +2253,9 @@ function DocumentReview({
|
|
|
2597
2253
|
}
|
|
2598
2254
|
return [...byPage.entries()].sort((a, b) => a[0] - b[0]);
|
|
2599
2255
|
}, [parsedQuery.data]);
|
|
2600
|
-
const scrollRef =
|
|
2601
|
-
const [flash, setFlash] =
|
|
2602
|
-
const jumpToChunk =
|
|
2256
|
+
const scrollRef = React__default.default.useRef(null);
|
|
2257
|
+
const [flash, setFlash] = React__default.default.useState(null);
|
|
2258
|
+
const jumpToChunk = React__default.default.useCallback((chunkId) => {
|
|
2603
2259
|
const el = scrollRef.current?.querySelector(`[data-chunk-id="${chunkId}"]`);
|
|
2604
2260
|
if (!el) return;
|
|
2605
2261
|
el.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
@@ -2607,7 +2263,7 @@ function DocumentReview({
|
|
|
2607
2263
|
window.setTimeout(() => setFlash((c) => c === chunkId ? null : c), 1600);
|
|
2608
2264
|
}, []);
|
|
2609
2265
|
const parsedReady = !parsedQuery.isLoading && !!parsedQuery.data;
|
|
2610
|
-
|
|
2266
|
+
React__default.default.useEffect(() => {
|
|
2611
2267
|
if (!activeChunkId || !parsedReady) return;
|
|
2612
2268
|
const raf = window.requestAnimationFrame(() => jumpToChunk(activeChunkId));
|
|
2613
2269
|
return () => window.cancelAnimationFrame(raf);
|
|
@@ -2616,7 +2272,7 @@ function DocumentReview({
|
|
|
2616
2272
|
"div",
|
|
2617
2273
|
{
|
|
2618
2274
|
"data-testid": "document-review",
|
|
2619
|
-
className:
|
|
2275
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2620
2276
|
"flex h-full min-h-0 flex-col overflow-hidden rounded-lg border bg-card",
|
|
2621
2277
|
className
|
|
2622
2278
|
),
|
|
@@ -2629,7 +2285,7 @@ function DocumentReview({
|
|
|
2629
2285
|
findings.length ? ` \xB7 ${findings.length} findings` : ""
|
|
2630
2286
|
] })
|
|
2631
2287
|
] }),
|
|
2632
|
-
doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2288
|
+
doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
|
|
2633
2289
|
onClose ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2634
2290
|
"button",
|
|
2635
2291
|
{
|
|
@@ -2666,7 +2322,7 @@ function DocumentReview({
|
|
|
2666
2322
|
className: "w-full cursor-pointer rounded-md border p-2 text-left text-xs transition hover:border-ring hover:bg-muted/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
2667
2323
|
children: [
|
|
2668
2324
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2669
|
-
TagEntity,
|
|
2325
|
+
chunkIZPXHVPJ_cjs.TagEntity,
|
|
2670
2326
|
{
|
|
2671
2327
|
size: "sm",
|
|
2672
2328
|
tag: {
|
|
@@ -2700,7 +2356,7 @@ function DocumentReview({
|
|
|
2700
2356
|
{
|
|
2701
2357
|
"data-chunk-id": cid,
|
|
2702
2358
|
"data-testid": isActive ? "review-chunk-active" : highlighted ? "review-chunk-cited" : "review-chunk",
|
|
2703
|
-
className:
|
|
2359
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2704
2360
|
"scroll-mt-4 rounded-md px-2 py-1 transition-colors",
|
|
2705
2361
|
highlighted && "bg-[var(--color-ai-accent-soft,theme(colors.amber.100))] ring-1 ring-inset ring-border",
|
|
2706
2362
|
// The externally-selected search passage wins the
|
|
@@ -2711,7 +2367,7 @@ function DocumentReview({
|
|
|
2711
2367
|
),
|
|
2712
2368
|
children: [
|
|
2713
2369
|
highlighted ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2714
|
-
TagEntity,
|
|
2370
|
+
chunkIZPXHVPJ_cjs.TagEntity,
|
|
2715
2371
|
{
|
|
2716
2372
|
size: "sm",
|
|
2717
2373
|
tag: {
|
|
@@ -2720,7 +2376,7 @@ function DocumentReview({
|
|
|
2720
2376
|
}
|
|
2721
2377
|
}
|
|
2722
2378
|
) }) : null,
|
|
2723
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2379
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.MarkdownRenderer, { className: "prose prose-sm max-w-none dark:prose-invert", children: c.content })
|
|
2724
2380
|
]
|
|
2725
2381
|
},
|
|
2726
2382
|
cid ?? i
|
|
@@ -2746,7 +2402,7 @@ function RelevanceDot({ score }) {
|
|
|
2746
2402
|
role: "img",
|
|
2747
2403
|
"aria-label": tier.label,
|
|
2748
2404
|
title: `${tier.label} (${score.toFixed(2)})`,
|
|
2749
|
-
className:
|
|
2405
|
+
className: chunkIZPXHVPJ_cjs.cn("size-1.5 shrink-0 rounded-full", tier.tone),
|
|
2750
2406
|
"data-testid": "passage-relevance"
|
|
2751
2407
|
}
|
|
2752
2408
|
);
|
|
@@ -2775,7 +2431,7 @@ function PassageCard({
|
|
|
2775
2431
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2776
2432
|
"div",
|
|
2777
2433
|
{
|
|
2778
|
-
className:
|
|
2434
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2779
2435
|
"group rounded-lg border border-border bg-card p-3 text-left transition-colors",
|
|
2780
2436
|
onClick && "hover:border-ai-accent/40 focus-within:ring-2 focus-within:ring-ai-accent/40",
|
|
2781
2437
|
active && "border-ai-accent/60 ring-1 ring-ai-accent/30",
|
|
@@ -2817,7 +2473,7 @@ function queryTerms(query) {
|
|
|
2817
2473
|
return [...terms];
|
|
2818
2474
|
}
|
|
2819
2475
|
function HighlightedSnippet({ text, terms }) {
|
|
2820
|
-
const nodes =
|
|
2476
|
+
const nodes = React.useMemo(() => {
|
|
2821
2477
|
if (terms.length === 0) return [text];
|
|
2822
2478
|
const escaped = terms.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
2823
2479
|
const re = new RegExp(`(${escaped.join("|")})`, "gi");
|
|
@@ -2842,7 +2498,7 @@ function ResultRow({
|
|
|
2842
2498
|
header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2843
2499
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 shrink-0 text-ai-accent" }),
|
|
2844
2500
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: result.docTitle ?? "Document" }),
|
|
2845
|
-
result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2501
|
+
result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Badge, { variant: "secondary", children: [
|
|
2846
2502
|
"p.",
|
|
2847
2503
|
result.page
|
|
2848
2504
|
] })
|
|
@@ -2864,16 +2520,16 @@ function SemanticSearch({
|
|
|
2864
2520
|
"data-testid": testId = "arbi-semantic-search"
|
|
2865
2521
|
}) {
|
|
2866
2522
|
const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
|
|
2867
|
-
const [value, setValue] =
|
|
2868
|
-
const [selected, setSelected] =
|
|
2523
|
+
const [value, setValue] = React.useState("");
|
|
2524
|
+
const [selected, setSelected] = React.useState(null);
|
|
2869
2525
|
const { data: docs = [] } = useDocuments(workspaceId, { enabled: !!workspaceId });
|
|
2870
|
-
const docMap =
|
|
2526
|
+
const docMap = React.useMemo(() => {
|
|
2871
2527
|
const map = /* @__PURE__ */ new Map();
|
|
2872
2528
|
for (const d of docs) if (d.external_id) map.set(d.external_id, d);
|
|
2873
2529
|
return map;
|
|
2874
2530
|
}, [docs]);
|
|
2875
|
-
const terms =
|
|
2876
|
-
const submit =
|
|
2531
|
+
const terms = React.useMemo(() => queryTerms(query), [query]);
|
|
2532
|
+
const submit = React.useCallback(() => {
|
|
2877
2533
|
const q = value.trim();
|
|
2878
2534
|
if (!q) return;
|
|
2879
2535
|
setSelected(null);
|
|
@@ -2881,11 +2537,11 @@ function SemanticSearch({
|
|
|
2881
2537
|
}, [value, search, searchMode]);
|
|
2882
2538
|
const selectedDoc = selected?.docId ? docMap.get(selected.docId) : void 0;
|
|
2883
2539
|
const hasResults = status === "done" && results.length > 0;
|
|
2884
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": testId, className:
|
|
2540
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": testId, className: chunkIZPXHVPJ_cjs.cn("flex min-h-0 flex-col gap-4 md:flex-row", className), children: [
|
|
2885
2541
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2886
2542
|
"div",
|
|
2887
2543
|
{
|
|
2888
|
-
className:
|
|
2544
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
2889
2545
|
"flex min-h-0 flex-col gap-3 md:w-[22rem] md:shrink-0",
|
|
2890
2546
|
selected && "hidden md:flex"
|
|
2891
2547
|
),
|
|
@@ -2948,11 +2604,11 @@ function SemanticSearch({
|
|
|
2948
2604
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2949
2605
|
"div",
|
|
2950
2606
|
{
|
|
2951
|
-
className:
|
|
2607
|
+
className: chunkIZPXHVPJ_cjs.cn("min-h-0 min-w-0 flex-1", !selected && "hidden md:block"),
|
|
2952
2608
|
"data-testid": "arbi-semantic-search-viewer",
|
|
2953
2609
|
children: selected && selected.docId ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col gap-2", children: [
|
|
2954
2610
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2955
|
-
|
|
2611
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
2956
2612
|
{
|
|
2957
2613
|
variant: "ghost",
|
|
2958
2614
|
size: "sm",
|
|
@@ -2993,7 +2649,7 @@ function SemanticSearch({
|
|
|
2993
2649
|
}
|
|
2994
2650
|
function DocQaPanel({ docId, docName }) {
|
|
2995
2651
|
const task = useAiTask();
|
|
2996
|
-
const [q, setQ] =
|
|
2652
|
+
const [q, setQ] = React.useState("");
|
|
2997
2653
|
const ask = () => {
|
|
2998
2654
|
const question = q.trim();
|
|
2999
2655
|
if (!question || task.isRunning) return;
|
|
@@ -3011,7 +2667,7 @@ Question: ${question}`,
|
|
|
3011
2667
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-3", "data-testid": "doc-qa", children: [
|
|
3012
2668
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
3013
2669
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3014
|
-
|
|
2670
|
+
chunkIZPXHVPJ_cjs.Input,
|
|
3015
2671
|
{
|
|
3016
2672
|
value: q,
|
|
3017
2673
|
onChange: (e) => setQ(e.target.value),
|
|
@@ -3022,7 +2678,7 @@ Question: ${question}`,
|
|
|
3022
2678
|
}
|
|
3023
2679
|
),
|
|
3024
2680
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3025
|
-
|
|
2681
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
3026
2682
|
{
|
|
3027
2683
|
variant: "accent",
|
|
3028
2684
|
size: "icon",
|
|
@@ -3034,7 +2690,7 @@ Question: ${question}`,
|
|
|
3034
2690
|
}
|
|
3035
2691
|
),
|
|
3036
2692
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3037
|
-
|
|
2693
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
3038
2694
|
{
|
|
3039
2695
|
variant: "outline",
|
|
3040
2696
|
size: "sm",
|
|
@@ -3098,7 +2754,7 @@ var CitationRendererComponent = ({
|
|
|
3098
2754
|
onCloseCitation,
|
|
3099
2755
|
onDismissCitation
|
|
3100
2756
|
}) => {
|
|
3101
|
-
const chunkMap =
|
|
2757
|
+
const chunkMap = React.useMemo(() => {
|
|
3102
2758
|
const map = /* @__PURE__ */ new Map();
|
|
3103
2759
|
if (citationData) {
|
|
3104
2760
|
Object.entries(citationData).forEach(([, docChunks]) => {
|
|
@@ -3113,17 +2769,17 @@ var CitationRendererComponent = ({
|
|
|
3113
2769
|
}
|
|
3114
2770
|
return map;
|
|
3115
2771
|
}, [citationData]);
|
|
3116
|
-
const getChunkDetails =
|
|
2772
|
+
const getChunkDetails = React.useCallback(
|
|
3117
2773
|
(chunkIds) => [...new Set(chunkIds)].map((id) => chunkMap.get(id)).filter((c) => c !== void 0),
|
|
3118
2774
|
[chunkMap]
|
|
3119
2775
|
);
|
|
3120
|
-
const handleChunkClick =
|
|
2776
|
+
const handleChunkClick = React.useCallback(
|
|
3121
2777
|
(citationNum, chunkIds, chunk) => {
|
|
3122
2778
|
onActivateChunk({ messageId, citationNum, chunkIds, chunk, citationData });
|
|
3123
2779
|
},
|
|
3124
2780
|
[messageId, citationData, onActivateChunk]
|
|
3125
2781
|
);
|
|
3126
|
-
const markdownComponents =
|
|
2782
|
+
const markdownComponents = React.useMemo(() => {
|
|
3127
2783
|
const components = {
|
|
3128
2784
|
a: ({ href, children, ...props }) => {
|
|
3129
2785
|
if (!href?.startsWith("#cite-")) {
|
|
@@ -3167,7 +2823,7 @@ var CitationRendererComponent = ({
|
|
|
3167
2823
|
onCloseCitation,
|
|
3168
2824
|
onDismissCitation
|
|
3169
2825
|
]);
|
|
3170
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
2826
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkIZPXHVPJ_cjs.cn("citation-container", className), "data-testid": "citation-renderer", children: renderMarkdown({ components: markdownComponents, isStreaming, children: content }) });
|
|
3171
2827
|
};
|
|
3172
2828
|
var CitationPopover = ({
|
|
3173
2829
|
citationNum,
|
|
@@ -3184,13 +2840,13 @@ var CitationPopover = ({
|
|
|
3184
2840
|
const { activeCitationKey, viewingPassageId, isOnConversationPage } = useCitationState();
|
|
3185
2841
|
const isActive = activeCitationKey === `${messageId}-${citationNum}`;
|
|
3186
2842
|
const open = isActive && isOnConversationPage;
|
|
3187
|
-
const chatContainer =
|
|
2843
|
+
const chatContainer = React.useMemo(
|
|
3188
2844
|
() => document.querySelector('main[data-testid^="conversation-"]'),
|
|
3189
2845
|
[]
|
|
3190
2846
|
);
|
|
3191
|
-
const triggerRef =
|
|
3192
|
-
const [alignOffset, setAlignOffset] =
|
|
3193
|
-
const handleOpen =
|
|
2847
|
+
const triggerRef = React.useRef(null);
|
|
2848
|
+
const [alignOffset, setAlignOffset] = React.useState(0);
|
|
2849
|
+
const handleOpen = React.useCallback(() => {
|
|
3194
2850
|
if (triggerRef.current && chatContainer) {
|
|
3195
2851
|
const triggerLeft = triggerRef.current.getBoundingClientRect().left;
|
|
3196
2852
|
const chatLeft = chatContainer.getBoundingClientRect().left;
|
|
@@ -3201,7 +2857,7 @@ var CitationPopover = ({
|
|
|
3201
2857
|
onChunkClick(chunks[0]);
|
|
3202
2858
|
}
|
|
3203
2859
|
}, [onOpen, onChunkClick, chunks, chatContainer]);
|
|
3204
|
-
const byDoc =
|
|
2860
|
+
const byDoc = React.useMemo(() => {
|
|
3205
2861
|
const map = /* @__PURE__ */ new Map();
|
|
3206
2862
|
chunks.forEach((chunk) => {
|
|
3207
2863
|
const docId = chunk.metadata.doc_ext_id ?? "unknown";
|
|
@@ -3212,7 +2868,7 @@ var CitationPopover = ({
|
|
|
3212
2868
|
return Array.from(map.entries()).map(([docId, val]) => ({ docId, ...val }));
|
|
3213
2869
|
}, [chunks]);
|
|
3214
2870
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3215
|
-
|
|
2871
|
+
chunkIZPXHVPJ_cjs.Popover,
|
|
3216
2872
|
{
|
|
3217
2873
|
open,
|
|
3218
2874
|
onOpenChange: (next) => {
|
|
@@ -3224,7 +2880,7 @@ var CitationPopover = ({
|
|
|
3224
2880
|
}
|
|
3225
2881
|
},
|
|
3226
2882
|
children: [
|
|
3227
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2883
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3228
2884
|
CitationLink,
|
|
3229
2885
|
{
|
|
3230
2886
|
ref: triggerRef,
|
|
@@ -3235,7 +2891,7 @@ var CitationPopover = ({
|
|
|
3235
2891
|
}
|
|
3236
2892
|
) }),
|
|
3237
2893
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3238
|
-
|
|
2894
|
+
chunkIZPXHVPJ_cjs.PopoverContent,
|
|
3239
2895
|
{
|
|
3240
2896
|
className: "z-[42] w-[min(var(--radix-popover-content-available-width),48rem)] min-w-0 p-0 max-h-[75vh] overflow-y-auto border-2 border-border shadow-xl",
|
|
3241
2897
|
align: "start",
|
|
@@ -3302,7 +2958,7 @@ var CitationPopover = ({
|
|
|
3302
2958
|
{
|
|
3303
2959
|
"data-testid": `citation-chunk-${chunk.metadata.chunk_ext_id}`,
|
|
3304
2960
|
onClick: () => onChunkClick(chunk),
|
|
3305
|
-
className:
|
|
2961
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
3306
2962
|
"w-full text-left text-xs rounded px-2 py-1.5 transition-colors flex items-start gap-2 mb-1 last:mb-0",
|
|
3307
2963
|
isSelected ? "bg-yellow-100 dark:bg-yellow-900/30 text-yellow-900 dark:text-yellow-100" : "text-muted-foreground hover:text-primary hover:bg-muted"
|
|
3308
2964
|
),
|
|
@@ -3336,12 +2992,12 @@ var CitationPopover = ({
|
|
|
3336
2992
|
}
|
|
3337
2993
|
);
|
|
3338
2994
|
};
|
|
3339
|
-
var CitationLink =
|
|
2995
|
+
var CitationLink = React__default.default.forwardRef(
|
|
3340
2996
|
({ citationNum, isActive, isStreaming, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3341
2997
|
"span",
|
|
3342
2998
|
{
|
|
3343
2999
|
ref,
|
|
3344
|
-
className:
|
|
3000
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
3345
3001
|
"cited-text transition-colors px-0.5 rounded inline-block",
|
|
3346
3002
|
isStreaming ? "cursor-default" : "cursor-pointer",
|
|
3347
3003
|
isActive ? "bg-yellow-100 dark:bg-yellow-900/30 hover:bg-yellow-200 dark:hover:bg-yellow-900/40" : "hover:bg-yellow-50 dark:hover:bg-yellow-900/20"
|
|
@@ -3356,86 +3012,7 @@ var CitationLink = React2__default.default.forwardRef(
|
|
|
3356
3012
|
)
|
|
3357
3013
|
);
|
|
3358
3014
|
CitationLink.displayName = "CitationLink";
|
|
3359
|
-
var CitationRenderer =
|
|
3360
|
-
|
|
3361
|
-
// src/icons/colors.ts
|
|
3362
|
-
var NEUTRAL_GRAY = "#64748b";
|
|
3363
|
-
var FILE_TYPE_COLORS = {
|
|
3364
|
-
pdf: "#ef4444",
|
|
3365
|
-
// red
|
|
3366
|
-
doc: "#3b82f6",
|
|
3367
|
-
// blue (Word docs)
|
|
3368
|
-
docx: "#3b82f6",
|
|
3369
|
-
// blue
|
|
3370
|
-
html: "#0284c7",
|
|
3371
|
-
// sky-600 (web files)
|
|
3372
|
-
img: "#8b5cf6",
|
|
3373
|
-
// violet-500 (images)
|
|
3374
|
-
vid: "#10b981",
|
|
3375
|
-
// emerald-500 (video)
|
|
3376
|
-
aud: "#f59e0b",
|
|
3377
|
-
// amber-500 (audio)
|
|
3378
|
-
xls: "#16a34a",
|
|
3379
|
-
// green-600 (Excel)
|
|
3380
|
-
eml: "#0d9488",
|
|
3381
|
-
// teal-600 (email)
|
|
3382
|
-
txt: NEUTRAL_GRAY,
|
|
3383
|
-
// gray (plain text)
|
|
3384
|
-
generic: NEUTRAL_GRAY,
|
|
3385
|
-
// gray (unknown)
|
|
3386
|
-
white: "#ffffff"
|
|
3387
|
-
// for strokes/text on colored backgrounds
|
|
3388
|
-
};
|
|
3389
|
-
var PdfIcon = ({ size = 16, className = "" }) => {
|
|
3390
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3391
|
-
"svg",
|
|
3392
|
-
{
|
|
3393
|
-
width: size,
|
|
3394
|
-
height: size,
|
|
3395
|
-
viewBox: "0 0 24 24",
|
|
3396
|
-
fill: "none",
|
|
3397
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3398
|
-
className,
|
|
3399
|
-
children: [
|
|
3400
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3401
|
-
"path",
|
|
3402
|
-
{
|
|
3403
|
-
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3404
|
-
fill: FILE_TYPE_COLORS.pdf,
|
|
3405
|
-
stroke: FILE_TYPE_COLORS.pdf,
|
|
3406
|
-
strokeWidth: "1",
|
|
3407
|
-
strokeLinecap: "round",
|
|
3408
|
-
strokeLinejoin: "round"
|
|
3409
|
-
}
|
|
3410
|
-
),
|
|
3411
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3412
|
-
"path",
|
|
3413
|
-
{
|
|
3414
|
-
d: "M14 2v6h6",
|
|
3415
|
-
fill: "none",
|
|
3416
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3417
|
-
strokeWidth: "1",
|
|
3418
|
-
strokeLinecap: "round",
|
|
3419
|
-
strokeLinejoin: "round"
|
|
3420
|
-
}
|
|
3421
|
-
),
|
|
3422
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3423
|
-
"text",
|
|
3424
|
-
{
|
|
3425
|
-
x: "12",
|
|
3426
|
-
y: "16",
|
|
3427
|
-
fontSize: "6",
|
|
3428
|
-
fill: "white",
|
|
3429
|
-
textAnchor: "middle",
|
|
3430
|
-
fontWeight: "bold",
|
|
3431
|
-
fontFamily: "Arial, sans-serif",
|
|
3432
|
-
children: "PDF"
|
|
3433
|
-
}
|
|
3434
|
-
)
|
|
3435
|
-
]
|
|
3436
|
-
}
|
|
3437
|
-
);
|
|
3438
|
-
};
|
|
3015
|
+
var CitationRenderer = React__default.default.memo(CitationRendererComponent);
|
|
3439
3016
|
var DocIcon = ({ size = 16, className = "" }) => {
|
|
3440
3017
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3441
3018
|
"svg",
|
|
@@ -3451,8 +3028,8 @@ var DocIcon = ({ size = 16, className = "" }) => {
|
|
|
3451
3028
|
"path",
|
|
3452
3029
|
{
|
|
3453
3030
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3454
|
-
fill: FILE_TYPE_COLORS.doc,
|
|
3455
|
-
stroke: FILE_TYPE_COLORS.doc,
|
|
3031
|
+
fill: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.doc,
|
|
3032
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.doc,
|
|
3456
3033
|
strokeWidth: "1",
|
|
3457
3034
|
strokeLinecap: "round",
|
|
3458
3035
|
strokeLinejoin: "round"
|
|
@@ -3463,7 +3040,7 @@ var DocIcon = ({ size = 16, className = "" }) => {
|
|
|
3463
3040
|
{
|
|
3464
3041
|
d: "M14 2v6h6",
|
|
3465
3042
|
fill: "none",
|
|
3466
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3043
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.white,
|
|
3467
3044
|
strokeWidth: "1",
|
|
3468
3045
|
strokeLinecap: "round",
|
|
3469
3046
|
strokeLinejoin: "round"
|
|
@@ -3501,8 +3078,8 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
|
|
|
3501
3078
|
"path",
|
|
3502
3079
|
{
|
|
3503
3080
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3504
|
-
fill: FILE_TYPE_COLORS.html,
|
|
3505
|
-
stroke: FILE_TYPE_COLORS.html,
|
|
3081
|
+
fill: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.html,
|
|
3082
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.html,
|
|
3506
3083
|
strokeWidth: "1",
|
|
3507
3084
|
strokeLinecap: "round",
|
|
3508
3085
|
strokeLinejoin: "round"
|
|
@@ -3513,7 +3090,7 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
|
|
|
3513
3090
|
{
|
|
3514
3091
|
d: "M14 2v6h6",
|
|
3515
3092
|
fill: "none",
|
|
3516
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3093
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.white,
|
|
3517
3094
|
strokeWidth: "1",
|
|
3518
3095
|
strokeLinecap: "round",
|
|
3519
3096
|
strokeLinejoin: "round"
|
|
@@ -3551,8 +3128,8 @@ var TxtIcon = ({ size = 16, className = "" }) => {
|
|
|
3551
3128
|
"path",
|
|
3552
3129
|
{
|
|
3553
3130
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3554
|
-
fill: FILE_TYPE_COLORS.txt,
|
|
3555
|
-
stroke: FILE_TYPE_COLORS.txt,
|
|
3131
|
+
fill: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.txt,
|
|
3132
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.txt,
|
|
3556
3133
|
strokeWidth: "1",
|
|
3557
3134
|
strokeLinecap: "round",
|
|
3558
3135
|
strokeLinejoin: "round"
|
|
@@ -3563,7 +3140,7 @@ var TxtIcon = ({ size = 16, className = "" }) => {
|
|
|
3563
3140
|
{
|
|
3564
3141
|
d: "M14 2v6h6",
|
|
3565
3142
|
fill: "none",
|
|
3566
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3143
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.white,
|
|
3567
3144
|
strokeWidth: "1",
|
|
3568
3145
|
strokeLinecap: "round",
|
|
3569
3146
|
strokeLinejoin: "round"
|
|
@@ -3601,8 +3178,8 @@ var XlsIcon = ({ size = 16, className = "" }) => {
|
|
|
3601
3178
|
"path",
|
|
3602
3179
|
{
|
|
3603
3180
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3604
|
-
fill: FILE_TYPE_COLORS.xls,
|
|
3605
|
-
stroke: FILE_TYPE_COLORS.xls,
|
|
3181
|
+
fill: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.xls,
|
|
3182
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.xls,
|
|
3606
3183
|
strokeWidth: "1",
|
|
3607
3184
|
strokeLinecap: "round",
|
|
3608
3185
|
strokeLinejoin: "round"
|
|
@@ -3613,7 +3190,7 @@ var XlsIcon = ({ size = 16, className = "" }) => {
|
|
|
3613
3190
|
{
|
|
3614
3191
|
d: "M14 2v6h6",
|
|
3615
3192
|
fill: "none",
|
|
3616
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3193
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.white,
|
|
3617
3194
|
strokeWidth: "1",
|
|
3618
3195
|
strokeLinecap: "round",
|
|
3619
3196
|
strokeLinejoin: "round"
|
|
@@ -3636,7 +3213,7 @@ var XlsIcon = ({ size = 16, className = "" }) => {
|
|
|
3636
3213
|
}
|
|
3637
3214
|
);
|
|
3638
3215
|
};
|
|
3639
|
-
var
|
|
3216
|
+
var FileIcon = ({ size = 16, className = "" }) => {
|
|
3640
3217
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3641
3218
|
"svg",
|
|
3642
3219
|
{
|
|
@@ -3651,8 +3228,8 @@ var AudIcon = ({ size = 16, className = "" }) => {
|
|
|
3651
3228
|
"path",
|
|
3652
3229
|
{
|
|
3653
3230
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3654
|
-
fill: FILE_TYPE_COLORS.
|
|
3655
|
-
stroke: FILE_TYPE_COLORS.
|
|
3231
|
+
fill: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.generic,
|
|
3232
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.generic,
|
|
3656
3233
|
strokeWidth: "1",
|
|
3657
3234
|
strokeLinecap: "round",
|
|
3658
3235
|
strokeLinejoin: "round"
|
|
@@ -3663,7 +3240,7 @@ var AudIcon = ({ size = 16, className = "" }) => {
|
|
|
3663
3240
|
{
|
|
3664
3241
|
d: "M14 2v6h6",
|
|
3665
3242
|
fill: "none",
|
|
3666
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3243
|
+
stroke: chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS.white,
|
|
3667
3244
|
strokeWidth: "1",
|
|
3668
3245
|
strokeLinecap: "round",
|
|
3669
3246
|
strokeLinejoin: "round"
|
|
@@ -3673,298 +3250,97 @@ var AudIcon = ({ size = 16, className = "" }) => {
|
|
|
3673
3250
|
"text",
|
|
3674
3251
|
{
|
|
3675
3252
|
x: "12",
|
|
3676
|
-
y: "
|
|
3677
|
-
fontSize: "
|
|
3253
|
+
y: "17",
|
|
3254
|
+
fontSize: "10",
|
|
3678
3255
|
fill: "white",
|
|
3679
3256
|
textAnchor: "middle",
|
|
3680
3257
|
fontWeight: "bold",
|
|
3681
3258
|
fontFamily: "Arial, sans-serif",
|
|
3682
|
-
children: "
|
|
3259
|
+
children: "?"
|
|
3683
3260
|
}
|
|
3684
3261
|
)
|
|
3685
3262
|
]
|
|
3686
3263
|
}
|
|
3687
3264
|
);
|
|
3688
3265
|
};
|
|
3689
|
-
var
|
|
3690
|
-
|
|
3266
|
+
var AppleIcon = ({
|
|
3267
|
+
size = 20,
|
|
3268
|
+
className = "",
|
|
3269
|
+
"aria-label": ariaLabel,
|
|
3270
|
+
"aria-hidden": ariaHidden = true
|
|
3271
|
+
}) => {
|
|
3272
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3691
3273
|
"svg",
|
|
3692
3274
|
{
|
|
3275
|
+
className,
|
|
3693
3276
|
width: size,
|
|
3694
3277
|
height: size,
|
|
3695
3278
|
viewBox: "0 0 24 24",
|
|
3696
|
-
fill: "
|
|
3697
|
-
|
|
3279
|
+
fill: "currentColor",
|
|
3280
|
+
"aria-label": ariaLabel,
|
|
3281
|
+
"aria-hidden": ariaHidden,
|
|
3282
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" })
|
|
3283
|
+
}
|
|
3284
|
+
);
|
|
3285
|
+
};
|
|
3286
|
+
var GoogleIcon = ({
|
|
3287
|
+
size = 20,
|
|
3288
|
+
className = "",
|
|
3289
|
+
"aria-label": ariaLabel,
|
|
3290
|
+
"aria-hidden": ariaHidden = true
|
|
3291
|
+
}) => {
|
|
3292
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3293
|
+
"svg",
|
|
3294
|
+
{
|
|
3698
3295
|
className,
|
|
3296
|
+
width: size,
|
|
3297
|
+
height: size,
|
|
3298
|
+
viewBox: "0 0 24 24",
|
|
3299
|
+
"aria-label": ariaLabel,
|
|
3300
|
+
"aria-hidden": ariaHidden,
|
|
3699
3301
|
children: [
|
|
3700
3302
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3701
3303
|
"path",
|
|
3702
3304
|
{
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
stroke: FILE_TYPE_COLORS.img,
|
|
3706
|
-
strokeWidth: "1",
|
|
3707
|
-
strokeLinecap: "round",
|
|
3708
|
-
strokeLinejoin: "round"
|
|
3305
|
+
fill: "#4285F4",
|
|
3306
|
+
d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"
|
|
3709
3307
|
}
|
|
3710
3308
|
),
|
|
3711
3309
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3712
3310
|
"path",
|
|
3713
3311
|
{
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3717
|
-
strokeWidth: "1",
|
|
3718
|
-
strokeLinecap: "round",
|
|
3719
|
-
strokeLinejoin: "round"
|
|
3312
|
+
fill: "#34A853",
|
|
3313
|
+
d: "M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"
|
|
3720
3314
|
}
|
|
3721
3315
|
),
|
|
3722
3316
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3723
|
-
"
|
|
3317
|
+
"path",
|
|
3724
3318
|
{
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3319
|
+
fill: "#FBBC05",
|
|
3320
|
+
d: "M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"
|
|
3321
|
+
}
|
|
3322
|
+
),
|
|
3323
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3324
|
+
"path",
|
|
3325
|
+
{
|
|
3326
|
+
fill: "#EA4335",
|
|
3327
|
+
d: "M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"
|
|
3733
3328
|
}
|
|
3734
3329
|
)
|
|
3735
3330
|
]
|
|
3736
3331
|
}
|
|
3737
3332
|
);
|
|
3738
3333
|
};
|
|
3739
|
-
var
|
|
3740
|
-
|
|
3334
|
+
var GitHubIcon = ({
|
|
3335
|
+
size = 20,
|
|
3336
|
+
className = "",
|
|
3337
|
+
"aria-label": ariaLabel,
|
|
3338
|
+
"aria-hidden": ariaHidden = true
|
|
3339
|
+
}) => {
|
|
3340
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3741
3341
|
"svg",
|
|
3742
3342
|
{
|
|
3743
|
-
|
|
3744
|
-
height: size,
|
|
3745
|
-
viewBox: "0 0 24 24",
|
|
3746
|
-
fill: "none",
|
|
3747
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3748
|
-
className,
|
|
3749
|
-
children: [
|
|
3750
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3751
|
-
"path",
|
|
3752
|
-
{
|
|
3753
|
-
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3754
|
-
fill: FILE_TYPE_COLORS.vid,
|
|
3755
|
-
stroke: FILE_TYPE_COLORS.vid,
|
|
3756
|
-
strokeWidth: "1",
|
|
3757
|
-
strokeLinecap: "round",
|
|
3758
|
-
strokeLinejoin: "round"
|
|
3759
|
-
}
|
|
3760
|
-
),
|
|
3761
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3762
|
-
"path",
|
|
3763
|
-
{
|
|
3764
|
-
d: "M14 2v6h6",
|
|
3765
|
-
fill: "none",
|
|
3766
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3767
|
-
strokeWidth: "1",
|
|
3768
|
-
strokeLinecap: "round",
|
|
3769
|
-
strokeLinejoin: "round"
|
|
3770
|
-
}
|
|
3771
|
-
),
|
|
3772
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3773
|
-
"text",
|
|
3774
|
-
{
|
|
3775
|
-
x: "12",
|
|
3776
|
-
y: "16",
|
|
3777
|
-
fontSize: "6",
|
|
3778
|
-
fill: "white",
|
|
3779
|
-
textAnchor: "middle",
|
|
3780
|
-
fontWeight: "bold",
|
|
3781
|
-
fontFamily: "Arial, sans-serif",
|
|
3782
|
-
children: "VID"
|
|
3783
|
-
}
|
|
3784
|
-
)
|
|
3785
|
-
]
|
|
3786
|
-
}
|
|
3787
|
-
);
|
|
3788
|
-
};
|
|
3789
|
-
var EmlIcon = ({ size = 16, className = "" }) => {
|
|
3790
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3791
|
-
"svg",
|
|
3792
|
-
{
|
|
3793
|
-
width: size,
|
|
3794
|
-
height: size,
|
|
3795
|
-
viewBox: "0 0 24 24",
|
|
3796
|
-
fill: "none",
|
|
3797
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3798
|
-
className,
|
|
3799
|
-
children: [
|
|
3800
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3801
|
-
"path",
|
|
3802
|
-
{
|
|
3803
|
-
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3804
|
-
fill: FILE_TYPE_COLORS.eml,
|
|
3805
|
-
stroke: FILE_TYPE_COLORS.eml,
|
|
3806
|
-
strokeWidth: "1",
|
|
3807
|
-
strokeLinecap: "round",
|
|
3808
|
-
strokeLinejoin: "round"
|
|
3809
|
-
}
|
|
3810
|
-
),
|
|
3811
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3812
|
-
"path",
|
|
3813
|
-
{
|
|
3814
|
-
d: "M14 2v6h6",
|
|
3815
|
-
fill: "none",
|
|
3816
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3817
|
-
strokeWidth: "1",
|
|
3818
|
-
strokeLinecap: "round",
|
|
3819
|
-
strokeLinejoin: "round"
|
|
3820
|
-
}
|
|
3821
|
-
),
|
|
3822
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3823
|
-
"rect",
|
|
3824
|
-
{
|
|
3825
|
-
x: "7",
|
|
3826
|
-
y: "12",
|
|
3827
|
-
width: "10",
|
|
3828
|
-
height: "7",
|
|
3829
|
-
rx: "1",
|
|
3830
|
-
fill: "none",
|
|
3831
|
-
stroke: "white",
|
|
3832
|
-
strokeWidth: "1.2"
|
|
3833
|
-
}
|
|
3834
|
-
),
|
|
3835
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 13l5 3 5-3", fill: "none", stroke: "white", strokeWidth: "1.2", strokeLinejoin: "round" })
|
|
3836
|
-
]
|
|
3837
|
-
}
|
|
3838
|
-
);
|
|
3839
|
-
};
|
|
3840
|
-
var FileIcon = ({ size = 16, className = "" }) => {
|
|
3841
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3842
|
-
"svg",
|
|
3843
|
-
{
|
|
3844
|
-
width: size,
|
|
3845
|
-
height: size,
|
|
3846
|
-
viewBox: "0 0 24 24",
|
|
3847
|
-
fill: "none",
|
|
3848
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3849
|
-
className,
|
|
3850
|
-
children: [
|
|
3851
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3852
|
-
"path",
|
|
3853
|
-
{
|
|
3854
|
-
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
|
|
3855
|
-
fill: FILE_TYPE_COLORS.generic,
|
|
3856
|
-
stroke: FILE_TYPE_COLORS.generic,
|
|
3857
|
-
strokeWidth: "1",
|
|
3858
|
-
strokeLinecap: "round",
|
|
3859
|
-
strokeLinejoin: "round"
|
|
3860
|
-
}
|
|
3861
|
-
),
|
|
3862
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3863
|
-
"path",
|
|
3864
|
-
{
|
|
3865
|
-
d: "M14 2v6h6",
|
|
3866
|
-
fill: "none",
|
|
3867
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
3868
|
-
strokeWidth: "1",
|
|
3869
|
-
strokeLinecap: "round",
|
|
3870
|
-
strokeLinejoin: "round"
|
|
3871
|
-
}
|
|
3872
|
-
),
|
|
3873
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3874
|
-
"text",
|
|
3875
|
-
{
|
|
3876
|
-
x: "12",
|
|
3877
|
-
y: "17",
|
|
3878
|
-
fontSize: "10",
|
|
3879
|
-
fill: "white",
|
|
3880
|
-
textAnchor: "middle",
|
|
3881
|
-
fontWeight: "bold",
|
|
3882
|
-
fontFamily: "Arial, sans-serif",
|
|
3883
|
-
children: "?"
|
|
3884
|
-
}
|
|
3885
|
-
)
|
|
3886
|
-
]
|
|
3887
|
-
}
|
|
3888
|
-
);
|
|
3889
|
-
};
|
|
3890
|
-
var AppleIcon = ({
|
|
3891
|
-
size = 20,
|
|
3892
|
-
className = "",
|
|
3893
|
-
"aria-label": ariaLabel,
|
|
3894
|
-
"aria-hidden": ariaHidden = true
|
|
3895
|
-
}) => {
|
|
3896
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3897
|
-
"svg",
|
|
3898
|
-
{
|
|
3899
|
-
className,
|
|
3900
|
-
width: size,
|
|
3901
|
-
height: size,
|
|
3902
|
-
viewBox: "0 0 24 24",
|
|
3903
|
-
fill: "currentColor",
|
|
3904
|
-
"aria-label": ariaLabel,
|
|
3905
|
-
"aria-hidden": ariaHidden,
|
|
3906
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" })
|
|
3907
|
-
}
|
|
3908
|
-
);
|
|
3909
|
-
};
|
|
3910
|
-
var GoogleIcon = ({
|
|
3911
|
-
size = 20,
|
|
3912
|
-
className = "",
|
|
3913
|
-
"aria-label": ariaLabel,
|
|
3914
|
-
"aria-hidden": ariaHidden = true
|
|
3915
|
-
}) => {
|
|
3916
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3917
|
-
"svg",
|
|
3918
|
-
{
|
|
3919
|
-
className,
|
|
3920
|
-
width: size,
|
|
3921
|
-
height: size,
|
|
3922
|
-
viewBox: "0 0 24 24",
|
|
3923
|
-
"aria-label": ariaLabel,
|
|
3924
|
-
"aria-hidden": ariaHidden,
|
|
3925
|
-
children: [
|
|
3926
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3927
|
-
"path",
|
|
3928
|
-
{
|
|
3929
|
-
fill: "#4285F4",
|
|
3930
|
-
d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"
|
|
3931
|
-
}
|
|
3932
|
-
),
|
|
3933
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3934
|
-
"path",
|
|
3935
|
-
{
|
|
3936
|
-
fill: "#34A853",
|
|
3937
|
-
d: "M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"
|
|
3938
|
-
}
|
|
3939
|
-
),
|
|
3940
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3941
|
-
"path",
|
|
3942
|
-
{
|
|
3943
|
-
fill: "#FBBC05",
|
|
3944
|
-
d: "M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"
|
|
3945
|
-
}
|
|
3946
|
-
),
|
|
3947
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3948
|
-
"path",
|
|
3949
|
-
{
|
|
3950
|
-
fill: "#EA4335",
|
|
3951
|
-
d: "M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"
|
|
3952
|
-
}
|
|
3953
|
-
)
|
|
3954
|
-
]
|
|
3955
|
-
}
|
|
3956
|
-
);
|
|
3957
|
-
};
|
|
3958
|
-
var GitHubIcon = ({
|
|
3959
|
-
size = 20,
|
|
3960
|
-
className = "",
|
|
3961
|
-
"aria-label": ariaLabel,
|
|
3962
|
-
"aria-hidden": ariaHidden = true
|
|
3963
|
-
}) => {
|
|
3964
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3965
|
-
"svg",
|
|
3966
|
-
{
|
|
3967
|
-
className,
|
|
3343
|
+
className,
|
|
3968
3344
|
width: size,
|
|
3969
3345
|
height: size,
|
|
3970
3346
|
viewBox: "0 0 24 24",
|
|
@@ -4146,869 +3522,81 @@ function ProviderIcon({
|
|
|
4146
3522
|
return /* @__PURE__ */ jsxRuntime.jsx(FireworksIcon, { size, className });
|
|
4147
3523
|
}
|
|
4148
3524
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4149
|
-
lucideReact.Crown,
|
|
4150
|
-
{
|
|
4151
|
-
className,
|
|
4152
|
-
style: { width: size, height: size, color: "#EAB308", fill: "#EAB308" }
|
|
4153
|
-
}
|
|
4154
|
-
);
|
|
4155
|
-
}
|
|
4156
|
-
var ArbiIcon = ({
|
|
4157
|
-
size = 20,
|
|
4158
|
-
className = "",
|
|
4159
|
-
"aria-label": ariaLabel = "ARBI Docs",
|
|
4160
|
-
"aria-hidden": ariaHidden = false
|
|
4161
|
-
}) => {
|
|
4162
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4163
|
-
"img",
|
|
4164
|
-
{
|
|
4165
|
-
src: "/favicon.svg",
|
|
4166
|
-
alt: ariaLabel,
|
|
4167
|
-
className: `rounded object-contain ${className}`,
|
|
4168
|
-
style: { width: size, height: size },
|
|
4169
|
-
"aria-label": ariaLabel,
|
|
4170
|
-
"aria-hidden": ariaHidden
|
|
4171
|
-
}
|
|
4172
|
-
);
|
|
4173
|
-
};
|
|
4174
|
-
var ArbiBotHeadIcon = ({ size = 24, className = "" }) => {
|
|
4175
|
-
const maskId = React2.useId();
|
|
4176
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4177
|
-
"svg",
|
|
4178
|
-
{
|
|
4179
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
4180
|
-
width: size,
|
|
4181
|
-
height: size,
|
|
4182
|
-
viewBox: "30 -5 190 190",
|
|
4183
|
-
preserveAspectRatio: "xMidYMid meet",
|
|
4184
|
-
className,
|
|
4185
|
-
children: [
|
|
4186
|
-
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("mask", { id: maskId, children: /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", children: [
|
|
4187
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "2500", height: "2500", fill: "white" }),
|
|
4188
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "855", cy: "1715", r: "190", fill: "black" }),
|
|
4189
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "855", cy: "1715", r: "50", fill: "white" }),
|
|
4190
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "1665", cy: "1700", r: "190", fill: "black" }),
|
|
4191
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "1665", cy: "1700", r: "50", fill: "white" })
|
|
4192
|
-
] }) }) }),
|
|
4193
|
-
/* @__PURE__ */ jsxRuntime.jsxs("g", { mask: `url(#${maskId})`, children: [
|
|
4194
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4195
|
-
"g",
|
|
4196
|
-
{
|
|
4197
|
-
transform: "translate(0,250) scale(0.1,-0.1)",
|
|
4198
|
-
fill: "currentColor",
|
|
4199
|
-
stroke: "currentColor",
|
|
4200
|
-
strokeWidth: "100",
|
|
4201
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1038 2434 c-217 -39 -406 -154 -522 -318 -121 -170 -176 -376 -103 -384 l27 -3 0 -106 c0 -88 -3 -108 -17 -118 -15 -11 -16 -18 -5 -66 44 -188 209 -369 420 -459 l65 -28 -74 -7 c-283 -26 -444 -152 -535 -418 -70 -204 -73 -507 -5 -507 4 0 12 75 19 168 18 263 68 419 167 530 78 87 224 162 263 134 9 -6 43 -26 76 -43 224 -117 802 -95 948 38 38 34 165 -22 253 -111 117 -119 168 -268 187 -549 6 -92 15 -167 19 -167 89 0 53 415 -54 627 -88 173 -238 270 -458 295 l-99 11 75 32 c201 88 367 274 406 454 10 47 9 56 -5 66 -13 10 -16 32 -16 118 l0 106 28 3 c91 10 -12 297 -165 459 -202 214 -544 307 -895 243z m472 -84 c170 -43 323 -140 416 -264 47 -61 117 -197 128 -248 l6 -28 -65 0 c-64 0 -65 1 -78 33 -43 102 -109 136 -262 137 l-110 0 -38 -40 c-25 -27 -46 -40 -65 -41 -134 -5 -394 1 -410 10 -11 6 -30 24 -42 41 l-21 30 -112 0 c-156 -1 -219 -33 -262 -136 -14 -34 -14 -34 -80 -34 -76 0 -74 -7 -30 103 96 243 311 406 595 452 118 20 319 13 430 -15z m-561 -505 c97 -50 126 -174 61 -263 -118 -163 -380 -23 -309 165 35 93 162 143 248 98z m799 -15 c129 -96 69 -304 -92 -318 -189 -16 -265 218 -106 326 48 33 149 29 198 -8z m272 -389 c0 -23 -45 -110 -86 -168 -245 -343 -856 -408 -1231 -130 -90 67 -213 236 -213 294 0 11 132 13 765 13 457 0 765 -4 765 -9z" })
|
|
4202
|
-
}
|
|
4203
|
-
),
|
|
4204
|
-
/* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", fill: "currentColor", stroke: "none", children: [
|
|
4205
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M785 1777 c-60 -60 -59 -134 1 -186 92 -82 236 9 204 128 -25 93 -138 125 -205 58z m161 -29 c7 -22 -19 -52 -40 -45 -21 7 -30 35 -17 51 19 23 48 20 57 -6z" }),
|
|
4206
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1591 1803 c-128 -67 -85 -243 60 -243 83 0 141 99 105 178 -32 69 -103 97 -165 65z m127 -59 c4 -25 -19 -47 -41 -38 -22 8 -30 34 -16 51 17 20 53 12 57 -13z" }),
|
|
4207
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M843 1347 c-9 -15 9 -63 41 -108 148 -202 565 -209 730 -12 37 44 60 103 47 116 -13 13 -810 17 -818 4z" })
|
|
4208
|
-
] })
|
|
4209
|
-
] })
|
|
4210
|
-
]
|
|
4211
|
-
}
|
|
4212
|
-
);
|
|
4213
|
-
};
|
|
4214
|
-
var ArbiBotIcon = ({ size = 24, className = "" }) => {
|
|
4215
|
-
const maskId = React2.useId();
|
|
4216
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4217
|
-
"svg",
|
|
4218
|
-
{
|
|
4219
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
4220
|
-
width: size,
|
|
4221
|
-
height: size,
|
|
4222
|
-
viewBox: "0 0 250 250",
|
|
4223
|
-
preserveAspectRatio: "xMidYMid meet",
|
|
4224
|
-
className,
|
|
4225
|
-
children: [
|
|
4226
|
-
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("mask", { id: maskId, children: /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", children: [
|
|
4227
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "2500", height: "2500", fill: "white" }),
|
|
4228
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "855", cy: "1715", r: "190", fill: "black" }),
|
|
4229
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "855", cy: "1715", r: "50", fill: "white" }),
|
|
4230
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "1665", cy: "1700", r: "190", fill: "black" }),
|
|
4231
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "1665", cy: "1700", r: "50", fill: "white" })
|
|
4232
|
-
] }) }) }),
|
|
4233
|
-
/* @__PURE__ */ jsxRuntime.jsxs("g", { mask: `url(#${maskId})`, children: [
|
|
4234
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4235
|
-
"g",
|
|
4236
|
-
{
|
|
4237
|
-
transform: "translate(0,250) scale(0.1,-0.1)",
|
|
4238
|
-
fill: "currentColor",
|
|
4239
|
-
stroke: "currentColor",
|
|
4240
|
-
strokeWidth: "100",
|
|
4241
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1038 2434 c-217 -39 -406 -154 -522 -318 -121 -170 -176 -376 -103 -384 l27 -3 0 -106 c0 -88 -3 -108 -17 -118 -15 -11 -16 -18 -5 -66 44 -188 209 -369 420 -459 l65 -28 -74 -7 c-283 -26 -444 -152 -535 -418 -70 -204 -73 -507 -5 -507 4 0 12 75 19 168 18 263 68 419 167 530 78 87 224 162 263 134 9 -6 43 -26 76 -43 224 -117 802 -95 948 38 38 34 165 -22 253 -111 117 -119 168 -268 187 -549 6 -92 15 -167 19 -167 89 0 53 415 -54 627 -88 173 -238 270 -458 295 l-99 11 75 32 c201 88 367 274 406 454 10 47 9 56 -5 66 -13 10 -16 32 -16 118 l0 106 28 3 c91 10 -12 297 -165 459 -202 214 -544 307 -895 243z m472 -84 c170 -43 323 -140 416 -264 47 -61 117 -197 128 -248 l6 -28 -65 0 c-64 0 -65 1 -78 33 -43 102 -109 136 -262 137 l-110 0 -38 -40 c-25 -27 -46 -40 -65 -41 -134 -5 -394 1 -410 10 -11 6 -30 24 -42 41 l-21 30 -112 0 c-156 -1 -219 -33 -262 -136 -14 -34 -14 -34 -80 -34 -76 0 -74 -7 -30 103 96 243 311 406 595 452 118 20 319 13 430 -15z m-561 -505 c97 -50 126 -174 61 -263 -118 -163 -380 -23 -309 165 35 93 162 143 248 98z m799 -15 c129 -96 69 -304 -92 -318 -189 -16 -265 218 -106 326 48 33 149 29 198 -8z m272 -389 c0 -23 -45 -110 -86 -168 -245 -343 -856 -408 -1231 -130 -90 67 -213 236 -213 294 0 11 132 13 765 13 457 0 765 -4 765 -9z" })
|
|
4242
|
-
}
|
|
4243
|
-
),
|
|
4244
|
-
/* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", fill: "currentColor", stroke: "none", children: [
|
|
4245
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M785 1777 c-60 -60 -59 -134 1 -186 92 -82 236 9 204 128 -25 93 -138 125 -205 58z m161 -29 c7 -22 -19 -52 -40 -45 -21 7 -30 35 -17 51 19 23 48 20 57 -6z" }),
|
|
4246
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1591 1803 c-128 -67 -85 -243 60 -243 83 0 141 99 105 178 -32 69 -103 97 -165 65z m127 -59 c4 -25 -19 -47 -41 -38 -22 8 -30 34 -16 51 17 20 53 12 57 -13z" }),
|
|
4247
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M843 1347 c-9 -15 9 -63 41 -108 148 -202 565 -209 730 -12 37 44 60 103 47 116 -13 13 -810 17 -818 4z" }),
|
|
4248
|
-
/* @__PURE__ */ jsxRuntime.jsx("g", { transform: "translate(564,0)", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4249
|
-
"path",
|
|
4250
|
-
{
|
|
4251
|
-
d: "M515 353 c-49 -136 -91 -253 -93 -261 -3 -10 11 -12 60 -10 l63 3 19 53 19 52 91 0 92 0 18 -55 17 -56 62 3 c76 4 79 -24 -30 275 l-88 243 -70 0 -70 0 -90 -247z m215 -55 c0 -4 -27 -8 -59 -8 l-60 0 31 92 31 93 29 -85 c15 -46 28 -88 28 -92z",
|
|
4252
|
-
stroke: "currentColor",
|
|
4253
|
-
strokeWidth: "30"
|
|
4254
|
-
}
|
|
4255
|
-
) })
|
|
4256
|
-
] })
|
|
4257
|
-
] })
|
|
4258
|
-
]
|
|
4259
|
-
}
|
|
4260
|
-
);
|
|
4261
|
-
};
|
|
4262
|
-
function getDocumentTitle(document2, defaultValue = "") {
|
|
4263
|
-
if (!document2) return defaultValue;
|
|
4264
|
-
return document2.doc_metadata?.title || document2.file_name || defaultValue;
|
|
4265
|
-
}
|
|
4266
|
-
var MAX_LABEL_CHARS = 30;
|
|
4267
|
-
function clampLabel(text) {
|
|
4268
|
-
return text.length > MAX_LABEL_CHARS ? `${text.slice(0, MAX_LABEL_CHARS).trimEnd()}\u2026` : text;
|
|
4269
|
-
}
|
|
4270
|
-
var IMAGE_EXTENSIONS = /* @__PURE__ */ new Set(["jpg", "jpeg", "png", "gif", "bmp", "tiff", "tif", "webp"]);
|
|
4271
|
-
var VIDEO_EXTENSIONS = /* @__PURE__ */ new Set(["mp4", "mpeg", "mpg", "webm", "mov", "avi", "mkv"]);
|
|
4272
|
-
var AUDIO_EXTENSIONS = /* @__PURE__ */ new Set(["mp3", "wav", "m4a", "aac", "ogg", "flac"]);
|
|
4273
|
-
var EMAIL_EXTENSIONS = /* @__PURE__ */ new Set(["eml", "msg"]);
|
|
4274
|
-
function getDocIcon(fileName, iconSize = 14) {
|
|
4275
|
-
const ext = fileName?.split(".").pop()?.toLowerCase();
|
|
4276
|
-
if (ext && VIDEO_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(VidIcon, { size: iconSize, className: "flex-shrink-0" });
|
|
4277
|
-
if (ext && AUDIO_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(AudIcon, { size: iconSize, className: "flex-shrink-0" });
|
|
4278
|
-
if (ext && IMAGE_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(ImgIcon, { size: iconSize, className: "flex-shrink-0" });
|
|
4279
|
-
if (ext && EMAIL_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(EmlIcon, { size: iconSize, className: "flex-shrink-0" });
|
|
4280
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PdfIcon, { size: iconSize, className: "flex-shrink-0" });
|
|
4281
|
-
}
|
|
4282
|
-
function DocumentEntity({
|
|
4283
|
-
doc,
|
|
4284
|
-
icon,
|
|
4285
|
-
size = "sm",
|
|
4286
|
-
labelMaxWidth,
|
|
4287
|
-
labelClassName,
|
|
4288
|
-
onClick,
|
|
4289
|
-
onIconClick,
|
|
4290
|
-
viewing,
|
|
4291
|
-
iconBadge,
|
|
4292
|
-
actions,
|
|
4293
|
-
tooltipContent,
|
|
4294
|
-
className,
|
|
4295
|
-
fullWidth,
|
|
4296
|
-
noClamp
|
|
4297
|
-
}) {
|
|
4298
|
-
const title = getDocumentTitle(doc);
|
|
4299
|
-
const ext = doc.file_name?.split(".").pop()?.toLowerCase();
|
|
4300
|
-
const iconSize = size === "base" ? 16 : 14;
|
|
4301
|
-
const eyeSizeClass = size === "base" ? "h-4 w-4" : "h-3.5 w-3.5";
|
|
4302
|
-
const baseIcon = icon ?? getDocIcon(doc.file_name, iconSize);
|
|
4303
|
-
const displayIcon = viewing || iconBadge ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative inline-flex flex-shrink-0 items-center justify-center", children: [
|
|
4304
|
-
viewing ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: chunkFIPS3VPH_cjs.cn("text-primary-foreground", eyeSizeClass) }) : baseIcon,
|
|
4305
|
-
iconBadge
|
|
4306
|
-
] }) : baseIcon;
|
|
4307
|
-
const defaultTooltip = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 text-xs max-w-[440px]", children: [
|
|
4308
|
-
doc.folder && // `flex-wrap` so a deep folder path wraps WITHIN the balloon instead of
|
|
4309
|
-
// spilling out of it (each path segment is atomic and wraps as a unit;
|
|
4310
|
-
// `min-w-0` + `break-all` lets a single over-long segment break too).
|
|
4311
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-wrap items-center gap-0.5 text-muted-foreground", children: [
|
|
4312
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.FolderOpen, { className: "h-3 w-3 text-yellow-600 shrink-0" }),
|
|
4313
|
-
doc.folder.split("/").map((part, i, arr) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-0.5", children: [
|
|
4314
|
-
i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/50 mx-0.5", children: "/" }),
|
|
4315
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `break-all ${i < arr.length - 1 ? "text-muted-foreground/70" : ""}`, children: part })
|
|
4316
|
-
] }, i))
|
|
4317
|
-
] }),
|
|
4318
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium break-words", children: [
|
|
4319
|
-
title,
|
|
4320
|
-
ext ? `.${ext}` : ""
|
|
4321
|
-
] })
|
|
4322
|
-
] });
|
|
4323
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4324
|
-
EntityPill,
|
|
4325
|
-
{
|
|
4326
|
-
icon: displayIcon,
|
|
4327
|
-
size,
|
|
4328
|
-
label: fullWidth || noClamp ? title : clampLabel(title),
|
|
4329
|
-
labelMaxWidth: labelMaxWidth ?? "max-w-[140px]",
|
|
4330
|
-
labelClassName,
|
|
4331
|
-
fullWidth,
|
|
4332
|
-
onClick,
|
|
4333
|
-
onIconClick,
|
|
4334
|
-
moreContent: actions,
|
|
4335
|
-
className,
|
|
4336
|
-
highlight: viewing,
|
|
4337
|
-
tooltipContent: tooltipContent ?? defaultTooltip
|
|
4338
|
-
}
|
|
4339
|
-
);
|
|
4340
|
-
}
|
|
4341
|
-
var VARIANT_STYLES = {
|
|
4342
|
-
"mine-paid": {
|
|
4343
|
-
pill: "bg-primary/10 text-primary border-border/60",
|
|
4344
|
-
icon: "text-primary"
|
|
4345
|
-
},
|
|
4346
|
-
other: {
|
|
4347
|
-
pill: "bg-secondary/10 text-secondary border-border/60",
|
|
4348
|
-
icon: "text-secondary"
|
|
4349
|
-
},
|
|
4350
|
-
"mine-free": {
|
|
4351
|
-
pill: "bg-muted-foreground/10 text-muted-foreground border-border/60",
|
|
4352
|
-
icon: "text-muted-foreground"
|
|
4353
|
-
},
|
|
4354
|
-
common: {
|
|
4355
|
-
pill: "",
|
|
4356
|
-
icon: "text-muted-foreground"
|
|
4357
|
-
}
|
|
4358
|
-
};
|
|
4359
|
-
function resolveVariant(relation, paid, hasCollaborators) {
|
|
4360
|
-
if (relation === "common") return "common";
|
|
4361
|
-
if (relation === "other") return "other";
|
|
4362
|
-
if (relation === "mine") return paid ? "mine-paid" : "mine-free";
|
|
4363
|
-
if (paid) return hasCollaborators ? "other" : "mine-paid";
|
|
4364
|
-
return "mine-free";
|
|
4365
|
-
}
|
|
4366
|
-
function ProjectEntity({
|
|
4367
|
-
name,
|
|
4368
|
-
label,
|
|
4369
|
-
icon,
|
|
4370
|
-
subscription = "none",
|
|
4371
|
-
hasCollaborators = false,
|
|
4372
|
-
size = "sm",
|
|
4373
|
-
className,
|
|
4374
|
-
onClick,
|
|
4375
|
-
relation,
|
|
4376
|
-
isPaid,
|
|
4377
|
-
tooltipContent
|
|
4378
|
-
}) {
|
|
4379
|
-
const paid = isPaid ?? (subscription === "active" || subscription === "past_due" || subscription === "dev");
|
|
4380
|
-
const variant = resolveVariant(relation, paid, hasCollaborators);
|
|
4381
|
-
const { pill, icon: iconClass } = VARIANT_STYLES[variant];
|
|
4382
|
-
const iconSizeClass = size === "base" ? "h-4 w-4" : "h-3.5 w-3.5";
|
|
4383
|
-
const iconNode = icon ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCard, { className: chunkFIPS3VPH_cjs.cn(iconSizeClass, iconClass) });
|
|
4384
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4385
|
-
EntityPill,
|
|
4386
|
-
{
|
|
4387
|
-
icon: iconNode,
|
|
4388
|
-
label: label ?? name,
|
|
4389
|
-
size,
|
|
4390
|
-
shape: "rounded",
|
|
4391
|
-
className: chunkFIPS3VPH_cjs.cn(pill, className),
|
|
4392
|
-
onClick,
|
|
4393
|
-
tooltipContent
|
|
4394
|
-
}
|
|
4395
|
-
);
|
|
4396
|
-
}
|
|
4397
|
-
var sizeClasses = {
|
|
4398
|
-
xs: "h-5 w-5",
|
|
4399
|
-
sm: "h-6 w-6",
|
|
4400
|
-
md: "h-8 w-8",
|
|
4401
|
-
lg: "h-10 w-10"
|
|
4402
|
-
};
|
|
4403
|
-
var textSizeClasses = {
|
|
4404
|
-
xs: "text-xs",
|
|
4405
|
-
sm: "text-xs",
|
|
4406
|
-
md: "text-xs",
|
|
4407
|
-
lg: "text-sm"
|
|
4408
|
-
};
|
|
4409
|
-
var presenceDotClasses = {
|
|
4410
|
-
xs: "w-2 h-2 border",
|
|
4411
|
-
sm: "w-2.5 h-2.5 border",
|
|
4412
|
-
md: "w-3 h-3 border-2",
|
|
4413
|
-
lg: "w-3.5 h-3.5 border-2"
|
|
4414
|
-
};
|
|
4415
|
-
var presencePositionClasses = {
|
|
4416
|
-
xs: "-right-1 bottom-0",
|
|
4417
|
-
sm: "-right-1 bottom-0",
|
|
4418
|
-
md: "-right-1.5 -bottom-0.5",
|
|
4419
|
-
lg: "-right-1.5 -bottom-0.5"
|
|
4420
|
-
};
|
|
4421
|
-
var PRESENCE_LABELS = {
|
|
4422
|
-
connected: "Online",
|
|
4423
|
-
connecting: "Connecting",
|
|
4424
|
-
disconnected: "Offline",
|
|
4425
|
-
error: "Connection problem",
|
|
4426
|
-
hidden: "Status hidden"
|
|
4427
|
-
};
|
|
4428
|
-
var presenceColorClasses = {
|
|
4429
|
-
connected: "bg-status-online",
|
|
4430
|
-
connecting: "bg-status-connecting",
|
|
4431
|
-
disconnected: "bg-status-away",
|
|
4432
|
-
error: "bg-status-busy",
|
|
4433
|
-
hidden: "bg-status-offline"
|
|
4434
|
-
};
|
|
4435
|
-
var UserEntity = React2.memo(function UserEntity2({
|
|
4436
|
-
size = "md",
|
|
4437
|
-
variant = "pill",
|
|
4438
|
-
className,
|
|
4439
|
-
showTooltip = true,
|
|
4440
|
-
interactive = true,
|
|
4441
|
-
hasUnreadMessages = false,
|
|
4442
|
-
initials = "",
|
|
4443
|
-
displayName = "",
|
|
4444
|
-
picture,
|
|
4445
|
-
colorClass = "",
|
|
4446
|
-
isAgent = false,
|
|
4447
|
-
agentStyle,
|
|
4448
|
-
avatarStyle,
|
|
4449
|
-
isMe = false,
|
|
4450
|
-
displayStatus,
|
|
4451
|
-
onClick,
|
|
4452
|
-
tooltipContent,
|
|
4453
|
-
empty = false
|
|
4454
|
-
}) {
|
|
4455
|
-
if (empty) {
|
|
4456
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4457
|
-
chunkFIPS3VPH_cjs.Avatar,
|
|
4458
|
-
{
|
|
4459
|
-
className: chunkFIPS3VPH_cjs.cn(sizeClasses[size], "border border-border", className),
|
|
4460
|
-
"data-testid": "user-entity",
|
|
4461
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.AvatarFallback, { className: "bg-status-empty text-muted-foreground text-xs font-semibold", children: "?" })
|
|
4462
|
-
}
|
|
4463
|
-
);
|
|
4464
|
-
}
|
|
4465
|
-
const agentBadge = isAgent ? /* @__PURE__ */ jsxRuntime.jsx(ArbiBotHeadIcon, { className: "w-3.5 h-3.5 text-muted-foreground" }) : void 0;
|
|
4466
|
-
const canMessage = interactive && !isMe && !isAgent;
|
|
4467
|
-
const showUnread = hasUnreadMessages && !isMe && !isAgent;
|
|
4468
|
-
const surfaceStyle = avatarStyle ?? agentStyle;
|
|
4469
|
-
const avatarCore = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4470
|
-
chunkFIPS3VPH_cjs.Avatar,
|
|
4471
|
-
{
|
|
4472
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
4473
|
-
sizeClasses[size],
|
|
4474
|
-
isAgent ? "rounded-full border-2 border-dashed" : "border border-white"
|
|
4475
|
-
),
|
|
4476
|
-
style: surfaceStyle,
|
|
4477
|
-
"data-testid": "user-entity",
|
|
4478
|
-
children: [
|
|
4479
|
-
picture && /* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.AvatarImage, { src: picture, alt: initials }),
|
|
4480
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4481
|
-
chunkFIPS3VPH_cjs.AvatarFallback,
|
|
4482
|
-
{
|
|
4483
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
4484
|
-
textSizeClasses[size],
|
|
4485
|
-
"font-semibold leading-none",
|
|
4486
|
-
isAgent ? "rounded-full bg-transparent" : `text-white ${colorClass}`
|
|
4487
|
-
),
|
|
4488
|
-
style: surfaceStyle,
|
|
4489
|
-
children: initials
|
|
4490
|
-
}
|
|
4491
|
-
)
|
|
4492
|
-
]
|
|
4493
|
-
}
|
|
4494
|
-
);
|
|
4495
|
-
const statusDot = showUnread || displayStatus ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4496
|
-
"span",
|
|
4497
|
-
{
|
|
4498
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
4499
|
-
"absolute rounded-full border-white",
|
|
4500
|
-
presenceDotClasses[size],
|
|
4501
|
-
presencePositionClasses[size],
|
|
4502
|
-
!showUnread && displayStatus ? presenceColorClasses[displayStatus] : ""
|
|
4503
|
-
),
|
|
4504
|
-
style: showUnread ? { backgroundColor: "#00adef" } : void 0,
|
|
4505
|
-
"data-testid": "user-entity-presence",
|
|
4506
|
-
role: "img",
|
|
4507
|
-
"aria-label": showUnread ? "Unread messages" : PRESENCE_LABELS[displayStatus],
|
|
4508
|
-
title: showUnread ? "Unread messages" : PRESENCE_LABELS[displayStatus]
|
|
4509
|
-
}
|
|
4510
|
-
) : null;
|
|
4511
|
-
const avatarElement = statusDot ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4512
|
-
"div",
|
|
4513
|
-
{
|
|
4514
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
4515
|
-
"relative inline-block",
|
|
4516
|
-
sizeClasses[size],
|
|
4517
|
-
variant === "pill" ? "" : className
|
|
4518
|
-
),
|
|
4519
|
-
children: [
|
|
4520
|
-
avatarCore,
|
|
4521
|
-
statusDot
|
|
4522
|
-
]
|
|
4523
|
-
}
|
|
4524
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkFIPS3VPH_cjs.cn("inline-block", variant === "pill" ? "" : className), children: avatarCore });
|
|
4525
|
-
const pillAvatar = (
|
|
4526
|
-
// shrink-0: when the pill is squeezed the NAME truncates away — the avatar
|
|
4527
|
-
// must never collapse under it and overflow onto neighbouring text.
|
|
4528
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkFIPS3VPH_cjs.cn("relative inline-block shrink-0", sizeClasses[size]), children: [
|
|
4529
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkFIPS3VPH_cjs.cn("block transition-opacity", canMessage && "group-hover/pill:opacity-0"), children: avatarCore }),
|
|
4530
|
-
canMessage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4531
|
-
"span",
|
|
4532
|
-
{
|
|
4533
|
-
"aria-hidden": true,
|
|
4534
|
-
className: "absolute inset-0 flex items-center justify-center rounded-full bg-muted text-foreground opacity-0 transition-opacity group-hover/pill:opacity-100",
|
|
4535
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircleMore, { className: size === "xs" ? "h-3 w-3" : "h-4 w-4" })
|
|
4536
|
-
}
|
|
4537
|
-
),
|
|
4538
|
-
statusDot
|
|
4539
|
-
] })
|
|
4540
|
-
);
|
|
4541
|
-
const resolvedTooltip = showTooltip ? tooltipContent : void 0;
|
|
4542
|
-
if (variant === "pill") {
|
|
4543
|
-
const row = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4544
|
-
pillAvatar,
|
|
4545
|
-
displayName && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 max-w-[320px] truncate text-sm leading-tight", children: displayName }),
|
|
4546
|
-
agentBadge
|
|
4547
|
-
] });
|
|
4548
|
-
const rowClass = "group/pill inline-flex min-w-0 items-center gap-2";
|
|
4549
|
-
const clickable = interactive && !!onClick;
|
|
4550
|
-
const clickableClass = "cursor-pointer rounded-md px-1 py-0.5 -mx-1 transition-colors hover:bg-muted/60";
|
|
4551
|
-
if (resolvedTooltip) {
|
|
4552
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(chunkFIPS3VPH_cjs.Tooltip, { children: [
|
|
4553
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4554
|
-
chunkFIPS3VPH_cjs.TooltipTrigger,
|
|
4555
|
-
{
|
|
4556
|
-
type: "button",
|
|
4557
|
-
onClick: clickable ? onClick : void 0,
|
|
4558
|
-
onFocusCapture: (e) => e.stopPropagation(),
|
|
4559
|
-
className: chunkFIPS3VPH_cjs.cn(rowClass, clickable && clickableClass, className),
|
|
4560
|
-
"data-testid": "user-entity-pill",
|
|
4561
|
-
children: row
|
|
4562
|
-
}
|
|
4563
|
-
),
|
|
4564
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.TooltipContent, { className: "p-2", children: resolvedTooltip })
|
|
4565
|
-
] });
|
|
4566
|
-
}
|
|
4567
|
-
if (clickable) {
|
|
4568
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4569
|
-
"button",
|
|
4570
|
-
{
|
|
4571
|
-
type: "button",
|
|
4572
|
-
onClick,
|
|
4573
|
-
className: chunkFIPS3VPH_cjs.cn(rowClass, clickableClass, className),
|
|
4574
|
-
"data-testid": "user-entity-pill",
|
|
4575
|
-
children: row
|
|
4576
|
-
}
|
|
4577
|
-
);
|
|
4578
|
-
}
|
|
4579
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkFIPS3VPH_cjs.cn(rowClass, className), "data-testid": "user-entity-pill", children: row });
|
|
4580
|
-
}
|
|
4581
|
-
if (showTooltip) {
|
|
4582
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(chunkFIPS3VPH_cjs.Tooltip, { children: [
|
|
4583
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.TooltipTrigger, { onFocusCapture: (e) => e.stopPropagation(), className: "inline-flex", children: avatarElement }),
|
|
4584
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.TooltipContent, { className: "p-2", children: tooltipContent })
|
|
4585
|
-
] });
|
|
4586
|
-
}
|
|
4587
|
-
return avatarElement;
|
|
4588
|
-
});
|
|
4589
|
-
function AgentBadge({ className }) {
|
|
4590
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4591
|
-
"span",
|
|
4592
|
-
{
|
|
4593
|
-
"data-testid": "agent-badge",
|
|
4594
|
-
className: chunkFIPS3VPH_cjs.cn(
|
|
4595
|
-
"inline-flex shrink-0 items-center gap-1 rounded-full border border-ai-accent/50",
|
|
4596
|
-
"bg-ai-accent-soft px-2 py-0.5 text-[11px] font-bold uppercase tracking-wider text-ai-accent",
|
|
4597
|
-
className
|
|
4598
|
-
),
|
|
4599
|
-
children: [
|
|
4600
|
-
/* @__PURE__ */ jsxRuntime.jsx(ArbiBotHeadIcon, { size: 14, className: "text-ai-accent" }),
|
|
4601
|
-
"Agent"
|
|
4602
|
-
]
|
|
3525
|
+
lucideReact.Crown,
|
|
3526
|
+
{
|
|
3527
|
+
className,
|
|
3528
|
+
style: { width: size, height: size, color: "#EAB308", fill: "#EAB308" }
|
|
4603
3529
|
}
|
|
4604
3530
|
);
|
|
4605
3531
|
}
|
|
4606
|
-
var
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
3532
|
+
var ArbiIcon = ({
|
|
3533
|
+
size = 20,
|
|
3534
|
+
className = "",
|
|
3535
|
+
"aria-label": ariaLabel = "ARBI Docs",
|
|
3536
|
+
"aria-hidden": ariaHidden = false
|
|
3537
|
+
}) => {
|
|
3538
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3539
|
+
"img",
|
|
3540
|
+
{
|
|
3541
|
+
src: "/favicon.svg",
|
|
3542
|
+
alt: ariaLabel,
|
|
3543
|
+
className: `rounded object-contain ${className}`,
|
|
3544
|
+
style: { width: size, height: size },
|
|
3545
|
+
"aria-label": ariaLabel,
|
|
3546
|
+
"aria-hidden": ariaHidden
|
|
3547
|
+
}
|
|
3548
|
+
);
|
|
4612
3549
|
};
|
|
4613
|
-
|
|
4614
|
-
|
|
4615
|
-
className
|
|
4616
|
-
}) {
|
|
4617
|
-
if (!status) return null;
|
|
4618
|
-
const word = PRESENCE_WORDS[status];
|
|
4619
|
-
if (!word) return null;
|
|
4620
|
-
const online = status === "connected";
|
|
3550
|
+
var ArbiBotIcon = ({ size = 24, className = "" }) => {
|
|
3551
|
+
const maskId = React.useId();
|
|
4621
3552
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4622
|
-
"
|
|
3553
|
+
"svg",
|
|
4623
3554
|
{
|
|
4624
|
-
|
|
4625
|
-
|
|
3555
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3556
|
+
width: size,
|
|
3557
|
+
height: size,
|
|
3558
|
+
viewBox: "0 0 250 250",
|
|
3559
|
+
preserveAspectRatio: "xMidYMid meet",
|
|
3560
|
+
className,
|
|
4626
3561
|
children: [
|
|
4627
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4628
|
-
"
|
|
4629
|
-
{
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
3562
|
+
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("mask", { id: maskId, children: /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", children: [
|
|
3563
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "2500", height: "2500", fill: "white" }),
|
|
3564
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "855", cy: "1715", r: "190", fill: "black" }),
|
|
3565
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "855", cy: "1715", r: "50", fill: "white" }),
|
|
3566
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "1665", cy: "1700", r: "190", fill: "black" }),
|
|
3567
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "1665", cy: "1700", r: "50", fill: "white" })
|
|
3568
|
+
] }) }) }),
|
|
3569
|
+
/* @__PURE__ */ jsxRuntime.jsxs("g", { mask: `url(#${maskId})`, children: [
|
|
3570
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3571
|
+
"g",
|
|
3572
|
+
{
|
|
3573
|
+
transform: "translate(0,250) scale(0.1,-0.1)",
|
|
3574
|
+
fill: "currentColor",
|
|
3575
|
+
stroke: "currentColor",
|
|
3576
|
+
strokeWidth: "100",
|
|
3577
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1038 2434 c-217 -39 -406 -154 -522 -318 -121 -170 -176 -376 -103 -384 l27 -3 0 -106 c0 -88 -3 -108 -17 -118 -15 -11 -16 -18 -5 -66 44 -188 209 -369 420 -459 l65 -28 -74 -7 c-283 -26 -444 -152 -535 -418 -70 -204 -73 -507 -5 -507 4 0 12 75 19 168 18 263 68 419 167 530 78 87 224 162 263 134 9 -6 43 -26 76 -43 224 -117 802 -95 948 38 38 34 165 -22 253 -111 117 -119 168 -268 187 -549 6 -92 15 -167 19 -167 89 0 53 415 -54 627 -88 173 -238 270 -458 295 l-99 11 75 32 c201 88 367 274 406 454 10 47 9 56 -5 66 -13 10 -16 32 -16 118 l0 106 28 3 c91 10 -12 297 -165 459 -202 214 -544 307 -895 243z m472 -84 c170 -43 323 -140 416 -264 47 -61 117 -197 128 -248 l6 -28 -65 0 c-64 0 -65 1 -78 33 -43 102 -109 136 -262 137 l-110 0 -38 -40 c-25 -27 -46 -40 -65 -41 -134 -5 -394 1 -410 10 -11 6 -30 24 -42 41 l-21 30 -112 0 c-156 -1 -219 -33 -262 -136 -14 -34 -14 -34 -80 -34 -76 0 -74 -7 -30 103 96 243 311 406 595 452 118 20 319 13 430 -15z m-561 -505 c97 -50 126 -174 61 -263 -118 -163 -380 -23 -309 165 35 93 162 143 248 98z m799 -15 c129 -96 69 -304 -92 -318 -189 -16 -265 218 -106 326 48 33 149 29 198 -8z m272 -389 c0 -23 -45 -110 -86 -168 -245 -343 -856 -408 -1231 -130 -90 67 -213 236 -213 294 0 11 132 13 765 13 457 0 765 -4 765 -9z" })
|
|
3578
|
+
}
|
|
3579
|
+
),
|
|
3580
|
+
/* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", fill: "currentColor", stroke: "none", children: [
|
|
3581
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M785 1777 c-60 -60 -59 -134 1 -186 92 -82 236 9 204 128 -25 93 -138 125 -205 58z m161 -29 c7 -22 -19 -52 -40 -45 -21 7 -30 35 -17 51 19 23 48 20 57 -6z" }),
|
|
3582
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1591 1803 c-128 -67 -85 -243 60 -243 83 0 141 99 105 178 -32 69 -103 97 -165 65z m127 -59 c4 -25 -19 -47 -41 -38 -22 8 -30 34 -16 51 17 20 53 12 57 -13z" }),
|
|
3583
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M843 1347 c-9 -15 9 -63 41 -108 148 -202 565 -209 730 -12 37 44 60 103 47 116 -13 13 -810 17 -818 4z" }),
|
|
3584
|
+
/* @__PURE__ */ jsxRuntime.jsx("g", { transform: "translate(564,0)", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3585
|
+
"path",
|
|
3586
|
+
{
|
|
3587
|
+
d: "M515 353 c-49 -136 -91 -253 -93 -261 -3 -10 11 -12 60 -10 l63 3 19 53 19 52 91 0 92 0 18 -55 17 -56 62 3 c76 4 79 -24 -30 275 l-88 243 -70 0 -70 0 -90 -247z m215 -55 c0 -4 -27 -8 -59 -8 l-60 0 31 92 31 93 29 -85 c15 -46 28 -88 28 -92z",
|
|
3588
|
+
stroke: "currentColor",
|
|
3589
|
+
strokeWidth: "30"
|
|
3590
|
+
}
|
|
3591
|
+
) })
|
|
3592
|
+
] })
|
|
3593
|
+
] })
|
|
4638
3594
|
]
|
|
4639
3595
|
}
|
|
4640
3596
|
);
|
|
4641
|
-
}
|
|
4642
|
-
var PACKAGE_BADGE_VARIANTS = [
|
|
4643
|
-
"default",
|
|
4644
|
-
"accent",
|
|
4645
|
-
"secondary",
|
|
4646
|
-
"destructive",
|
|
4647
|
-
"outline"
|
|
4648
|
-
];
|
|
4649
|
-
function isPackageBadgeVariant(v) {
|
|
4650
|
-
return PACKAGE_BADGE_VARIANTS.some((known) => known === v);
|
|
4651
|
-
}
|
|
4652
|
-
function PackageStatusBadge({ variant, ...rest }) {
|
|
4653
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkFIPS3VPH_cjs.Badge, { variant: isPackageBadgeVariant(variant) ? variant : "outline", ...rest });
|
|
4654
|
-
}
|
|
4655
|
-
var registry = {
|
|
4656
|
-
variants: {},
|
|
4657
|
-
fallback: "outline",
|
|
4658
|
-
Badge: PackageStatusBadge
|
|
4659
|
-
};
|
|
4660
|
-
function configureStatusRegistry(map, opts) {
|
|
4661
|
-
Object.assign(registry.variants, map);
|
|
4662
|
-
if (opts?.fallback) registry.fallback = opts.fallback;
|
|
4663
|
-
if (opts?.Badge) registry.Badge = opts.Badge;
|
|
4664
|
-
}
|
|
4665
|
-
function getStatusVariant(status) {
|
|
4666
|
-
return registry.variants[status] ?? registry.fallback;
|
|
4667
|
-
}
|
|
4668
|
-
function StatusPill({ status, label, variant, className, testId }) {
|
|
4669
|
-
const Badge2 = registry.Badge;
|
|
4670
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: variant ?? getStatusVariant(status), className, "data-testid": testId, children: label ?? status });
|
|
4671
|
-
}
|
|
4672
|
-
var RAG_LABELS = { red: "At risk", amber: "Attention", green: "On track" };
|
|
4673
|
-
function configureRagLabels(labels) {
|
|
4674
|
-
RAG_LABELS = { ...RAG_LABELS, ...labels };
|
|
4675
|
-
}
|
|
4676
|
-
function RagDot({
|
|
4677
|
-
rag,
|
|
4678
|
-
withLabel,
|
|
4679
|
-
className
|
|
4680
|
-
}) {
|
|
4681
|
-
const color = rag === "red" ? "bg-destructive" : rag === "amber" ? "bg-warning" : "bg-success";
|
|
4682
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkFIPS3VPH_cjs.cn("inline-flex items-center gap-1.5", className), "data-testid": `rag-${rag}`, children: [
|
|
4683
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkFIPS3VPH_cjs.cn("size-2 rounded-full", color) }),
|
|
4684
|
-
withLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: RAG_LABELS[rag] })
|
|
4685
|
-
] });
|
|
4686
|
-
}
|
|
4687
|
-
var ENTITY_MAPPINGS = {
|
|
4688
|
-
PRODUCT: {
|
|
4689
|
-
NAMES: {
|
|
4690
|
-
SINGULAR: "ARBI Docs"
|
|
4691
|
-
},
|
|
4692
|
-
ICONS: {
|
|
4693
|
-
DEFAULT: lucideReact.MessageSquareLock
|
|
4694
|
-
}
|
|
4695
|
-
},
|
|
4696
|
-
SECTION: {
|
|
4697
|
-
NAMES: {
|
|
4698
|
-
SINGULAR: "Section"
|
|
4699
|
-
},
|
|
4700
|
-
ICONS: {
|
|
4701
|
-
DEFAULT: lucideReact.ChevronsDown
|
|
4702
|
-
}
|
|
4703
|
-
},
|
|
4704
|
-
WORKSPACE: {
|
|
4705
|
-
NAMES: {
|
|
4706
|
-
SINGULAR: "Workspace",
|
|
4707
|
-
PLURAL: "Workspaces"
|
|
4708
|
-
},
|
|
4709
|
-
ICONS: {
|
|
4710
|
-
DEFAULT: lucideReact.SquareM,
|
|
4711
|
-
NEW: lucideReact.SquarePlus,
|
|
4712
|
-
LIST: lucideReact.LayoutGrid,
|
|
4713
|
-
SETTINGS: lucideReact.Columns3Cog
|
|
4714
|
-
}
|
|
4715
|
-
},
|
|
4716
|
-
CONVERSATION: {
|
|
4717
|
-
NAMES: {
|
|
4718
|
-
SINGULAR: "Chat",
|
|
4719
|
-
PLURAL: "Chats",
|
|
4720
|
-
NEW: "New ARBI Chat"
|
|
4721
|
-
},
|
|
4722
|
-
ICONS: {
|
|
4723
|
-
DEFAULT: lucideReact.MessagesSquare,
|
|
4724
|
-
OFF: lucideReact.MessageSquareOff,
|
|
4725
|
-
ACTIVE: lucideReact.MessageSquareText,
|
|
4726
|
-
NEW: lucideReact.MessageSquarePlus,
|
|
4727
|
-
LIST: lucideReact.MessageSquareMore
|
|
4728
|
-
}
|
|
4729
|
-
},
|
|
4730
|
-
DOCUMENT: {
|
|
4731
|
-
NAMES: {
|
|
4732
|
-
SINGULAR: "File",
|
|
4733
|
-
PLURAL: "Files"
|
|
4734
|
-
},
|
|
4735
|
-
ICONS: {
|
|
4736
|
-
DEFAULT: lucideReact.FolderOpen,
|
|
4737
|
-
OFF: lucideReact.CaptionsOff
|
|
4738
|
-
}
|
|
4739
|
-
},
|
|
4740
|
-
VIEWER: {
|
|
4741
|
-
NAMES: {
|
|
4742
|
-
SINGULAR: "Viewer",
|
|
4743
|
-
PLURAL: "Viewers"
|
|
4744
|
-
},
|
|
4745
|
-
ICONS: {
|
|
4746
|
-
DEFAULT: lucideReact.Eye,
|
|
4747
|
-
OFF: lucideReact.EyeOff
|
|
4748
|
-
}
|
|
4749
|
-
},
|
|
4750
|
-
TAG: {
|
|
4751
|
-
NAMES: {
|
|
4752
|
-
SINGULAR: "Field",
|
|
4753
|
-
PLURAL: "Fields"
|
|
4754
|
-
},
|
|
4755
|
-
ICONS: {
|
|
4756
|
-
DEFAULT: lucideReact.Hash,
|
|
4757
|
-
NEW: lucideReact.FolderPlus
|
|
4758
|
-
}
|
|
4759
|
-
},
|
|
4760
|
-
ANNOTATION: {
|
|
4761
|
-
NAMES: {
|
|
4762
|
-
SINGULAR: "Annotation",
|
|
4763
|
-
PLURAL: "Annotations"
|
|
4764
|
-
},
|
|
4765
|
-
ICONS: {
|
|
4766
|
-
DEFAULT: lucideReact.StickyNote,
|
|
4767
|
-
NEW: lucideReact.StickyNote
|
|
4768
|
-
}
|
|
4769
|
-
},
|
|
4770
|
-
// Workspace knowledge the assistant retains and recalls — durable free text,
|
|
4771
|
-
// optionally grounded in source passages. Distinct from ANNOTATION, which is
|
|
4772
|
-
// attached TO a document field; a NOTE is workspace-scoped and stands alone.
|
|
4773
|
-
// Stored server-side as `memories` (mem-*); "Note" is the user-facing name.
|
|
4774
|
-
NOTE: {
|
|
4775
|
-
NAMES: {
|
|
4776
|
-
SINGULAR: "Note",
|
|
4777
|
-
PLURAL: "Notes"
|
|
4778
|
-
},
|
|
4779
|
-
ICONS: {
|
|
4780
|
-
DEFAULT: lucideReact.NotebookText,
|
|
4781
|
-
NEW: lucideReact.NotebookPen
|
|
4782
|
-
}
|
|
4783
|
-
},
|
|
4784
|
-
USER: {
|
|
4785
|
-
NAMES: {
|
|
4786
|
-
SINGULAR: "User",
|
|
4787
|
-
PLURAL: "Users"
|
|
4788
|
-
},
|
|
4789
|
-
ICONS: {
|
|
4790
|
-
DEFAULT: lucideReact.User,
|
|
4791
|
-
NEW: lucideReact.UserPlus,
|
|
4792
|
-
SETTINGS: lucideReact.Settings2
|
|
4793
|
-
}
|
|
4794
|
-
},
|
|
4795
|
-
WORKSPACEUSER: {
|
|
4796
|
-
NAMES: {
|
|
4797
|
-
SINGULAR: "Member",
|
|
4798
|
-
PLURAL: "Members"
|
|
4799
|
-
},
|
|
4800
|
-
ICONS: {
|
|
4801
|
-
DEFAULT: lucideReact.User,
|
|
4802
|
-
PLURAL: lucideReact.Users,
|
|
4803
|
-
NEW: lucideReact.UserPlus,
|
|
4804
|
-
SETTINGS: lucideReact.Settings2
|
|
4805
|
-
}
|
|
4806
|
-
},
|
|
4807
|
-
CONTACT: {
|
|
4808
|
-
NAMES: {
|
|
4809
|
-
SINGULAR: "Contact",
|
|
4810
|
-
PLURAL: "Contacts"
|
|
4811
|
-
},
|
|
4812
|
-
ICONS: {
|
|
4813
|
-
// A starred person, not an address-book card: contacts here are the
|
|
4814
|
-
// people you talk to, and the star reads as "your people".
|
|
4815
|
-
DEFAULT: lucideReact.UserStar,
|
|
4816
|
-
NEW: lucideReact.UserPlus
|
|
4817
|
-
}
|
|
4818
|
-
},
|
|
4819
|
-
TASK: {
|
|
4820
|
-
NAMES: {
|
|
4821
|
-
SINGULAR: "Job",
|
|
4822
|
-
PLURAL: "Jobs"
|
|
4823
|
-
},
|
|
4824
|
-
ICONS: {
|
|
4825
|
-
DEFAULT: lucideReact.ClipboardList
|
|
4826
|
-
}
|
|
4827
|
-
},
|
|
4828
|
-
PROJECT: {
|
|
4829
|
-
NAMES: {
|
|
4830
|
-
SINGULAR: "Project",
|
|
4831
|
-
PLURAL: "Projects"
|
|
4832
|
-
},
|
|
4833
|
-
ICONS: {
|
|
4834
|
-
DEFAULT: lucideReact.CreditCard
|
|
4835
|
-
}
|
|
4836
|
-
},
|
|
4837
|
-
SKILL: {
|
|
4838
|
-
NAMES: {
|
|
4839
|
-
SINGULAR: "Skill",
|
|
4840
|
-
PLURAL: "Skills"
|
|
4841
|
-
},
|
|
4842
|
-
ICONS: {
|
|
4843
|
-
DEFAULT: lucideReact.Wrench
|
|
4844
|
-
}
|
|
4845
|
-
},
|
|
4846
|
-
ACCOUNT: {
|
|
4847
|
-
NAMES: {
|
|
4848
|
-
SINGULAR: "Account"
|
|
4849
|
-
},
|
|
4850
|
-
ICONS: {
|
|
4851
|
-
DEFAULT: lucideReact.CircleUserRound
|
|
4852
|
-
}
|
|
4853
|
-
},
|
|
4854
|
-
NOTIFICATIONS: {
|
|
4855
|
-
NAMES: {
|
|
4856
|
-
SINGULAR: "Activity",
|
|
4857
|
-
PLURAL: "Activities"
|
|
4858
|
-
},
|
|
4859
|
-
ICONS: {
|
|
4860
|
-
DEFAULT: lucideReact.Bell
|
|
4861
|
-
}
|
|
4862
|
-
},
|
|
4863
|
-
MESSAGE: {
|
|
4864
|
-
NAMES: {
|
|
4865
|
-
SINGULAR: "Message",
|
|
4866
|
-
PLURAL: "Messages"
|
|
4867
|
-
},
|
|
4868
|
-
ICONS: {
|
|
4869
|
-
DEFAULT: lucideReact.MessageSquare
|
|
4870
|
-
}
|
|
4871
|
-
},
|
|
4872
|
-
NOTIFICATION: {
|
|
4873
|
-
NAMES: {
|
|
4874
|
-
SINGULAR: "Notification",
|
|
4875
|
-
PLURAL: "Notifications"
|
|
4876
|
-
},
|
|
4877
|
-
ICONS: {
|
|
4878
|
-
DEFAULT: lucideReact.Bell
|
|
4879
|
-
}
|
|
4880
|
-
},
|
|
4881
|
-
APP: {
|
|
4882
|
-
NAMES: {
|
|
4883
|
-
SINGULAR: "Application",
|
|
4884
|
-
PLURAL: "Applications"
|
|
4885
|
-
},
|
|
4886
|
-
ICONS: {
|
|
4887
|
-
DEFAULT: lucideReact.LayoutGrid,
|
|
4888
|
-
HOME: lucideReact.LayoutGrid,
|
|
4889
|
-
LOGOUT: lucideReact.LogOut,
|
|
4890
|
-
UPLOAD: lucideReact.Upload
|
|
4891
|
-
}
|
|
4892
|
-
},
|
|
4893
|
-
HELP: {
|
|
4894
|
-
NAMES: {
|
|
4895
|
-
SINGULAR: "Help",
|
|
4896
|
-
PLURAL: "Help"
|
|
4897
|
-
},
|
|
4898
|
-
ICONS: {
|
|
4899
|
-
DEFAULT: lucideReact.MessageSquareLock,
|
|
4900
|
-
DOCS: lucideReact.BookOpen,
|
|
4901
|
-
FAQ: lucideReact.FileQuestion,
|
|
4902
|
-
ABOUT: lucideReact.Info
|
|
4903
|
-
}
|
|
4904
|
-
},
|
|
4905
|
-
USERSHIELD: {
|
|
4906
|
-
NAMES: {
|
|
4907
|
-
SINGULAR: "User Shield",
|
|
4908
|
-
PLURAL: "User Shields"
|
|
4909
|
-
},
|
|
4910
|
-
ICONS: {
|
|
4911
|
-
DEFAULT: lucideReact.MessageSquareLock
|
|
4912
|
-
}
|
|
4913
|
-
}
|
|
4914
|
-
};
|
|
4915
|
-
function configureEntityRegistry(overrides) {
|
|
4916
|
-
for (const [type, def] of Object.entries(overrides)) {
|
|
4917
|
-
const target = ENTITY_MAPPINGS[type];
|
|
4918
|
-
if (!target) continue;
|
|
4919
|
-
if (def?.NAMES) Object.assign(target.NAMES, def.NAMES);
|
|
4920
|
-
if (def?.ICONS) Object.assign(target.ICONS, def.ICONS);
|
|
4921
|
-
}
|
|
4922
|
-
}
|
|
4923
|
-
var getEntityIcon = (entityType, variant = "DEFAULT") => {
|
|
4924
|
-
const icons = ENTITY_MAPPINGS[entityType]?.ICONS;
|
|
4925
|
-
return icons?.[variant] || icons?.DEFAULT;
|
|
4926
|
-
};
|
|
4927
|
-
var getEntityLabel = (entityType, form = "SINGULAR") => {
|
|
4928
|
-
const entityMapping = ENTITY_MAPPINGS[entityType];
|
|
4929
|
-
if (!entityMapping) return "";
|
|
4930
|
-
const names = entityMapping.NAMES;
|
|
4931
|
-
const singularName = names.SINGULAR || "";
|
|
4932
|
-
if (form === "NEW") return names.NEW !== void 0 ? names.NEW : "New " + singularName;
|
|
4933
|
-
if (form === "SHORT")
|
|
4934
|
-
return names.SHORT !== void 0 ? names.SHORT : singularName.substring(0, 3) + ".";
|
|
4935
|
-
if (form === "PLURAL") return names.PLURAL !== void 0 ? names.PLURAL : singularName + "s";
|
|
4936
|
-
return singularName;
|
|
4937
|
-
};
|
|
4938
|
-
var EntityIcon = ({ entityType, variant = "DEFAULT", ...props }) => {
|
|
4939
|
-
const IconComponent = getEntityIcon(entityType, variant);
|
|
4940
|
-
return IconComponent ? React2__default.default.createElement(IconComponent, props) : null;
|
|
4941
|
-
};
|
|
4942
|
-
var VISIBILITY_ICONS = {
|
|
4943
|
-
PRIVATE: lucideReact.MessageSquareLock,
|
|
4944
|
-
SHARED: lucideReact.Users
|
|
4945
|
-
};
|
|
4946
|
-
var VisibilityIcon = ({
|
|
4947
|
-
isShared,
|
|
4948
|
-
...props
|
|
4949
|
-
}) => {
|
|
4950
|
-
const IconComponent = isShared ? VISIBILITY_ICONS.SHARED : VISIBILITY_ICONS.PRIVATE;
|
|
4951
|
-
return React2__default.default.createElement(IconComponent, props);
|
|
4952
|
-
};
|
|
4953
|
-
|
|
4954
|
-
// src/entities/colors.ts
|
|
4955
|
-
var OPACITY_LIGHT = 0.15;
|
|
4956
|
-
var OPACITY_MEDIUM = 1;
|
|
4957
|
-
var OPACITY_BORDER = 0.3;
|
|
4958
|
-
var PLACEHOLDER_COLOR = "#9ca3af";
|
|
4959
|
-
var NEUTRAL_GRAY2 = "#64748b";
|
|
4960
|
-
var BASE_COLORS2 = {
|
|
4961
|
-
"0": "#10b981",
|
|
4962
|
-
"1": "#3b82f6",
|
|
4963
|
-
"2": "#8b5cf6",
|
|
4964
|
-
"3": "#f43f5e",
|
|
4965
|
-
"4": "#f59e0b",
|
|
4966
|
-
"5": "#84cc16",
|
|
4967
|
-
"6": "#a855f7",
|
|
4968
|
-
"7": "#06b6d4",
|
|
4969
|
-
"8": "#f97316",
|
|
4970
|
-
"9": "#14b8a6",
|
|
4971
|
-
a: "#ef4444",
|
|
4972
|
-
b: "#6366f1",
|
|
4973
|
-
c: "#ec4899",
|
|
4974
|
-
d: "#22c55e",
|
|
4975
|
-
e: "#eab308",
|
|
4976
|
-
f: "#0ea5e9"
|
|
4977
|
-
};
|
|
4978
|
-
function hexToRgba(hex, opacity) {
|
|
4979
|
-
const r = parseInt(hex.slice(1, 3), 16);
|
|
4980
|
-
const g = parseInt(hex.slice(3, 5), 16);
|
|
4981
|
-
const b = parseInt(hex.slice(5, 7), 16);
|
|
4982
|
-
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
4983
|
-
}
|
|
4984
|
-
function getEntityColor2(entityId, variant = "medium") {
|
|
4985
|
-
const baseColor = BASE_COLORS2[entityId[4]] || BASE_COLORS2["0"];
|
|
4986
|
-
switch (variant) {
|
|
4987
|
-
case "light":
|
|
4988
|
-
return hexToRgba(baseColor, OPACITY_LIGHT);
|
|
4989
|
-
case "medium":
|
|
4990
|
-
return hexToRgba(baseColor, OPACITY_MEDIUM);
|
|
4991
|
-
case "text":
|
|
4992
|
-
return baseColor;
|
|
4993
|
-
}
|
|
4994
|
-
}
|
|
4995
|
-
function getEntityColorStyles(entityId) {
|
|
4996
|
-
const baseColor = BASE_COLORS2[entityId[4]] || BASE_COLORS2["0"];
|
|
4997
|
-
return {
|
|
4998
|
-
backgroundColor: getEntityColor2(entityId, "light"),
|
|
4999
|
-
color: baseColor,
|
|
5000
|
-
borderColor: hexToRgba(baseColor, OPACITY_BORDER)
|
|
5001
|
-
};
|
|
5002
|
-
}
|
|
5003
|
-
var getWorkspaceColor = (workspaceId, useWorkspaceColors) => {
|
|
5004
|
-
const shouldUseWorkspaceColors = useWorkspaceColors !== void 0 ? useWorkspaceColors : true;
|
|
5005
|
-
if (!shouldUseWorkspaceColors) return "hsl(var(--primary))";
|
|
5006
|
-
const isValidId = workspaceId && workspaceId.startsWith("wrk-") && workspaceId.length >= 5;
|
|
5007
|
-
if (!isValidId) return "hsl(var(--primary))";
|
|
5008
|
-
return getEntityColor2(workspaceId, "medium");
|
|
5009
3597
|
};
|
|
5010
3598
|
function getNotificationTypeMeta(type) {
|
|
5011
|
-
const WorkspaceIcon = getEntityIcon("WORKSPACE");
|
|
3599
|
+
const WorkspaceIcon = chunkIZPXHVPJ_cjs.getEntityIcon("WORKSPACE");
|
|
5012
3600
|
switch (type) {
|
|
5013
3601
|
case "user_message":
|
|
5014
3602
|
return { Icon: lucideReact.MessageCircleMore, iconClassName: "text-primary", label: "Message" };
|
|
@@ -5123,7 +3711,7 @@ function describeActivity(content) {
|
|
|
5123
3711
|
}
|
|
5124
3712
|
default:
|
|
5125
3713
|
return {
|
|
5126
|
-
Icon: parsed.workspace_ext_id ? getEntityIcon("WORKSPACE") : lucideReact.Activity,
|
|
3714
|
+
Icon: parsed.workspace_ext_id ? chunkIZPXHVPJ_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
|
|
5127
3715
|
iconClassName: "text-muted-foreground",
|
|
5128
3716
|
title: humaniseEvent(parsed.event)
|
|
5129
3717
|
};
|
|
@@ -5155,20 +3743,20 @@ function ActivityFeed({
|
|
|
5155
3743
|
}) {
|
|
5156
3744
|
const { data, isLoading, isError } = useActivity({ limit, enabled });
|
|
5157
3745
|
if (isLoading) {
|
|
5158
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
3746
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkIZPXHVPJ_cjs.cn("space-y-2", className), "data-testid": testId, "aria-busy": "true", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 py-1.5", children: [
|
|
5159
3747
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 shrink-0 animate-pulse rounded-full bg-muted" }),
|
|
5160
3748
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 flex-1 animate-pulse rounded bg-muted" })
|
|
5161
3749
|
] }, i)) });
|
|
5162
3750
|
}
|
|
5163
3751
|
if (isError) {
|
|
5164
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
3752
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkIZPXHVPJ_cjs.cn("text-sm text-muted-foreground", className), "data-testid": testId, children: "Couldn\u2019t load activity." });
|
|
5165
3753
|
}
|
|
5166
3754
|
const items = data ?? [];
|
|
5167
3755
|
if (items.length === 0) {
|
|
5168
3756
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5169
3757
|
"div",
|
|
5170
3758
|
{
|
|
5171
|
-
className:
|
|
3759
|
+
className: chunkIZPXHVPJ_cjs.cn("flex items-center gap-2 text-sm text-muted-foreground", className),
|
|
5172
3760
|
"data-testid": testId,
|
|
5173
3761
|
children: [
|
|
5174
3762
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Activity, { className: "h-4 w-4 shrink-0" }),
|
|
@@ -5177,7 +3765,7 @@ function ActivityFeed({
|
|
|
5177
3765
|
}
|
|
5178
3766
|
);
|
|
5179
3767
|
}
|
|
5180
|
-
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className:
|
|
3768
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: chunkIZPXHVPJ_cjs.cn("divide-y divide-border", className), "data-testid": testId, children: items.map((item) => {
|
|
5181
3769
|
const desc = describeActivity(item.content);
|
|
5182
3770
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5183
3771
|
"li",
|
|
@@ -5185,7 +3773,7 @@ function ActivityFeed({
|
|
|
5185
3773
|
className: "flex items-center gap-3 py-2",
|
|
5186
3774
|
"data-testid": "activity-feed-item",
|
|
5187
3775
|
children: [
|
|
5188
|
-
/* @__PURE__ */ jsxRuntime.jsx(desc.Icon, { className:
|
|
3776
|
+
/* @__PURE__ */ jsxRuntime.jsx(desc.Icon, { className: chunkIZPXHVPJ_cjs.cn("h-4 w-4 shrink-0", desc.iconClassName) }),
|
|
5189
3777
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-sm text-foreground", children: desc.title }),
|
|
5190
3778
|
/* @__PURE__ */ jsxRuntime.jsx("time", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: formatRelative(item.created_at) })
|
|
5191
3779
|
]
|
|
@@ -5194,65 +3782,6 @@ function ActivityFeed({
|
|
|
5194
3782
|
);
|
|
5195
3783
|
}) });
|
|
5196
3784
|
}
|
|
5197
|
-
var seq = 0;
|
|
5198
|
-
var uid = () => `n${Date.now().toString(36)}${(seq++).toString(36)}`;
|
|
5199
|
-
var useNotify = zustand.create((set) => ({
|
|
5200
|
-
notifications: [],
|
|
5201
|
-
markRead: (id) => set((s) => ({
|
|
5202
|
-
notifications: s.notifications.map((n) => n.id === id ? { ...n, read: true } : n)
|
|
5203
|
-
})),
|
|
5204
|
-
markAllRead: () => set((s) => ({ notifications: s.notifications.map((n) => ({ ...n, read: true })) })),
|
|
5205
|
-
removeNotification: (id) => set((s) => ({ notifications: s.notifications.filter((n) => n.id !== id) })),
|
|
5206
|
-
clearNotifications: () => set({ notifications: [] }),
|
|
5207
|
-
seed: (items) => set({ notifications: items }),
|
|
5208
|
-
record: (note) => set((s) => ({ notifications: [note, ...s.notifications].slice(0, 50) })),
|
|
5209
|
-
syncSource: (source, items) => set((s) => ({
|
|
5210
|
-
notifications: [
|
|
5211
|
-
...items.map((n) => ({ ...n, source })),
|
|
5212
|
-
...s.notifications.filter((n) => n.source !== source)
|
|
5213
|
-
].sort((a, b) => b.ts - a.ts).slice(0, 100)
|
|
5214
|
-
}))
|
|
5215
|
-
}));
|
|
5216
|
-
function make(variant) {
|
|
5217
|
-
return (title, opts = {}) => {
|
|
5218
|
-
sonner.toast[variant](title, {
|
|
5219
|
-
description: opts.description,
|
|
5220
|
-
duration: opts.duration,
|
|
5221
|
-
action: opts.action,
|
|
5222
|
-
icon: opts.icon
|
|
5223
|
-
});
|
|
5224
|
-
const id = uid();
|
|
5225
|
-
if (opts.record !== false) {
|
|
5226
|
-
useNotify.getState().record({
|
|
5227
|
-
id,
|
|
5228
|
-
title,
|
|
5229
|
-
description: opts.description,
|
|
5230
|
-
variant,
|
|
5231
|
-
ts: Date.now(),
|
|
5232
|
-
read: false,
|
|
5233
|
-
href: opts.href,
|
|
5234
|
-
ambient: opts.ambient
|
|
5235
|
-
});
|
|
5236
|
-
}
|
|
5237
|
-
return id;
|
|
5238
|
-
};
|
|
5239
|
-
}
|
|
5240
|
-
var notify = {
|
|
5241
|
-
success: make("success"),
|
|
5242
|
-
error: make("error"),
|
|
5243
|
-
info: make("info"),
|
|
5244
|
-
warning: make("warning")
|
|
5245
|
-
};
|
|
5246
|
-
function seedNotifications(items) {
|
|
5247
|
-
useNotify.getState().seed(items);
|
|
5248
|
-
}
|
|
5249
|
-
var selectUnread = (s) => s.notifications.filter((n) => !n.read && !n.ambient).length;
|
|
5250
|
-
var DEFAULT_NOTIFY_TONE = {
|
|
5251
|
-
success: "text-green-600",
|
|
5252
|
-
error: "text-destructive",
|
|
5253
|
-
warning: "text-amber-500",
|
|
5254
|
-
info: "text-blue-500"
|
|
5255
|
-
};
|
|
5256
3785
|
|
|
5257
3786
|
// src/directmessages/utils.ts
|
|
5258
3787
|
function userInitials(user) {
|
|
@@ -5311,14 +3840,14 @@ function NotificationBell({
|
|
|
5311
3840
|
viewAllLabel = "View all",
|
|
5312
3841
|
testId = "notifications"
|
|
5313
3842
|
}) {
|
|
5314
|
-
const notifications = useNotify((s) => s.notifications);
|
|
5315
|
-
const unread = useNotify(selectUnread);
|
|
5316
|
-
const markAllRead = useNotify((s) => s.markAllRead);
|
|
5317
|
-
const markRead = useNotify((s) => s.markRead);
|
|
5318
|
-
const tone = (v) => toneClassNames?.[v] ?? DEFAULT_NOTIFY_TONE[v];
|
|
3843
|
+
const notifications = chunk3MLQUKT4_cjs.useNotify((s) => s.notifications);
|
|
3844
|
+
const unread = chunk3MLQUKT4_cjs.useNotify(chunk3MLQUKT4_cjs.selectUnread);
|
|
3845
|
+
const markAllRead = chunk3MLQUKT4_cjs.useNotify((s) => s.markAllRead);
|
|
3846
|
+
const markRead = chunk3MLQUKT4_cjs.useNotify((s) => s.markRead);
|
|
3847
|
+
const tone = (v) => toneClassNames?.[v] ?? chunk3MLQUKT4_cjs.DEFAULT_NOTIFY_TONE[v];
|
|
5319
3848
|
const visible = notifications.filter((n) => !n.ambient);
|
|
5320
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5321
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3849
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenu, { children: [
|
|
3850
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5322
3851
|
"button",
|
|
5323
3852
|
{
|
|
5324
3853
|
className: "relative flex size-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
|
|
@@ -5338,7 +3867,7 @@ function NotificationBell({
|
|
|
5338
3867
|
}
|
|
5339
3868
|
) }),
|
|
5340
3869
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5341
|
-
|
|
3870
|
+
chunkIZPXHVPJ_cjs.DropdownMenuContent,
|
|
5342
3871
|
{
|
|
5343
3872
|
align: "end",
|
|
5344
3873
|
sideOffset: 8,
|
|
@@ -5371,7 +3900,7 @@ function NotificationBell({
|
|
|
5371
3900
|
"aria-pressed": muted,
|
|
5372
3901
|
title: muted ? "Unmute notifications" : "Mute notifications",
|
|
5373
3902
|
"aria-label": muted ? "Unmute notifications" : "Mute notifications",
|
|
5374
|
-
className:
|
|
3903
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5375
3904
|
"flex size-6 items-center justify-center rounded-md transition-colors hover:bg-accent",
|
|
5376
3905
|
muted ? "text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
5377
3906
|
),
|
|
@@ -5380,7 +3909,7 @@ function NotificationBell({
|
|
|
5380
3909
|
}
|
|
5381
3910
|
),
|
|
5382
3911
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5383
|
-
|
|
3912
|
+
chunkIZPXHVPJ_cjs.DropdownMenuItem,
|
|
5384
3913
|
{
|
|
5385
3914
|
className: "flex size-6 items-center justify-center rounded-md p-0 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus:bg-accent",
|
|
5386
3915
|
"aria-label": "Close notifications",
|
|
@@ -5398,7 +3927,7 @@ function NotificationBell({
|
|
|
5398
3927
|
children: "Toasts are muted \u2014 everything still lands here."
|
|
5399
3928
|
}
|
|
5400
3929
|
),
|
|
5401
|
-
visible.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3.5 py-10 text-center text-sm text-muted-foreground", children: emptyText }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
3930
|
+
visible.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3.5 py-10 text-center text-sm text-muted-foreground", children: emptyText }) : /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.ScrollArea, { className: "max-h-[380px]", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { "data-testid": `${testId}-list`, children: visible.map((n) => {
|
|
5402
3931
|
const Glyph = GLYPH[n.variant];
|
|
5403
3932
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5404
3933
|
"button",
|
|
@@ -5409,13 +3938,13 @@ function NotificationBell({
|
|
|
5409
3938
|
if (n.onSelect) n.onSelect();
|
|
5410
3939
|
else if (n.href) onNavigate?.(n.href);
|
|
5411
3940
|
},
|
|
5412
|
-
className:
|
|
3941
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5413
3942
|
"flex w-full items-start gap-3 border-b border-border/60 px-3.5 py-3 text-left transition-colors hover:bg-accent",
|
|
5414
3943
|
!n.read && "bg-accent/40"
|
|
5415
3944
|
),
|
|
5416
3945
|
"data-testid": `${testId}-item`,
|
|
5417
3946
|
children: [
|
|
5418
|
-
/* @__PURE__ */ jsxRuntime.jsx(Glyph, { className:
|
|
3947
|
+
/* @__PURE__ */ jsxRuntime.jsx(Glyph, { className: chunkIZPXHVPJ_cjs.cn("mt-0.5 size-4 shrink-0", tone(n.variant)) }),
|
|
5419
3948
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
5420
3949
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium leading-snug text-foreground", children: n.title }),
|
|
5421
3950
|
n.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 line-clamp-2 text-xs leading-relaxed text-muted-foreground", children: n.description }),
|
|
@@ -5429,7 +3958,7 @@ function NotificationBell({
|
|
|
5429
3958
|
onViewAll && // A real menu item, not a bare button: selecting it must CLOSE the
|
|
5430
3959
|
// dropdown on its way to the full surface.
|
|
5431
3960
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5432
|
-
|
|
3961
|
+
chunkIZPXHVPJ_cjs.DropdownMenuItem,
|
|
5433
3962
|
{
|
|
5434
3963
|
onClick: onViewAll,
|
|
5435
3964
|
className: "justify-center rounded-none border-t border-border px-3.5 py-2.5 text-xs font-medium text-primary focus:text-primary",
|
|
@@ -5442,24 +3971,6 @@ function NotificationBell({
|
|
|
5442
3971
|
)
|
|
5443
3972
|
] });
|
|
5444
3973
|
}
|
|
5445
|
-
var DEFAULT_TOAST_OPTIONS = {
|
|
5446
|
-
classNames: {
|
|
5447
|
-
toast: "group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border group-[.toaster]:border-border group-[.toaster]:shadow-lg group-[.toaster]:rounded-lg",
|
|
5448
|
-
description: "group-[.toast]:text-muted-foreground",
|
|
5449
|
-
actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
|
|
5450
|
-
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
|
|
5451
|
-
}
|
|
5452
|
-
};
|
|
5453
|
-
function Toaster({ toastOptions, ...props }) {
|
|
5454
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5455
|
-
sonner.Toaster,
|
|
5456
|
-
{
|
|
5457
|
-
className: "toaster group",
|
|
5458
|
-
toastOptions: toastOptions ?? DEFAULT_TOAST_OPTIONS,
|
|
5459
|
-
...props
|
|
5460
|
-
}
|
|
5461
|
-
);
|
|
5462
|
-
}
|
|
5463
3974
|
var DM_QUERY_KEY = ["arbi", "directMessages"];
|
|
5464
3975
|
var CONTACTS_QUERY_KEY = ["arbi", "contacts"];
|
|
5465
3976
|
function mergeContacts(threads, contacts) {
|
|
@@ -5540,17 +4051,17 @@ function useDirectMessages(options) {
|
|
|
5540
4051
|
} catch {
|
|
5541
4052
|
myExtId = null;
|
|
5542
4053
|
}
|
|
5543
|
-
const [pendingSent, setPendingSent] =
|
|
5544
|
-
const serverIds =
|
|
4054
|
+
const [pendingSent, setPendingSent] = React.useState([]);
|
|
4055
|
+
const serverIds = React.useMemo(
|
|
5545
4056
|
() => new Set((query.data ?? []).map((n) => n.external_id)),
|
|
5546
4057
|
[query.data]
|
|
5547
4058
|
);
|
|
5548
|
-
|
|
4059
|
+
React.useEffect(() => {
|
|
5549
4060
|
setPendingSent(
|
|
5550
4061
|
(pending) => pending.some((n) => serverIds.has(n.external_id)) ? pending.filter((n) => !serverIds.has(n.external_id)) : pending
|
|
5551
4062
|
);
|
|
5552
4063
|
}, [serverIds]);
|
|
5553
|
-
const conversations =
|
|
4064
|
+
const conversations = React.useMemo(() => {
|
|
5554
4065
|
const all = [...pendingSent.filter((n) => !serverIds.has(n.external_id)), ...query.data ?? []];
|
|
5555
4066
|
return mergeContacts(groupConversations(all, myExtId), contactsQuery.data ?? []);
|
|
5556
4067
|
}, [query.data, serverIds, pendingSent, contactsQuery.data, myExtId]);
|
|
@@ -5589,7 +4100,7 @@ function DmAvatar({ user, className, size = "lg" }) {
|
|
|
5589
4100
|
const presence = useArbiWsStore((s) => s.presence[user.external_id]);
|
|
5590
4101
|
const displayStatus = presence === void 0 ? void 0 : presence === "online" ? "connected" : "disconnected";
|
|
5591
4102
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5592
|
-
UserEntity,
|
|
4103
|
+
chunkIZPXHVPJ_cjs.UserEntity,
|
|
5593
4104
|
{
|
|
5594
4105
|
variant: "icon",
|
|
5595
4106
|
size,
|
|
@@ -5599,7 +4110,7 @@ function DmAvatar({ user, className, size = "lg" }) {
|
|
|
5599
4110
|
initials: userInitials(user),
|
|
5600
4111
|
displayName: userDisplayName(user),
|
|
5601
4112
|
picture: user.picture,
|
|
5602
|
-
avatarStyle: getEntityColorStyles(user.external_id),
|
|
4113
|
+
avatarStyle: chunkIZPXHVPJ_cjs.getEntityColorStyles(user.external_id),
|
|
5603
4114
|
isAgent: isAgentUser(user),
|
|
5604
4115
|
displayStatus
|
|
5605
4116
|
}
|
|
@@ -5617,7 +4128,7 @@ function ConversationList({
|
|
|
5617
4128
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5618
4129
|
"aside",
|
|
5619
4130
|
{
|
|
5620
|
-
className:
|
|
4131
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5621
4132
|
"flex min-h-0 flex-col border-b border-border md:w-80 md:shrink-0 md:border-b-0 md:border-r",
|
|
5622
4133
|
className
|
|
5623
4134
|
),
|
|
@@ -5645,17 +4156,17 @@ function ConversationList({
|
|
|
5645
4156
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5646
4157
|
"span",
|
|
5647
4158
|
{
|
|
5648
|
-
className:
|
|
4159
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5649
4160
|
"truncate text-sm text-foreground",
|
|
5650
4161
|
unread ? "font-bold" : "font-semibold"
|
|
5651
4162
|
),
|
|
5652
4163
|
children: userDisplayName(peer)
|
|
5653
4164
|
}
|
|
5654
4165
|
),
|
|
5655
|
-
c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(AgentBadge, {}) : null)
|
|
4166
|
+
c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.AgentBadge, {}) : null)
|
|
5656
4167
|
] }),
|
|
5657
4168
|
c.statusLabel ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5658
|
-
|
|
4169
|
+
chunkIZPXHVPJ_cjs.Badge,
|
|
5659
4170
|
{
|
|
5660
4171
|
variant: "outline",
|
|
5661
4172
|
className: "shrink-0 rounded-full px-2 py-0 text-[10px] font-medium text-muted-foreground",
|
|
@@ -5666,10 +4177,10 @@ function ConversationList({
|
|
|
5666
4177
|
// shouted louder than the message it was counting.
|
|
5667
4178
|
// Enough to catch the eye scanning the list, no more.
|
|
5668
4179
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5669
|
-
|
|
4180
|
+
chunkIZPXHVPJ_cjs.Badge,
|
|
5670
4181
|
{
|
|
5671
4182
|
variant: "accent",
|
|
5672
|
-
className:
|
|
4183
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5673
4184
|
"min-w-[1.125rem] justify-center rounded-full px-1 py-0 text-[10px] font-medium leading-[1.125rem] shadow-none",
|
|
5674
4185
|
classNames?.unreadBadge
|
|
5675
4186
|
),
|
|
@@ -5695,7 +4206,7 @@ function ConversationList({
|
|
|
5695
4206
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5696
4207
|
"p",
|
|
5697
4208
|
{
|
|
5698
|
-
className:
|
|
4209
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5699
4210
|
"min-w-0 flex-1 truncate text-xs",
|
|
5700
4211
|
unread ? "font-medium text-foreground" : "text-muted-foreground"
|
|
5701
4212
|
),
|
|
@@ -5706,7 +4217,7 @@ function ConversationList({
|
|
|
5706
4217
|
] })
|
|
5707
4218
|
] })
|
|
5708
4219
|
] });
|
|
5709
|
-
const rowClass =
|
|
4220
|
+
const rowClass = chunkIZPXHVPJ_cjs.cn(
|
|
5710
4221
|
// Each row is its own opaque surface. Left transparent it takes
|
|
5711
4222
|
// the panel's colour, and the chips stop reading as cards at all
|
|
5712
4223
|
// — which is the whole point of them.
|
|
@@ -5809,12 +4320,12 @@ function MessageThread({
|
|
|
5809
4320
|
onDeleteMessage,
|
|
5810
4321
|
deletedIds
|
|
5811
4322
|
}) {
|
|
5812
|
-
const bottomRef =
|
|
5813
|
-
const items =
|
|
4323
|
+
const bottomRef = React.useRef(null);
|
|
4324
|
+
const items = React.useMemo(
|
|
5814
4325
|
() => annotateThread(conversation?.messages ?? [], THREAD_ACCESSORS),
|
|
5815
4326
|
[conversation?.messages]
|
|
5816
4327
|
);
|
|
5817
|
-
|
|
4328
|
+
React.useEffect(() => {
|
|
5818
4329
|
bottomRef.current?.scrollIntoView({ block: "end" });
|
|
5819
4330
|
}, [conversation?.peer.external_id, conversation?.messages.length]);
|
|
5820
4331
|
if (!conversation) {
|
|
@@ -5835,8 +4346,8 @@ function MessageThread({
|
|
|
5835
4346
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-muted-foreground", children: peer.email })
|
|
5836
4347
|
] })
|
|
5837
4348
|
] }),
|
|
5838
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5839
|
-
items.map(({ message: m, isLastOfRun, isFirstOfDay }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4349
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.ScrollArea, { className: "min-h-0 flex-1 bg-background", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col px-4 py-4", "data-testid": "arbi-dm-thread", children: [
|
|
4350
|
+
items.map(({ message: m, isLastOfRun, isFirstOfDay }) => /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
|
|
5840
4351
|
isFirstOfDay && formatDay && /* @__PURE__ */ jsxRuntime.jsx(DateSeparator, { children: formatDay(m.createdAt) }),
|
|
5841
4352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5842
4353
|
MessageBubble2,
|
|
@@ -5862,8 +4373,8 @@ function DmComposer({
|
|
|
5862
4373
|
children,
|
|
5863
4374
|
classNames
|
|
5864
4375
|
}) {
|
|
5865
|
-
const [draft, setDraft] =
|
|
5866
|
-
const inputRef =
|
|
4376
|
+
const [draft, setDraft] = React.useState("");
|
|
4377
|
+
const inputRef = React.useRef(null);
|
|
5867
4378
|
const submit = async () => {
|
|
5868
4379
|
const text = draft.trim();
|
|
5869
4380
|
if (!text || disabled || busy) return;
|
|
@@ -5885,7 +4396,7 @@ function DmComposer({
|
|
|
5885
4396
|
children,
|
|
5886
4397
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-2", children: [
|
|
5887
4398
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5888
|
-
|
|
4399
|
+
chunkIZPXHVPJ_cjs.Textarea,
|
|
5889
4400
|
{
|
|
5890
4401
|
ref: inputRef,
|
|
5891
4402
|
value: draft,
|
|
@@ -5899,12 +4410,12 @@ function DmComposer({
|
|
|
5899
4410
|
}
|
|
5900
4411
|
),
|
|
5901
4412
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5902
|
-
|
|
4413
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
5903
4414
|
{
|
|
5904
4415
|
type: "button",
|
|
5905
4416
|
onClick: () => void submit(),
|
|
5906
4417
|
disabled: disabled || busy || !draft.trim(),
|
|
5907
|
-
className:
|
|
4418
|
+
className: chunkIZPXHVPJ_cjs.cn(classNames?.sendButton),
|
|
5908
4419
|
"data-testid": "arbi-dm-send",
|
|
5909
4420
|
"aria-label": "Send message",
|
|
5910
4421
|
children: [
|
|
@@ -5933,13 +4444,13 @@ function DirectMessages({
|
|
|
5933
4444
|
sendError,
|
|
5934
4445
|
markRead
|
|
5935
4446
|
} = useDirectMessages();
|
|
5936
|
-
const [selectedPeerId, setSelectedPeerId] =
|
|
4447
|
+
const [selectedPeerId, setSelectedPeerId] = React.useState(null);
|
|
5937
4448
|
const loadError = isError ? error instanceof Error ? error.message : "Couldn\u2019t load messages." : null;
|
|
5938
|
-
const selected =
|
|
4449
|
+
const selected = React.useMemo(
|
|
5939
4450
|
() => conversations.find((c) => c.peer.external_id === selectedPeerId) ?? null,
|
|
5940
4451
|
[conversations, selectedPeerId]
|
|
5941
4452
|
);
|
|
5942
|
-
|
|
4453
|
+
React.useEffect(() => {
|
|
5943
4454
|
if (!selected || selected.unreadCount === 0) return;
|
|
5944
4455
|
const unreadIds = selected.messages.filter((m) => !m.isMine && !m.read).map((m) => m.externalId);
|
|
5945
4456
|
if (unreadIds.length) void markRead(unreadIds);
|
|
@@ -5957,7 +4468,7 @@ function DirectMessages({
|
|
|
5957
4468
|
{
|
|
5958
4469
|
"data-testid": "arbi-dm",
|
|
5959
4470
|
style: { height: "calc(100vh - 16rem)", minHeight: "28rem" },
|
|
5960
|
-
className:
|
|
4471
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
5961
4472
|
"relative flex flex-col overflow-hidden rounded-xl border border-border bg-card md:flex-row",
|
|
5962
4473
|
className
|
|
5963
4474
|
),
|
|
@@ -6013,19 +4524,19 @@ function ImageCropper({
|
|
|
6013
4524
|
className,
|
|
6014
4525
|
onCropComplete
|
|
6015
4526
|
}) {
|
|
6016
|
-
const [crop, setCrop] =
|
|
6017
|
-
const [zoom, setZoom] =
|
|
6018
|
-
const [activeAspect, setActiveAspect] =
|
|
6019
|
-
|
|
4527
|
+
const [crop, setCrop] = React.useState({ x: 0, y: 0 });
|
|
4528
|
+
const [zoom, setZoom] = React.useState(1);
|
|
4529
|
+
const [activeAspect, setActiveAspect] = React.useState(aspectOptions?.[0]?.value ?? aspect);
|
|
4530
|
+
React.useEffect(() => {
|
|
6020
4531
|
if (!aspectOptions) setActiveAspect(aspect);
|
|
6021
4532
|
}, [aspect, aspectOptions]);
|
|
6022
|
-
const handleComplete =
|
|
4533
|
+
const handleComplete = React.useCallback(
|
|
6023
4534
|
(_, areaPixels) => {
|
|
6024
4535
|
onCropComplete?.(areaPixels, activeAspect);
|
|
6025
4536
|
},
|
|
6026
4537
|
[onCropComplete, activeAspect]
|
|
6027
4538
|
);
|
|
6028
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
4539
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkIZPXHVPJ_cjs.cn("flex flex-col gap-3", className), children: [
|
|
6029
4540
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-72 w-full overflow-hidden rounded-md bg-foreground/95", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6030
4541
|
Cropper__default.default,
|
|
6031
4542
|
{
|
|
@@ -6051,7 +4562,7 @@ function ImageCropper({
|
|
|
6051
4562
|
type: "button",
|
|
6052
4563
|
onClick: () => setActiveAspect(opt.value),
|
|
6053
4564
|
"data-testid": `image-cropper-aspect-${opt.label}`,
|
|
6054
|
-
className:
|
|
4565
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6055
4566
|
"rounded-md px-2 py-1 text-xs font-medium transition-colors",
|
|
6056
4567
|
on ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"
|
|
6057
4568
|
),
|
|
@@ -6064,7 +4575,7 @@ function ImageCropper({
|
|
|
6064
4575
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
6065
4576
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: "Zoom" }),
|
|
6066
4577
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6067
|
-
|
|
4578
|
+
chunkIZPXHVPJ_cjs.Slider,
|
|
6068
4579
|
{
|
|
6069
4580
|
value: [zoom],
|
|
6070
4581
|
onValueChange: ([v]) => setZoom(v ?? 1),
|
|
@@ -6129,8 +4640,8 @@ function ImageCropModal({
|
|
|
6129
4640
|
onComplete,
|
|
6130
4641
|
onCancel
|
|
6131
4642
|
}) {
|
|
6132
|
-
const [area, setArea] =
|
|
6133
|
-
const [busy, setBusy] =
|
|
4643
|
+
const [area, setArea] = React.useState(null);
|
|
4644
|
+
const [busy, setBusy] = React.useState(false);
|
|
6134
4645
|
const handleSave = async () => {
|
|
6135
4646
|
if (!image || !area) return;
|
|
6136
4647
|
setBusy(true);
|
|
@@ -6141,8 +4652,8 @@ function ImageCropModal({
|
|
|
6141
4652
|
setBusy(false);
|
|
6142
4653
|
}
|
|
6143
4654
|
};
|
|
6144
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6145
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4655
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
|
|
4656
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DialogTitle, { children: title }) }),
|
|
6146
4657
|
image ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6147
4658
|
ImageCropper,
|
|
6148
4659
|
{
|
|
@@ -6153,9 +4664,9 @@ function ImageCropModal({
|
|
|
6153
4664
|
onCropComplete: setArea
|
|
6154
4665
|
}
|
|
6155
4666
|
) : null,
|
|
6156
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6157
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6158
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4667
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
|
|
4668
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
|
|
4669
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
|
|
6159
4670
|
busy ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "mr-1 size-4 animate-spin" }) : null,
|
|
6160
4671
|
saveLabel
|
|
6161
4672
|
] })
|
|
@@ -6182,9 +4693,9 @@ function CommandPalette({
|
|
|
6182
4693
|
const task = useAiTask();
|
|
6183
4694
|
const searchable = !!searchDocIds && searchDocIds.length > 0;
|
|
6184
4695
|
const { results, search, status: searchStatus } = useSemanticSearch(searchDocIds ?? []);
|
|
6185
|
-
const [query, setQuery] =
|
|
6186
|
-
const inputRef =
|
|
6187
|
-
|
|
4696
|
+
const [query, setQuery] = React.useState("");
|
|
4697
|
+
const inputRef = React.useRef(null);
|
|
4698
|
+
React.useEffect(() => {
|
|
6188
4699
|
if (open) {
|
|
6189
4700
|
setQuery("");
|
|
6190
4701
|
task.reset();
|
|
@@ -6193,21 +4704,21 @@ function CommandPalette({
|
|
|
6193
4704
|
}
|
|
6194
4705
|
}, [open]);
|
|
6195
4706
|
const showingAnswer = task.status !== "idle";
|
|
6196
|
-
|
|
4707
|
+
React.useEffect(() => {
|
|
6197
4708
|
if (!searchable || showingAnswer) return;
|
|
6198
4709
|
const q = query.trim();
|
|
6199
4710
|
if (q.length < 2) return;
|
|
6200
4711
|
const t = setTimeout(() => void search(q, "hybrid"), 300);
|
|
6201
4712
|
return () => clearTimeout(t);
|
|
6202
4713
|
}, [query, searchable, showingAnswer, search]);
|
|
6203
|
-
const navMatches =
|
|
4714
|
+
const navMatches = React.useMemo(() => {
|
|
6204
4715
|
const q = query.trim().toLowerCase();
|
|
6205
4716
|
if (!q) return navItems.slice(0, MAX_NAV);
|
|
6206
4717
|
return navItems.filter(
|
|
6207
4718
|
(i) => i.label.toLowerCase().includes(q) || (i.keywords ? i.keywords.toLowerCase().includes(q) : false)
|
|
6208
4719
|
).slice(0, MAX_NAV);
|
|
6209
4720
|
}, [query, navItems]);
|
|
6210
|
-
const docHits =
|
|
4721
|
+
const docHits = React.useMemo(() => results.slice(0, MAX_DOCS), [results]);
|
|
6211
4722
|
const go = (to) => {
|
|
6212
4723
|
onOpenChange(false);
|
|
6213
4724
|
onNavigate(to);
|
|
@@ -6221,18 +4732,18 @@ function CommandPalette({
|
|
|
6221
4732
|
if (!q || task.isRunning) return;
|
|
6222
4733
|
void task.run(buildAskPrompt(q), askDocIds, { model });
|
|
6223
4734
|
};
|
|
6224
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6225
|
-
|
|
4735
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4736
|
+
chunkIZPXHVPJ_cjs.DialogContent,
|
|
6226
4737
|
{
|
|
6227
|
-
className:
|
|
4738
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6228
4739
|
"top-[12%] max-w-2xl translate-y-0 gap-0 overflow-hidden p-0",
|
|
6229
4740
|
classNames?.dialog
|
|
6230
4741
|
),
|
|
6231
4742
|
"data-testid": testId,
|
|
6232
4743
|
children: [
|
|
6233
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4744
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
|
|
6234
4745
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4", children: [
|
|
6235
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className:
|
|
4746
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: chunkIZPXHVPJ_cjs.cn("size-4 shrink-0 text-ai-accent", classNames?.leadingIcon) }),
|
|
6236
4747
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6237
4748
|
"input",
|
|
6238
4749
|
{
|
|
@@ -6246,7 +4757,7 @@ function CommandPalette({
|
|
|
6246
4757
|
}
|
|
6247
4758
|
},
|
|
6248
4759
|
placeholder,
|
|
6249
|
-
className:
|
|
4760
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6250
4761
|
"h-14 flex-1 bg-transparent text-base outline-none placeholder:text-muted-foreground",
|
|
6251
4762
|
classNames?.input
|
|
6252
4763
|
),
|
|
@@ -6261,7 +4772,7 @@ function CommandPalette({
|
|
|
6261
4772
|
{
|
|
6262
4773
|
type: "button",
|
|
6263
4774
|
onClick: ask,
|
|
6264
|
-
className:
|
|
4775
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6265
4776
|
"mb-1 flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left hover:bg-accent",
|
|
6266
4777
|
classNames?.askAction
|
|
6267
4778
|
),
|
|
@@ -6270,7 +4781,7 @@ function CommandPalette({
|
|
|
6270
4781
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6271
4782
|
"span",
|
|
6272
4783
|
{
|
|
6273
|
-
className:
|
|
4784
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6274
4785
|
"flex size-8 items-center justify-center rounded-md bg-ai-surface text-ai-accent",
|
|
6275
4786
|
classNames?.askChip
|
|
6276
4787
|
),
|
|
@@ -6301,7 +4812,7 @@ function CommandPalette({
|
|
|
6301
4812
|
}
|
|
6302
4813
|
),
|
|
6303
4814
|
task.isDone && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6304
|
-
|
|
4815
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
6305
4816
|
{
|
|
6306
4817
|
variant: "outline",
|
|
6307
4818
|
size: "sm",
|
|
@@ -6319,7 +4830,7 @@ function CommandPalette({
|
|
|
6319
4830
|
{
|
|
6320
4831
|
type: "button",
|
|
6321
4832
|
onClick: () => go(item.to),
|
|
6322
|
-
className:
|
|
4833
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6323
4834
|
"flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left hover:bg-accent",
|
|
6324
4835
|
classNames?.navItem
|
|
6325
4836
|
),
|
|
@@ -6365,9 +4876,9 @@ function CommandPalette({
|
|
|
6365
4876
|
}
|
|
6366
4877
|
) });
|
|
6367
4878
|
}
|
|
6368
|
-
var CommandPaletteCtx =
|
|
4879
|
+
var CommandPaletteCtx = React.createContext(null);
|
|
6369
4880
|
function useCommandPalette() {
|
|
6370
|
-
const v =
|
|
4881
|
+
const v = React.useContext(CommandPaletteCtx);
|
|
6371
4882
|
if (!v) throw new Error("useCommandPalette must be used within a CommandPaletteProvider");
|
|
6372
4883
|
return v;
|
|
6373
4884
|
}
|
|
@@ -6376,11 +4887,11 @@ function CommandPaletteProvider({
|
|
|
6376
4887
|
hotkey = true,
|
|
6377
4888
|
...paletteProps
|
|
6378
4889
|
}) {
|
|
6379
|
-
const [isOpen, setIsOpen] =
|
|
6380
|
-
const open =
|
|
6381
|
-
const close =
|
|
6382
|
-
const toggle =
|
|
6383
|
-
|
|
4890
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
4891
|
+
const open = React.useCallback(() => setIsOpen(true), []);
|
|
4892
|
+
const close = React.useCallback(() => setIsOpen(false), []);
|
|
4893
|
+
const toggle = React.useCallback(() => setIsOpen((o) => !o), []);
|
|
4894
|
+
React.useEffect(() => {
|
|
6384
4895
|
if (!hotkey) return;
|
|
6385
4896
|
const onKey = (e) => {
|
|
6386
4897
|
if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") {
|
|
@@ -6391,7 +4902,7 @@ function CommandPaletteProvider({
|
|
|
6391
4902
|
window.addEventListener("keydown", onKey);
|
|
6392
4903
|
return () => window.removeEventListener("keydown", onKey);
|
|
6393
4904
|
}, [hotkey, toggle]);
|
|
6394
|
-
const value =
|
|
4905
|
+
const value = React.useMemo(() => ({ open, close, toggle, isOpen }), [open, close, toggle, isOpen]);
|
|
6395
4906
|
return /* @__PURE__ */ jsxRuntime.jsxs(CommandPaletteCtx.Provider, { value, children: [
|
|
6396
4907
|
children,
|
|
6397
4908
|
/* @__PURE__ */ jsxRuntime.jsx(CommandPalette, { open: isOpen, onOpenChange: setIsOpen, ...paletteProps })
|
|
@@ -6418,23 +4929,23 @@ function UserMenu({
|
|
|
6418
4929
|
testId = "user-menu",
|
|
6419
4930
|
logoutTestId
|
|
6420
4931
|
}) {
|
|
6421
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6422
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4932
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenu, { children: [
|
|
4933
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6423
4934
|
"button",
|
|
6424
4935
|
{
|
|
6425
|
-
className:
|
|
4936
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6426
4937
|
"flex items-center gap-2 rounded-md px-1.5 py-1 transition-colors hover:bg-accent",
|
|
6427
4938
|
classNames?.trigger
|
|
6428
4939
|
),
|
|
6429
4940
|
"data-testid": testId,
|
|
6430
4941
|
children: [
|
|
6431
4942
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
6432
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6433
|
-
user.picture ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4943
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Avatar, { className: "size-8", children: [
|
|
4944
|
+
user.picture ? /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.AvatarImage, { src: user.picture, alt: user.name }) : null,
|
|
6434
4945
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6435
|
-
|
|
4946
|
+
chunkIZPXHVPJ_cjs.AvatarFallback,
|
|
6436
4947
|
{
|
|
6437
|
-
className:
|
|
4948
|
+
className: chunkIZPXHVPJ_cjs.cn("bg-primary text-primary-foreground", classNames?.fallback),
|
|
6438
4949
|
children: nameInitials(user.name)
|
|
6439
4950
|
}
|
|
6440
4951
|
)
|
|
@@ -6442,7 +4953,7 @@ function UserMenu({
|
|
|
6442
4953
|
status && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6443
4954
|
"span",
|
|
6444
4955
|
{
|
|
6445
|
-
className:
|
|
4956
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6446
4957
|
"absolute -bottom-0.5 -right-0.5 size-2.5 rounded-full border-2 border-background",
|
|
6447
4958
|
STATUS_DOT[status.tone]
|
|
6448
4959
|
),
|
|
@@ -6456,7 +4967,7 @@ function UserMenu({
|
|
|
6456
4967
|
}
|
|
6457
4968
|
) }),
|
|
6458
4969
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6459
|
-
|
|
4970
|
+
chunkIZPXHVPJ_cjs.DropdownMenuContent,
|
|
6460
4971
|
{
|
|
6461
4972
|
align,
|
|
6462
4973
|
sideOffset: 8,
|
|
@@ -6464,9 +4975,9 @@ function UserMenu({
|
|
|
6464
4975
|
className: "w-56 rounded-lg border-border/60 shadow-lg",
|
|
6465
4976
|
"data-testid": "user-menu-panel",
|
|
6466
4977
|
children: [
|
|
6467
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4978
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenuLabel, { className: "relative pr-8", children: [
|
|
6468
4979
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6469
|
-
|
|
4980
|
+
chunkIZPXHVPJ_cjs.DropdownMenuItem,
|
|
6470
4981
|
{
|
|
6471
4982
|
className: "absolute right-1 top-1 flex size-6 items-center justify-center rounded-md p-0 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus:bg-accent",
|
|
6472
4983
|
"aria-label": "Close account menu",
|
|
@@ -6483,7 +4994,7 @@ function UserMenu({
|
|
|
6483
4994
|
"data-testid": status.testId,
|
|
6484
4995
|
children: [
|
|
6485
4996
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
6486
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
4997
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkIZPXHVPJ_cjs.cn("size-2 shrink-0 rounded-full", STATUS_DOT[status.tone]) }),
|
|
6487
4998
|
status.label
|
|
6488
4999
|
] }),
|
|
6489
5000
|
status.detail && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 truncate pl-3.5 text-[10px] leading-tight text-muted-foreground/70", children: status.detail })
|
|
@@ -6491,12 +5002,12 @@ function UserMenu({
|
|
|
6491
5002
|
}
|
|
6492
5003
|
)
|
|
6493
5004
|
] }),
|
|
6494
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6495
|
-
items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5005
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DropdownMenuSeparator, {}),
|
|
5006
|
+
items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenuItem, { onClick: item.onSelect, "data-testid": item.testId, children: [
|
|
6496
5007
|
item.icon && /* @__PURE__ */ jsxRuntime.jsx(item.icon, { className: "size-4" }),
|
|
6497
5008
|
item.label
|
|
6498
5009
|
] }, item.label)),
|
|
6499
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5010
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenuItem, { onClick: onLogout, "data-testid": logoutTestId ?? `${testId}-logout`, children: [
|
|
6500
5011
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOut, { className: "size-4" }),
|
|
6501
5012
|
logoutLabel
|
|
6502
5013
|
] })
|
|
@@ -6548,7 +5059,7 @@ function DocumentTable({
|
|
|
6548
5059
|
const rows = documents ?? query.data ?? [];
|
|
6549
5060
|
const isLoading = !documents && query.isLoading;
|
|
6550
5061
|
const tagsQuery = useTags(workspaceId);
|
|
6551
|
-
const tagNameById =
|
|
5062
|
+
const tagNameById = React__default.default.useMemo(() => {
|
|
6552
5063
|
const map = /* @__PURE__ */ new Map();
|
|
6553
5064
|
for (const t of tagsQuery.data ?? []) {
|
|
6554
5065
|
if (t.external_id) map.set(t.external_id, t.name ?? t.external_id.slice(0, 8));
|
|
@@ -6561,15 +5072,15 @@ function DocumentTable({
|
|
|
6561
5072
|
const setViewingDocId = useArbiUiStore((s) => s.setViewingDocId);
|
|
6562
5073
|
const effectiveSelected = selectedIds ?? storeSelected;
|
|
6563
5074
|
const emitSelection = onSelectionChange ?? storeSetSelected;
|
|
6564
|
-
const gridApiRef =
|
|
6565
|
-
const openDocument =
|
|
5075
|
+
const gridApiRef = React__default.default.useRef(null);
|
|
5076
|
+
const openDocument = React__default.default.useCallback(
|
|
6566
5077
|
(id) => {
|
|
6567
5078
|
setViewingDocId(id);
|
|
6568
5079
|
onOpenDocument?.(id);
|
|
6569
5080
|
},
|
|
6570
5081
|
[onOpenDocument, setViewingDocId]
|
|
6571
5082
|
);
|
|
6572
|
-
const applySelection =
|
|
5083
|
+
const applySelection = React__default.default.useCallback(() => {
|
|
6573
5084
|
const api = gridApiRef.current;
|
|
6574
5085
|
if (!api) return;
|
|
6575
5086
|
const wanted = new Set(effectiveSelected);
|
|
@@ -6579,10 +5090,10 @@ function DocumentTable({
|
|
|
6579
5090
|
if (node.isSelected() !== shouldSelect) node.setSelected(shouldSelect);
|
|
6580
5091
|
});
|
|
6581
5092
|
}, [effectiveSelected]);
|
|
6582
|
-
|
|
5093
|
+
React__default.default.useEffect(() => {
|
|
6583
5094
|
applySelection();
|
|
6584
5095
|
}, [applySelection]);
|
|
6585
|
-
const columnDefs =
|
|
5096
|
+
const columnDefs = React__default.default.useMemo(
|
|
6586
5097
|
() => [
|
|
6587
5098
|
{
|
|
6588
5099
|
colId: "select",
|
|
@@ -6607,7 +5118,7 @@ function DocumentTable({
|
|
|
6607
5118
|
const doc = p.data;
|
|
6608
5119
|
if (!doc) return null;
|
|
6609
5120
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6610
|
-
DocumentEntity,
|
|
5121
|
+
chunkIZPXHVPJ_cjs.DocumentEntity,
|
|
6611
5122
|
{
|
|
6612
5123
|
doc,
|
|
6613
5124
|
size: "base",
|
|
@@ -6630,7 +5141,7 @@ function DocumentTable({
|
|
|
6630
5141
|
cellRenderer: (p) => {
|
|
6631
5142
|
const status = p.data?.status;
|
|
6632
5143
|
if (!status) return null;
|
|
6633
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5144
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
|
|
6634
5145
|
}
|
|
6635
5146
|
},
|
|
6636
5147
|
{
|
|
@@ -6644,7 +5155,7 @@ function DocumentTable({
|
|
|
6644
5155
|
const doctags = p.data?.doctags ?? [];
|
|
6645
5156
|
if (doctags.length === 0) return null;
|
|
6646
5157
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-1 py-1", children: doctags.map((dt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6647
|
-
TagEntity,
|
|
5158
|
+
chunkIZPXHVPJ_cjs.TagEntity,
|
|
6648
5159
|
{
|
|
6649
5160
|
size: "sm",
|
|
6650
5161
|
tag: {
|
|
@@ -6690,7 +5201,7 @@ function DocumentTable({
|
|
|
6690
5201
|
const id = e.data?.external_id;
|
|
6691
5202
|
if (id) openDocument(id);
|
|
6692
5203
|
};
|
|
6693
|
-
const getRowId =
|
|
5204
|
+
const getRowId = React__default.default.useCallback((params) => params.data.external_id, []);
|
|
6694
5205
|
const autoHeight = height === "auto";
|
|
6695
5206
|
const style = autoHeight ? {} : { height: typeof height === "number" ? `${height}px` : height, width: "100%" };
|
|
6696
5207
|
if (isLoading) {
|
|
@@ -6732,17 +5243,17 @@ var STATUS_LABEL = {
|
|
|
6732
5243
|
indexing: "Indexing",
|
|
6733
5244
|
analysing: "Analysing"
|
|
6734
5245
|
};
|
|
6735
|
-
var
|
|
6736
|
-
var
|
|
6737
|
-
var
|
|
6738
|
-
var
|
|
5246
|
+
var IMAGE_EXTENSIONS = /* @__PURE__ */ new Set(["jpg", "jpeg", "png", "gif", "bmp", "tiff", "tif", "webp"]);
|
|
5247
|
+
var VIDEO_EXTENSIONS = /* @__PURE__ */ new Set(["mp4", "mpeg", "mpg", "webm", "mov", "avi", "mkv"]);
|
|
5248
|
+
var AUDIO_EXTENSIONS = /* @__PURE__ */ new Set(["mp3", "wav", "m4a", "aac", "ogg", "flac"]);
|
|
5249
|
+
var EMAIL_EXTENSIONS = /* @__PURE__ */ new Set(["eml", "msg"]);
|
|
6739
5250
|
function fileIcon(fileName, size) {
|
|
6740
5251
|
const ext = fileName?.split(".").pop()?.toLowerCase();
|
|
6741
|
-
if (ext &&
|
|
6742
|
-
if (ext &&
|
|
6743
|
-
if (ext &&
|
|
6744
|
-
if (ext &&
|
|
6745
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PdfIcon, { size });
|
|
5252
|
+
if (ext && VIDEO_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.VidIcon, { size });
|
|
5253
|
+
if (ext && AUDIO_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.AudIcon, { size });
|
|
5254
|
+
if (ext && IMAGE_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.ImgIcon, { size });
|
|
5255
|
+
if (ext && EMAIL_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.EmlIcon, { size });
|
|
5256
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.PdfIcon, { size });
|
|
6746
5257
|
}
|
|
6747
5258
|
function RenameField({
|
|
6748
5259
|
seed,
|
|
@@ -6750,7 +5261,7 @@ function RenameField({
|
|
|
6750
5261
|
onCancel,
|
|
6751
5262
|
testId
|
|
6752
5263
|
}) {
|
|
6753
|
-
const done =
|
|
5264
|
+
const done = React__default.default.useRef(false);
|
|
6754
5265
|
const commit = (value) => {
|
|
6755
5266
|
if (done.current) return;
|
|
6756
5267
|
done.current = true;
|
|
@@ -6838,14 +5349,14 @@ function DocumentCard({
|
|
|
6838
5349
|
const normalised = (status ?? "").toLowerCase();
|
|
6839
5350
|
const isProcessing = ACTIVE_STATUSES.has(normalised);
|
|
6840
5351
|
const showStatusMarker = !isProcessing && TERMINAL_STATUSES2.has(normalised);
|
|
6841
|
-
const [thumbFailed, setThumbFailed] =
|
|
6842
|
-
const [thumbLandscape, setThumbLandscape] =
|
|
5352
|
+
const [thumbFailed, setThumbFailed] = React__default.default.useState(false);
|
|
5353
|
+
const [thumbLandscape, setThumbLandscape] = React__default.default.useState(false);
|
|
6843
5354
|
const showThumbnail = !!thumbnailUrl && !thumbFailed && !isProcessing;
|
|
6844
5355
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6845
5356
|
"div",
|
|
6846
5357
|
{
|
|
6847
5358
|
"data-testid": testId,
|
|
6848
|
-
className:
|
|
5359
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6849
5360
|
// Square corners and a portrait-page aspect (height = 1.3 × width), so a
|
|
6850
5361
|
// cover-page thumbnail reads edge-to-edge.
|
|
6851
5362
|
"group relative aspect-[10/13] select-none overflow-hidden border bg-muted/20 transition",
|
|
@@ -6862,7 +5373,7 @@ function DocumentCard({
|
|
|
6862
5373
|
draggable: false,
|
|
6863
5374
|
onError: () => setThumbFailed(true),
|
|
6864
5375
|
onLoad: (e) => setThumbLandscape(e.currentTarget.naturalWidth > e.currentTarget.naturalHeight),
|
|
6865
|
-
className:
|
|
5376
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6866
5377
|
"absolute inset-0 size-full bg-white",
|
|
6867
5378
|
thumbLandscape ? "object-contain" : "object-cover object-top"
|
|
6868
5379
|
)
|
|
@@ -6880,14 +5391,14 @@ function DocumentCard({
|
|
|
6880
5391
|
}
|
|
6881
5392
|
),
|
|
6882
5393
|
onToggleSelect && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6883
|
-
|
|
5394
|
+
chunkIZPXHVPJ_cjs.Checkbox,
|
|
6884
5395
|
{
|
|
6885
5396
|
checked: selected,
|
|
6886
5397
|
onCheckedChange: () => onToggleSelect(),
|
|
6887
5398
|
onClick: (e) => e.stopPropagation(),
|
|
6888
5399
|
"aria-label": selected ? "Deselect" : "Select",
|
|
6889
5400
|
"data-testid": `${testId}-select`,
|
|
6890
|
-
className:
|
|
5401
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
6891
5402
|
"absolute left-1.5 top-1.5 z-20 size-6 rounded-none border-muted-foreground/60 bg-background shadow-sm transition",
|
|
6892
5403
|
selected ? "opacity-100" : "opacity-40 group-hover:opacity-100"
|
|
6893
5404
|
)
|
|
@@ -6908,7 +5419,7 @@ function DocumentCard({
|
|
|
6908
5419
|
testId: `${testId}-rename-input`
|
|
6909
5420
|
}
|
|
6910
5421
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6911
|
-
DocumentEntity,
|
|
5422
|
+
chunkIZPXHVPJ_cjs.DocumentEntity,
|
|
6912
5423
|
{
|
|
6913
5424
|
doc,
|
|
6914
5425
|
fullWidth: true,
|
|
@@ -6962,8 +5473,8 @@ function DocumentCardMenu({
|
|
|
6962
5473
|
mutationFn: () => arbi.documents.delete([docId]),
|
|
6963
5474
|
onSuccess: invalidateDocuments
|
|
6964
5475
|
});
|
|
6965
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6966
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5476
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenu, { children: [
|
|
5477
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6967
5478
|
"button",
|
|
6968
5479
|
{
|
|
6969
5480
|
type: "button",
|
|
@@ -6974,17 +5485,17 @@ function DocumentCardMenu({
|
|
|
6974
5485
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" })
|
|
6975
5486
|
}
|
|
6976
5487
|
) }),
|
|
6977
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6978
|
-
onOpen && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5488
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenuContent, { align: "start", onClick: (e) => e.stopPropagation(), className: "w-44", children: [
|
|
5489
|
+
onOpen && /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenuItem, { onSelect: onOpen, "data-testid": `${testId}-open`, children: [
|
|
6979
5490
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.SquarePen, { className: "mr-2 size-4" }),
|
|
6980
5491
|
"Open"
|
|
6981
5492
|
] }),
|
|
6982
|
-
onRename && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5493
|
+
onRename && /* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.DropdownMenuItem, { onSelect: onRename, "data-testid": `${testId}-rename`, children: [
|
|
6983
5494
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { className: "mr-2 size-4" }),
|
|
6984
5495
|
"Rename"
|
|
6985
5496
|
] }),
|
|
6986
5497
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6987
|
-
|
|
5498
|
+
chunkIZPXHVPJ_cjs.DropdownMenuItem,
|
|
6988
5499
|
{
|
|
6989
5500
|
onSelect: () => download.mutate(),
|
|
6990
5501
|
disabled: download.isPending,
|
|
@@ -6996,9 +5507,9 @@ function DocumentCardMenu({
|
|
|
6996
5507
|
}
|
|
6997
5508
|
),
|
|
6998
5509
|
canDelete && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6999
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5510
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkIZPXHVPJ_cjs.DropdownMenuSeparator, {}),
|
|
7000
5511
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7001
|
-
|
|
5512
|
+
chunkIZPXHVPJ_cjs.DropdownMenuItem,
|
|
7002
5513
|
{
|
|
7003
5514
|
onSelect: () => remove.mutate(),
|
|
7004
5515
|
disabled: remove.isPending,
|
|
@@ -7043,14 +5554,14 @@ function DocumentGallery({
|
|
|
7043
5554
|
const rows = documents ?? query.data ?? [];
|
|
7044
5555
|
const isLoading = !documents && query.isLoading;
|
|
7045
5556
|
const tagsQuery = useTags(workspaceId);
|
|
7046
|
-
const tagNameById =
|
|
5557
|
+
const tagNameById = React__default.default.useMemo(() => {
|
|
7047
5558
|
const map = /* @__PURE__ */ new Map();
|
|
7048
5559
|
for (const t of tagsQuery.data ?? []) {
|
|
7049
5560
|
if (t.external_id) map.set(t.external_id, t.name ?? t.external_id.slice(0, 8));
|
|
7050
5561
|
}
|
|
7051
5562
|
return map;
|
|
7052
5563
|
}, [tagsQuery.data]);
|
|
7053
|
-
const docIds =
|
|
5564
|
+
const docIds = React__default.default.useMemo(
|
|
7054
5565
|
() => rows.map((d) => d.external_id).filter((id) => !!id),
|
|
7055
5566
|
[rows]
|
|
7056
5567
|
);
|
|
@@ -7062,8 +5573,8 @@ function DocumentGallery({
|
|
|
7062
5573
|
const setViewingDocId = useArbiUiStore((s) => s.setViewingDocId);
|
|
7063
5574
|
const effectiveSelected = selectedIds ?? storeSelected;
|
|
7064
5575
|
const emitSelection = onSelectionChange ?? storeSetSelected;
|
|
7065
|
-
const selectedSet =
|
|
7066
|
-
const toggleSelected =
|
|
5576
|
+
const selectedSet = React__default.default.useMemo(() => new Set(effectiveSelected), [effectiveSelected]);
|
|
5577
|
+
const toggleSelected = React__default.default.useCallback(
|
|
7067
5578
|
(id) => {
|
|
7068
5579
|
const next = new Set(effectiveSelected);
|
|
7069
5580
|
if (next.has(id)) next.delete(id);
|
|
@@ -7072,7 +5583,7 @@ function DocumentGallery({
|
|
|
7072
5583
|
},
|
|
7073
5584
|
[effectiveSelected, emitSelection]
|
|
7074
5585
|
);
|
|
7075
|
-
const openDocument =
|
|
5586
|
+
const openDocument = React__default.default.useCallback(
|
|
7076
5587
|
(id) => {
|
|
7077
5588
|
setViewingDocId(id);
|
|
7078
5589
|
onOpenDocument?.(id);
|
|
@@ -7081,7 +5592,7 @@ function DocumentGallery({
|
|
|
7081
5592
|
);
|
|
7082
5593
|
const arbi = chunk7IOCMCC5_cjs.useArbi();
|
|
7083
5594
|
const queryClient = reactQuery.useQueryClient();
|
|
7084
|
-
const [renamingId, setRenamingId] =
|
|
5595
|
+
const [renamingId, setRenamingId] = React__default.default.useState(null);
|
|
7085
5596
|
const rename = reactQuery.useMutation({
|
|
7086
5597
|
mutationFn: ({ doc, title }) => arbi.documents.update([
|
|
7087
5598
|
{ external_id: doc.external_id, doc_metadata: { ...doc.doc_metadata, title } }
|
|
@@ -7098,7 +5609,7 @@ function DocumentGallery({
|
|
|
7098
5609
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7099
5610
|
"div",
|
|
7100
5611
|
{
|
|
7101
|
-
className:
|
|
5612
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
7102
5613
|
"flex items-center justify-center p-8 text-sm text-muted-foreground",
|
|
7103
5614
|
className
|
|
7104
5615
|
),
|
|
@@ -7110,7 +5621,7 @@ function DocumentGallery({
|
|
|
7110
5621
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7111
5622
|
"div",
|
|
7112
5623
|
{
|
|
7113
|
-
className:
|
|
5624
|
+
className: chunkIZPXHVPJ_cjs.cn(
|
|
7114
5625
|
"flex items-center justify-center p-8 text-sm text-muted-foreground",
|
|
7115
5626
|
className
|
|
7116
5627
|
),
|
|
@@ -7122,7 +5633,7 @@ function DocumentGallery({
|
|
|
7122
5633
|
"div",
|
|
7123
5634
|
{
|
|
7124
5635
|
"data-testid": "document-gallery",
|
|
7125
|
-
className:
|
|
5636
|
+
className: chunkIZPXHVPJ_cjs.cn("grid gap-3", className),
|
|
7126
5637
|
style: { gridTemplateColumns: `repeat(auto-fill, minmax(${minTileWidth}px, 1fr))` },
|
|
7127
5638
|
children: rows.map((doc) => {
|
|
7128
5639
|
const id = doc.external_id;
|
|
@@ -7169,13 +5680,13 @@ function VoiceNoteRecorder({
|
|
|
7169
5680
|
isSaving = false,
|
|
7170
5681
|
transcribe
|
|
7171
5682
|
}) {
|
|
7172
|
-
const recorder =
|
|
7173
|
-
const [transcript, setTranscript] =
|
|
7174
|
-
const [isTranscribing, setIsTranscribing] =
|
|
7175
|
-
|
|
5683
|
+
const recorder = chunkIZPXHVPJ_cjs.useAudioRecorder();
|
|
5684
|
+
const [transcript, setTranscript] = React.useState(null);
|
|
5685
|
+
const [isTranscribing, setIsTranscribing] = React.useState(false);
|
|
5686
|
+
React.useEffect(() => {
|
|
7176
5687
|
if (recorder.error) onError?.(recorder.error);
|
|
7177
5688
|
}, [recorder.error]);
|
|
7178
|
-
|
|
5689
|
+
React.useEffect(() => {
|
|
7179
5690
|
if (recorder.state !== "stopped" || !recorder.blob) {
|
|
7180
5691
|
setTranscript(null);
|
|
7181
5692
|
setIsTranscribing(false);
|
|
@@ -7201,7 +5712,7 @@ function VoiceNoteRecorder({
|
|
|
7201
5712
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-6 p-8", children: [
|
|
7202
5713
|
recorder.state === "idle" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7203
5714
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7204
|
-
|
|
5715
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7205
5716
|
{
|
|
7206
5717
|
type: "button",
|
|
7207
5718
|
size: "lg",
|
|
@@ -7215,7 +5726,7 @@ function VoiceNoteRecorder({
|
|
|
7215
5726
|
] }),
|
|
7216
5727
|
(recorder.state === "recording" || recorder.state === "paused") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7217
5728
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7218
|
-
|
|
5729
|
+
chunkIZPXHVPJ_cjs.MicWaveformIndicator,
|
|
7219
5730
|
{
|
|
7220
5731
|
level: recorder.level,
|
|
7221
5732
|
elapsedMs: recorder.elapsedMs,
|
|
@@ -7224,7 +5735,7 @@ function VoiceNoteRecorder({
|
|
|
7224
5735
|
),
|
|
7225
5736
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7226
5737
|
recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7227
|
-
|
|
5738
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7228
5739
|
{
|
|
7229
5740
|
type: "button",
|
|
7230
5741
|
variant: "outline",
|
|
@@ -7236,7 +5747,7 @@ function VoiceNoteRecorder({
|
|
|
7236
5747
|
]
|
|
7237
5748
|
}
|
|
7238
5749
|
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7239
|
-
|
|
5750
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7240
5751
|
{
|
|
7241
5752
|
type: "button",
|
|
7242
5753
|
variant: "outline",
|
|
@@ -7248,7 +5759,7 @@ function VoiceNoteRecorder({
|
|
|
7248
5759
|
]
|
|
7249
5760
|
}
|
|
7250
5761
|
),
|
|
7251
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5762
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkIZPXHVPJ_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
|
|
7252
5763
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "mr-1.5 h-3.5 w-3.5 fill-current" }),
|
|
7253
5764
|
"Stop"
|
|
7254
5765
|
] })
|
|
@@ -7272,7 +5783,7 @@ function VoiceNoteRecorder({
|
|
|
7272
5783
|
),
|
|
7273
5784
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7274
5785
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7275
|
-
|
|
5786
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7276
5787
|
{
|
|
7277
5788
|
type: "button",
|
|
7278
5789
|
variant: "outline",
|
|
@@ -7286,7 +5797,7 @@ function VoiceNoteRecorder({
|
|
|
7286
5797
|
}
|
|
7287
5798
|
),
|
|
7288
5799
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7289
|
-
|
|
5800
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7290
5801
|
{
|
|
7291
5802
|
type: "button",
|
|
7292
5803
|
variant: "outline",
|
|
@@ -7300,7 +5811,7 @@ function VoiceNoteRecorder({
|
|
|
7300
5811
|
}
|
|
7301
5812
|
),
|
|
7302
5813
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7303
|
-
|
|
5814
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7304
5815
|
{
|
|
7305
5816
|
type: "button",
|
|
7306
5817
|
onClick: handleSave,
|
|
@@ -7337,7 +5848,7 @@ function DraftTitleControls({
|
|
|
7337
5848
|
}
|
|
7338
5849
|
),
|
|
7339
5850
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7340
|
-
|
|
5851
|
+
chunkIZPXHVPJ_cjs.IconToggle,
|
|
7341
5852
|
{
|
|
7342
5853
|
icon: lucideReact.Sparkles,
|
|
7343
5854
|
isActive: autoRename,
|
|
@@ -7351,18 +5862,18 @@ function DraftTitleControls({
|
|
|
7351
5862
|
] });
|
|
7352
5863
|
}
|
|
7353
5864
|
function useCameraStream(constraints = { video: true, audio: false }) {
|
|
7354
|
-
const [stream, setStream] =
|
|
7355
|
-
const [isStarting, setIsStarting] =
|
|
7356
|
-
const [error, setError] =
|
|
7357
|
-
const streamRef =
|
|
7358
|
-
const stop =
|
|
5865
|
+
const [stream, setStream] = React.useState(null);
|
|
5866
|
+
const [isStarting, setIsStarting] = React.useState(false);
|
|
5867
|
+
const [error, setError] = React.useState(null);
|
|
5868
|
+
const streamRef = React.useRef(null);
|
|
5869
|
+
const stop = React.useCallback(() => {
|
|
7359
5870
|
streamRef.current?.getTracks().forEach((t) => t.stop());
|
|
7360
5871
|
streamRef.current = null;
|
|
7361
5872
|
setStream(null);
|
|
7362
5873
|
}, []);
|
|
7363
|
-
const constraintsRef =
|
|
5874
|
+
const constraintsRef = React.useRef(constraints);
|
|
7364
5875
|
constraintsRef.current = constraints;
|
|
7365
|
-
const start =
|
|
5876
|
+
const start = React.useCallback(async () => {
|
|
7366
5877
|
if (streamRef.current) return;
|
|
7367
5878
|
setError(null);
|
|
7368
5879
|
setIsStarting(true);
|
|
@@ -7371,32 +5882,32 @@ function useCameraStream(constraints = { video: true, audio: false }) {
|
|
|
7371
5882
|
streamRef.current = media;
|
|
7372
5883
|
setStream(media);
|
|
7373
5884
|
} catch (err) {
|
|
7374
|
-
setError(
|
|
5885
|
+
setError(chunkIZPXHVPJ_cjs.classifyMediaError(err, "camera"));
|
|
7375
5886
|
} finally {
|
|
7376
5887
|
setIsStarting(false);
|
|
7377
5888
|
}
|
|
7378
5889
|
}, []);
|
|
7379
|
-
|
|
5890
|
+
React.useEffect(() => () => stop(), [stop]);
|
|
7380
5891
|
return { stream, isStarting, error, start, stop };
|
|
7381
5892
|
}
|
|
7382
5893
|
var ELAPSED_TICK_MS = 200;
|
|
7383
5894
|
function useVideoRecorder(stream) {
|
|
7384
|
-
const [state, setState] =
|
|
7385
|
-
const [elapsedMs, setElapsedMs] =
|
|
7386
|
-
const [blob, setBlob] =
|
|
7387
|
-
const [mimeType, setMimeType] =
|
|
7388
|
-
const mediaRecorderRef =
|
|
7389
|
-
const chunksRef =
|
|
7390
|
-
const startedAtRef =
|
|
7391
|
-
const tickRef =
|
|
7392
|
-
const stateRef =
|
|
5895
|
+
const [state, setState] = React.useState("idle");
|
|
5896
|
+
const [elapsedMs, setElapsedMs] = React.useState(0);
|
|
5897
|
+
const [blob, setBlob] = React.useState(null);
|
|
5898
|
+
const [mimeType, setMimeType] = React.useState(null);
|
|
5899
|
+
const mediaRecorderRef = React.useRef(null);
|
|
5900
|
+
const chunksRef = React.useRef([]);
|
|
5901
|
+
const startedAtRef = React.useRef(0);
|
|
5902
|
+
const tickRef = React.useRef(null);
|
|
5903
|
+
const stateRef = React.useRef("idle");
|
|
7393
5904
|
stateRef.current = state;
|
|
7394
|
-
const stopTicking =
|
|
5905
|
+
const stopTicking = React.useCallback(() => {
|
|
7395
5906
|
if (tickRef.current !== null) clearInterval(tickRef.current);
|
|
7396
5907
|
tickRef.current = null;
|
|
7397
5908
|
}, []);
|
|
7398
|
-
|
|
7399
|
-
const start =
|
|
5909
|
+
React.useEffect(() => stopTicking, [stopTicking]);
|
|
5910
|
+
const start = React.useCallback(() => {
|
|
7400
5911
|
if (!stream || stateRef.current === "recording") return;
|
|
7401
5912
|
const mt = MediaRecorder.isTypeSupported("video/webm") ? "video/webm" : "video/mp4";
|
|
7402
5913
|
const recorder = new MediaRecorder(stream, { mimeType: mt });
|
|
@@ -7415,7 +5926,7 @@ function useVideoRecorder(stream) {
|
|
|
7415
5926
|
setElapsedMs(performance.now() - startedAtRef.current);
|
|
7416
5927
|
}, ELAPSED_TICK_MS);
|
|
7417
5928
|
}, [stream]);
|
|
7418
|
-
const stop =
|
|
5929
|
+
const stop = React.useCallback(() => {
|
|
7419
5930
|
const recorder = mediaRecorderRef.current;
|
|
7420
5931
|
if (!recorder || recorder.state === "inactive") return;
|
|
7421
5932
|
const finalElapsed = performance.now() - startedAtRef.current;
|
|
@@ -7428,7 +5939,7 @@ function useVideoRecorder(stream) {
|
|
|
7428
5939
|
};
|
|
7429
5940
|
recorder.stop();
|
|
7430
5941
|
}, [stopTicking]);
|
|
7431
|
-
const reset =
|
|
5942
|
+
const reset = React.useCallback(() => {
|
|
7432
5943
|
setState("idle");
|
|
7433
5944
|
setBlob(null);
|
|
7434
5945
|
setElapsedMs(0);
|
|
@@ -7457,16 +5968,16 @@ function captureFrameAsBlob(video, mimeType = "image/png") {
|
|
|
7457
5968
|
}
|
|
7458
5969
|
function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
7459
5970
|
const camera = useCameraStream({ video: true, audio: false });
|
|
7460
|
-
const videoRef =
|
|
7461
|
-
const [capturedBlob, setCapturedBlob] =
|
|
7462
|
-
const [captureError, setCaptureError] =
|
|
7463
|
-
|
|
5971
|
+
const videoRef = React.useRef(null);
|
|
5972
|
+
const [capturedBlob, setCapturedBlob] = React.useState(null);
|
|
5973
|
+
const [captureError, setCaptureError] = React.useState(null);
|
|
5974
|
+
React.useEffect(() => {
|
|
7464
5975
|
void camera.start();
|
|
7465
5976
|
}, []);
|
|
7466
|
-
|
|
5977
|
+
React.useEffect(() => {
|
|
7467
5978
|
if (camera.error) onError?.(camera.error);
|
|
7468
5979
|
}, [camera.error]);
|
|
7469
|
-
|
|
5980
|
+
React.useEffect(() => {
|
|
7470
5981
|
const video = videoRef.current;
|
|
7471
5982
|
if (!video) return;
|
|
7472
5983
|
video.srcObject = camera.stream;
|
|
@@ -7502,7 +6013,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7502
6013
|
}
|
|
7503
6014
|
) }),
|
|
7504
6015
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7505
|
-
|
|
6016
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7506
6017
|
{
|
|
7507
6018
|
type: "button",
|
|
7508
6019
|
size: "lg",
|
|
@@ -7520,7 +6031,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7520
6031
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7IOCMCC5_cjs.ImageViewer, { blob: capturedBlob, alt: "Captured photo" }) }),
|
|
7521
6032
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7522
6033
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7523
|
-
|
|
6034
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7524
6035
|
{
|
|
7525
6036
|
type: "button",
|
|
7526
6037
|
variant: "outline",
|
|
@@ -7534,7 +6045,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7534
6045
|
}
|
|
7535
6046
|
),
|
|
7536
6047
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7537
|
-
|
|
6048
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7538
6049
|
{
|
|
7539
6050
|
type: "button",
|
|
7540
6051
|
variant: "outline",
|
|
@@ -7548,7 +6059,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7548
6059
|
}
|
|
7549
6060
|
),
|
|
7550
6061
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7551
|
-
|
|
6062
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7552
6063
|
{
|
|
7553
6064
|
type: "button",
|
|
7554
6065
|
onClick: handleSave,
|
|
@@ -7567,14 +6078,14 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7567
6078
|
function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
7568
6079
|
const camera = useCameraStream({ video: true, audio: true });
|
|
7569
6080
|
const recorder = useVideoRecorder(camera.stream);
|
|
7570
|
-
const videoRef =
|
|
7571
|
-
|
|
6081
|
+
const videoRef = React.useRef(null);
|
|
6082
|
+
React.useEffect(() => {
|
|
7572
6083
|
void camera.start();
|
|
7573
6084
|
}, []);
|
|
7574
|
-
|
|
6085
|
+
React.useEffect(() => {
|
|
7575
6086
|
if (camera.error) onError?.(camera.error);
|
|
7576
6087
|
}, [camera.error]);
|
|
7577
|
-
|
|
6088
|
+
React.useEffect(() => {
|
|
7578
6089
|
const video = videoRef.current;
|
|
7579
6090
|
if (!video || recorder.state === "stopped") return;
|
|
7580
6091
|
video.srcObject = camera.stream;
|
|
@@ -7607,10 +6118,10 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7607
6118
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-flex h-2 w-2 rounded-full bg-red-500" })
|
|
7608
6119
|
] }),
|
|
7609
6120
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-red-500", children: "Rec" }),
|
|
7610
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children:
|
|
6121
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunkIZPXHVPJ_cjs.formatElapsed(recorder.elapsedMs) })
|
|
7611
6122
|
] }),
|
|
7612
6123
|
recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7613
|
-
|
|
6124
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7614
6125
|
{
|
|
7615
6126
|
type: "button",
|
|
7616
6127
|
size: "lg",
|
|
@@ -7620,7 +6131,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7620
6131
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-5 w-5 fill-current" })
|
|
7621
6132
|
}
|
|
7622
6133
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
7623
|
-
|
|
6134
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7624
6135
|
{
|
|
7625
6136
|
type: "button",
|
|
7626
6137
|
size: "lg",
|
|
@@ -7637,7 +6148,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7637
6148
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7IOCMCC5_cjs.VideoViewer, { blob: recorder.blob, title: "Captured video" }) }),
|
|
7638
6149
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7639
6150
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7640
|
-
|
|
6151
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7641
6152
|
{
|
|
7642
6153
|
type: "button",
|
|
7643
6154
|
variant: "outline",
|
|
@@ -7651,7 +6162,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7651
6162
|
}
|
|
7652
6163
|
),
|
|
7653
6164
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7654
|
-
|
|
6165
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7655
6166
|
{
|
|
7656
6167
|
type: "button",
|
|
7657
6168
|
variant: "outline",
|
|
@@ -7665,7 +6176,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
|
|
|
7665
6176
|
}
|
|
7666
6177
|
),
|
|
7667
6178
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7668
|
-
|
|
6179
|
+
chunkIZPXHVPJ_cjs.Button,
|
|
7669
6180
|
{
|
|
7670
6181
|
type: "button",
|
|
7671
6182
|
onClick: handleSave,
|
|
@@ -7706,457 +6217,633 @@ function hasVideoTrack(blob) {
|
|
|
7706
6217
|
});
|
|
7707
6218
|
}
|
|
7708
6219
|
|
|
6220
|
+
Object.defineProperty(exports, "DEFAULT_NOTIFY_TONE", {
|
|
6221
|
+
enumerable: true,
|
|
6222
|
+
get: function () { return chunk3MLQUKT4_cjs.DEFAULT_NOTIFY_TONE; }
|
|
6223
|
+
});
|
|
6224
|
+
Object.defineProperty(exports, "Toaster", {
|
|
6225
|
+
enumerable: true,
|
|
6226
|
+
get: function () { return chunk3MLQUKT4_cjs.Toaster; }
|
|
6227
|
+
});
|
|
6228
|
+
Object.defineProperty(exports, "notify", {
|
|
6229
|
+
enumerable: true,
|
|
6230
|
+
get: function () { return chunk3MLQUKT4_cjs.notify; }
|
|
6231
|
+
});
|
|
6232
|
+
Object.defineProperty(exports, "seedNotifications", {
|
|
6233
|
+
enumerable: true,
|
|
6234
|
+
get: function () { return chunk3MLQUKT4_cjs.seedNotifications; }
|
|
6235
|
+
});
|
|
6236
|
+
Object.defineProperty(exports, "selectUnread", {
|
|
6237
|
+
enumerable: true,
|
|
6238
|
+
get: function () { return chunk3MLQUKT4_cjs.selectUnread; }
|
|
6239
|
+
});
|
|
6240
|
+
Object.defineProperty(exports, "toast", {
|
|
6241
|
+
enumerable: true,
|
|
6242
|
+
get: function () { return chunk3MLQUKT4_cjs.toast; }
|
|
6243
|
+
});
|
|
6244
|
+
Object.defineProperty(exports, "useNotify", {
|
|
6245
|
+
enumerable: true,
|
|
6246
|
+
get: function () { return chunk3MLQUKT4_cjs.useNotify; }
|
|
6247
|
+
});
|
|
6248
|
+
Object.defineProperty(exports, "AgentBadge", {
|
|
6249
|
+
enumerable: true,
|
|
6250
|
+
get: function () { return chunkIZPXHVPJ_cjs.AgentBadge; }
|
|
6251
|
+
});
|
|
7709
6252
|
Object.defineProperty(exports, "AiMarkdown", {
|
|
7710
6253
|
enumerable: true,
|
|
7711
|
-
get: function () { return
|
|
6254
|
+
get: function () { return chunkIZPXHVPJ_cjs.AiMarkdown; }
|
|
6255
|
+
});
|
|
6256
|
+
Object.defineProperty(exports, "ArbiBotHeadIcon", {
|
|
6257
|
+
enumerable: true,
|
|
6258
|
+
get: function () { return chunkIZPXHVPJ_cjs.ArbiBotHeadIcon; }
|
|
6259
|
+
});
|
|
6260
|
+
Object.defineProperty(exports, "AudIcon", {
|
|
6261
|
+
enumerable: true,
|
|
6262
|
+
get: function () { return chunkIZPXHVPJ_cjs.AudIcon; }
|
|
7712
6263
|
});
|
|
7713
6264
|
Object.defineProperty(exports, "Avatar", {
|
|
7714
6265
|
enumerable: true,
|
|
7715
|
-
get: function () { return
|
|
6266
|
+
get: function () { return chunkIZPXHVPJ_cjs.Avatar; }
|
|
7716
6267
|
});
|
|
7717
6268
|
Object.defineProperty(exports, "AvatarFallback", {
|
|
7718
6269
|
enumerable: true,
|
|
7719
|
-
get: function () { return
|
|
6270
|
+
get: function () { return chunkIZPXHVPJ_cjs.AvatarFallback; }
|
|
7720
6271
|
});
|
|
7721
6272
|
Object.defineProperty(exports, "AvatarImage", {
|
|
7722
6273
|
enumerable: true,
|
|
7723
|
-
get: function () { return
|
|
6274
|
+
get: function () { return chunkIZPXHVPJ_cjs.AvatarImage; }
|
|
6275
|
+
});
|
|
6276
|
+
Object.defineProperty(exports, "BASE_COLORS", {
|
|
6277
|
+
enumerable: true,
|
|
6278
|
+
get: function () { return chunkIZPXHVPJ_cjs.BASE_COLORS; }
|
|
7724
6279
|
});
|
|
7725
6280
|
Object.defineProperty(exports, "Badge", {
|
|
7726
6281
|
enumerable: true,
|
|
7727
|
-
get: function () { return
|
|
6282
|
+
get: function () { return chunkIZPXHVPJ_cjs.Badge; }
|
|
7728
6283
|
});
|
|
7729
6284
|
Object.defineProperty(exports, "Button", {
|
|
7730
6285
|
enumerable: true,
|
|
7731
|
-
get: function () { return
|
|
6286
|
+
get: function () { return chunkIZPXHVPJ_cjs.Button; }
|
|
7732
6287
|
});
|
|
7733
6288
|
Object.defineProperty(exports, "Card", {
|
|
7734
6289
|
enumerable: true,
|
|
7735
|
-
get: function () { return
|
|
6290
|
+
get: function () { return chunkIZPXHVPJ_cjs.Card; }
|
|
7736
6291
|
});
|
|
7737
6292
|
Object.defineProperty(exports, "CardContent", {
|
|
7738
6293
|
enumerable: true,
|
|
7739
|
-
get: function () { return
|
|
6294
|
+
get: function () { return chunkIZPXHVPJ_cjs.CardContent; }
|
|
7740
6295
|
});
|
|
7741
6296
|
Object.defineProperty(exports, "CardDescription", {
|
|
7742
6297
|
enumerable: true,
|
|
7743
|
-
get: function () { return
|
|
6298
|
+
get: function () { return chunkIZPXHVPJ_cjs.CardDescription; }
|
|
7744
6299
|
});
|
|
7745
6300
|
Object.defineProperty(exports, "CardFooter", {
|
|
7746
6301
|
enumerable: true,
|
|
7747
|
-
get: function () { return
|
|
6302
|
+
get: function () { return chunkIZPXHVPJ_cjs.CardFooter; }
|
|
7748
6303
|
});
|
|
7749
6304
|
Object.defineProperty(exports, "CardHeader", {
|
|
7750
6305
|
enumerable: true,
|
|
7751
|
-
get: function () { return
|
|
6306
|
+
get: function () { return chunkIZPXHVPJ_cjs.CardHeader; }
|
|
7752
6307
|
});
|
|
7753
6308
|
Object.defineProperty(exports, "CardTitle", {
|
|
7754
6309
|
enumerable: true,
|
|
7755
|
-
get: function () { return
|
|
6310
|
+
get: function () { return chunkIZPXHVPJ_cjs.CardTitle; }
|
|
7756
6311
|
});
|
|
7757
6312
|
Object.defineProperty(exports, "Checkbox", {
|
|
7758
6313
|
enumerable: true,
|
|
7759
|
-
get: function () { return
|
|
6314
|
+
get: function () { return chunkIZPXHVPJ_cjs.Checkbox; }
|
|
7760
6315
|
});
|
|
7761
6316
|
Object.defineProperty(exports, "Collapsible", {
|
|
7762
6317
|
enumerable: true,
|
|
7763
|
-
get: function () { return
|
|
6318
|
+
get: function () { return chunkIZPXHVPJ_cjs.Collapsible; }
|
|
7764
6319
|
});
|
|
7765
6320
|
Object.defineProperty(exports, "CollapsibleContent", {
|
|
7766
6321
|
enumerable: true,
|
|
7767
|
-
get: function () { return
|
|
6322
|
+
get: function () { return chunkIZPXHVPJ_cjs.CollapsibleContent; }
|
|
7768
6323
|
});
|
|
7769
6324
|
Object.defineProperty(exports, "CollapsibleTrigger", {
|
|
7770
6325
|
enumerable: true,
|
|
7771
|
-
get: function () { return
|
|
6326
|
+
get: function () { return chunkIZPXHVPJ_cjs.CollapsibleTrigger; }
|
|
7772
6327
|
});
|
|
7773
6328
|
Object.defineProperty(exports, "Command", {
|
|
7774
6329
|
enumerable: true,
|
|
7775
|
-
get: function () { return
|
|
6330
|
+
get: function () { return chunkIZPXHVPJ_cjs.Command; }
|
|
7776
6331
|
});
|
|
7777
6332
|
Object.defineProperty(exports, "CommandDialog", {
|
|
7778
6333
|
enumerable: true,
|
|
7779
|
-
get: function () { return
|
|
6334
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandDialog; }
|
|
7780
6335
|
});
|
|
7781
6336
|
Object.defineProperty(exports, "CommandEmpty", {
|
|
7782
6337
|
enumerable: true,
|
|
7783
|
-
get: function () { return
|
|
6338
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandEmpty; }
|
|
7784
6339
|
});
|
|
7785
6340
|
Object.defineProperty(exports, "CommandGroup", {
|
|
7786
6341
|
enumerable: true,
|
|
7787
|
-
get: function () { return
|
|
6342
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandGroup; }
|
|
7788
6343
|
});
|
|
7789
6344
|
Object.defineProperty(exports, "CommandInput", {
|
|
7790
6345
|
enumerable: true,
|
|
7791
|
-
get: function () { return
|
|
6346
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandInput; }
|
|
7792
6347
|
});
|
|
7793
6348
|
Object.defineProperty(exports, "CommandItem", {
|
|
7794
6349
|
enumerable: true,
|
|
7795
|
-
get: function () { return
|
|
6350
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandItem; }
|
|
7796
6351
|
});
|
|
7797
6352
|
Object.defineProperty(exports, "CommandList", {
|
|
7798
6353
|
enumerable: true,
|
|
7799
|
-
get: function () { return
|
|
6354
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandList; }
|
|
7800
6355
|
});
|
|
7801
6356
|
Object.defineProperty(exports, "CommandSeparator", {
|
|
7802
6357
|
enumerable: true,
|
|
7803
|
-
get: function () { return
|
|
6358
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandSeparator; }
|
|
7804
6359
|
});
|
|
7805
6360
|
Object.defineProperty(exports, "CommandShortcut", {
|
|
7806
6361
|
enumerable: true,
|
|
7807
|
-
get: function () { return
|
|
6362
|
+
get: function () { return chunkIZPXHVPJ_cjs.CommandShortcut; }
|
|
7808
6363
|
});
|
|
7809
6364
|
Object.defineProperty(exports, "Dialog", {
|
|
7810
6365
|
enumerable: true,
|
|
7811
|
-
get: function () { return
|
|
6366
|
+
get: function () { return chunkIZPXHVPJ_cjs.Dialog; }
|
|
7812
6367
|
});
|
|
7813
6368
|
Object.defineProperty(exports, "DialogClose", {
|
|
7814
6369
|
enumerable: true,
|
|
7815
|
-
get: function () { return
|
|
6370
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogClose; }
|
|
7816
6371
|
});
|
|
7817
6372
|
Object.defineProperty(exports, "DialogContent", {
|
|
7818
6373
|
enumerable: true,
|
|
7819
|
-
get: function () { return
|
|
6374
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogContent; }
|
|
7820
6375
|
});
|
|
7821
6376
|
Object.defineProperty(exports, "DialogDescription", {
|
|
7822
6377
|
enumerable: true,
|
|
7823
|
-
get: function () { return
|
|
6378
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogDescription; }
|
|
7824
6379
|
});
|
|
7825
6380
|
Object.defineProperty(exports, "DialogFooter", {
|
|
7826
6381
|
enumerable: true,
|
|
7827
|
-
get: function () { return
|
|
6382
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogFooter; }
|
|
7828
6383
|
});
|
|
7829
6384
|
Object.defineProperty(exports, "DialogHeader", {
|
|
7830
6385
|
enumerable: true,
|
|
7831
|
-
get: function () { return
|
|
6386
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogHeader; }
|
|
7832
6387
|
});
|
|
7833
6388
|
Object.defineProperty(exports, "DialogOverlay", {
|
|
7834
6389
|
enumerable: true,
|
|
7835
|
-
get: function () { return
|
|
6390
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogOverlay; }
|
|
7836
6391
|
});
|
|
7837
6392
|
Object.defineProperty(exports, "DialogPortal", {
|
|
7838
6393
|
enumerable: true,
|
|
7839
|
-
get: function () { return
|
|
6394
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogPortal; }
|
|
7840
6395
|
});
|
|
7841
6396
|
Object.defineProperty(exports, "DialogTitle", {
|
|
7842
6397
|
enumerable: true,
|
|
7843
|
-
get: function () { return
|
|
6398
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogTitle; }
|
|
7844
6399
|
});
|
|
7845
6400
|
Object.defineProperty(exports, "DialogTrigger", {
|
|
7846
6401
|
enumerable: true,
|
|
7847
|
-
get: function () { return
|
|
6402
|
+
get: function () { return chunkIZPXHVPJ_cjs.DialogTrigger; }
|
|
7848
6403
|
});
|
|
7849
6404
|
Object.defineProperty(exports, "DictateProvider", {
|
|
7850
6405
|
enumerable: true,
|
|
7851
|
-
get: function () { return
|
|
6406
|
+
get: function () { return chunkIZPXHVPJ_cjs.DictateProvider; }
|
|
6407
|
+
});
|
|
6408
|
+
Object.defineProperty(exports, "DocumentEntity", {
|
|
6409
|
+
enumerable: true,
|
|
6410
|
+
get: function () { return chunkIZPXHVPJ_cjs.DocumentEntity; }
|
|
7852
6411
|
});
|
|
7853
6412
|
Object.defineProperty(exports, "DropdownMenu", {
|
|
7854
6413
|
enumerable: true,
|
|
7855
|
-
get: function () { return
|
|
6414
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenu; }
|
|
7856
6415
|
});
|
|
7857
6416
|
Object.defineProperty(exports, "DropdownMenuCheckboxItem", {
|
|
7858
6417
|
enumerable: true,
|
|
7859
|
-
get: function () { return
|
|
6418
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuCheckboxItem; }
|
|
7860
6419
|
});
|
|
7861
6420
|
Object.defineProperty(exports, "DropdownMenuContent", {
|
|
7862
6421
|
enumerable: true,
|
|
7863
|
-
get: function () { return
|
|
6422
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuContent; }
|
|
7864
6423
|
});
|
|
7865
6424
|
Object.defineProperty(exports, "DropdownMenuGroup", {
|
|
7866
6425
|
enumerable: true,
|
|
7867
|
-
get: function () { return
|
|
6426
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuGroup; }
|
|
7868
6427
|
});
|
|
7869
6428
|
Object.defineProperty(exports, "DropdownMenuItem", {
|
|
7870
6429
|
enumerable: true,
|
|
7871
|
-
get: function () { return
|
|
6430
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuItem; }
|
|
7872
6431
|
});
|
|
7873
6432
|
Object.defineProperty(exports, "DropdownMenuLabel", {
|
|
7874
6433
|
enumerable: true,
|
|
7875
|
-
get: function () { return
|
|
6434
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuLabel; }
|
|
7876
6435
|
});
|
|
7877
6436
|
Object.defineProperty(exports, "DropdownMenuPortal", {
|
|
7878
6437
|
enumerable: true,
|
|
7879
|
-
get: function () { return
|
|
6438
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuPortal; }
|
|
7880
6439
|
});
|
|
7881
6440
|
Object.defineProperty(exports, "DropdownMenuRadioGroup", {
|
|
7882
6441
|
enumerable: true,
|
|
7883
|
-
get: function () { return
|
|
6442
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuRadioGroup; }
|
|
7884
6443
|
});
|
|
7885
6444
|
Object.defineProperty(exports, "DropdownMenuRadioItem", {
|
|
7886
6445
|
enumerable: true,
|
|
7887
|
-
get: function () { return
|
|
6446
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuRadioItem; }
|
|
7888
6447
|
});
|
|
7889
6448
|
Object.defineProperty(exports, "DropdownMenuSeparator", {
|
|
7890
6449
|
enumerable: true,
|
|
7891
|
-
get: function () { return
|
|
6450
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuSeparator; }
|
|
7892
6451
|
});
|
|
7893
6452
|
Object.defineProperty(exports, "DropdownMenuShortcut", {
|
|
7894
6453
|
enumerable: true,
|
|
7895
|
-
get: function () { return
|
|
6454
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuShortcut; }
|
|
7896
6455
|
});
|
|
7897
6456
|
Object.defineProperty(exports, "DropdownMenuSub", {
|
|
7898
6457
|
enumerable: true,
|
|
7899
|
-
get: function () { return
|
|
6458
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuSub; }
|
|
7900
6459
|
});
|
|
7901
6460
|
Object.defineProperty(exports, "DropdownMenuSubContent", {
|
|
7902
6461
|
enumerable: true,
|
|
7903
|
-
get: function () { return
|
|
6462
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuSubContent; }
|
|
7904
6463
|
});
|
|
7905
6464
|
Object.defineProperty(exports, "DropdownMenuSubTrigger", {
|
|
7906
6465
|
enumerable: true,
|
|
7907
|
-
get: function () { return
|
|
6466
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuSubTrigger; }
|
|
7908
6467
|
});
|
|
7909
6468
|
Object.defineProperty(exports, "DropdownMenuTrigger", {
|
|
7910
6469
|
enumerable: true,
|
|
7911
|
-
get: function () { return
|
|
6470
|
+
get: function () { return chunkIZPXHVPJ_cjs.DropdownMenuTrigger; }
|
|
6471
|
+
});
|
|
6472
|
+
Object.defineProperty(exports, "ENTITY_MAPPINGS", {
|
|
6473
|
+
enumerable: true,
|
|
6474
|
+
get: function () { return chunkIZPXHVPJ_cjs.ENTITY_MAPPINGS; }
|
|
6475
|
+
});
|
|
6476
|
+
Object.defineProperty(exports, "EmlIcon", {
|
|
6477
|
+
enumerable: true,
|
|
6478
|
+
get: function () { return chunkIZPXHVPJ_cjs.EmlIcon; }
|
|
6479
|
+
});
|
|
6480
|
+
Object.defineProperty(exports, "EntityIcon", {
|
|
6481
|
+
enumerable: true,
|
|
6482
|
+
get: function () { return chunkIZPXHVPJ_cjs.EntityIcon; }
|
|
6483
|
+
});
|
|
6484
|
+
Object.defineProperty(exports, "EntityPill", {
|
|
6485
|
+
enumerable: true,
|
|
6486
|
+
get: function () { return chunkIZPXHVPJ_cjs.EntityPill; }
|
|
6487
|
+
});
|
|
6488
|
+
Object.defineProperty(exports, "FILE_TYPE_COLORS", {
|
|
6489
|
+
enumerable: true,
|
|
6490
|
+
get: function () { return chunkIZPXHVPJ_cjs.FILE_TYPE_COLORS; }
|
|
7912
6491
|
});
|
|
7913
6492
|
Object.defineProperty(exports, "HoverCard", {
|
|
7914
6493
|
enumerable: true,
|
|
7915
|
-
get: function () { return
|
|
6494
|
+
get: function () { return chunkIZPXHVPJ_cjs.HoverCard; }
|
|
7916
6495
|
});
|
|
7917
6496
|
Object.defineProperty(exports, "HoverCardContent", {
|
|
7918
6497
|
enumerable: true,
|
|
7919
|
-
get: function () { return
|
|
6498
|
+
get: function () { return chunkIZPXHVPJ_cjs.HoverCardContent; }
|
|
7920
6499
|
});
|
|
7921
6500
|
Object.defineProperty(exports, "HoverCardTrigger", {
|
|
7922
6501
|
enumerable: true,
|
|
7923
|
-
get: function () { return
|
|
6502
|
+
get: function () { return chunkIZPXHVPJ_cjs.HoverCardTrigger; }
|
|
7924
6503
|
});
|
|
7925
6504
|
Object.defineProperty(exports, "IconToggle", {
|
|
7926
6505
|
enumerable: true,
|
|
7927
|
-
get: function () { return
|
|
6506
|
+
get: function () { return chunkIZPXHVPJ_cjs.IconToggle; }
|
|
6507
|
+
});
|
|
6508
|
+
Object.defineProperty(exports, "ImgIcon", {
|
|
6509
|
+
enumerable: true,
|
|
6510
|
+
get: function () { return chunkIZPXHVPJ_cjs.ImgIcon; }
|
|
7928
6511
|
});
|
|
7929
6512
|
Object.defineProperty(exports, "InlineMicButton", {
|
|
7930
6513
|
enumerable: true,
|
|
7931
|
-
get: function () { return
|
|
6514
|
+
get: function () { return chunkIZPXHVPJ_cjs.InlineMicButton; }
|
|
7932
6515
|
});
|
|
7933
6516
|
Object.defineProperty(exports, "Input", {
|
|
7934
6517
|
enumerable: true,
|
|
7935
|
-
get: function () { return
|
|
6518
|
+
get: function () { return chunkIZPXHVPJ_cjs.Input; }
|
|
7936
6519
|
});
|
|
7937
6520
|
Object.defineProperty(exports, "Label", {
|
|
7938
6521
|
enumerable: true,
|
|
7939
|
-
get: function () { return
|
|
6522
|
+
get: function () { return chunkIZPXHVPJ_cjs.Label; }
|
|
7940
6523
|
});
|
|
7941
6524
|
Object.defineProperty(exports, "MarkdownRenderer", {
|
|
7942
6525
|
enumerable: true,
|
|
7943
|
-
get: function () { return
|
|
6526
|
+
get: function () { return chunkIZPXHVPJ_cjs.MarkdownRenderer; }
|
|
7944
6527
|
});
|
|
7945
6528
|
Object.defineProperty(exports, "MarkdownStreamingContext", {
|
|
7946
6529
|
enumerable: true,
|
|
7947
|
-
get: function () { return
|
|
6530
|
+
get: function () { return chunkIZPXHVPJ_cjs.MarkdownStreamingContext; }
|
|
7948
6531
|
});
|
|
7949
6532
|
Object.defineProperty(exports, "MicRecordingOverlay", {
|
|
7950
6533
|
enumerable: true,
|
|
7951
|
-
get: function () { return
|
|
6534
|
+
get: function () { return chunkIZPXHVPJ_cjs.MicRecordingOverlay; }
|
|
7952
6535
|
});
|
|
7953
6536
|
Object.defineProperty(exports, "MicWaveformIndicator", {
|
|
7954
6537
|
enumerable: true,
|
|
7955
|
-
get: function () { return
|
|
6538
|
+
get: function () { return chunkIZPXHVPJ_cjs.MicWaveformIndicator; }
|
|
6539
|
+
});
|
|
6540
|
+
Object.defineProperty(exports, "NEUTRAL_GRAY", {
|
|
6541
|
+
enumerable: true,
|
|
6542
|
+
get: function () { return chunkIZPXHVPJ_cjs.NEUTRAL_GRAY; }
|
|
6543
|
+
});
|
|
6544
|
+
Object.defineProperty(exports, "PLACEHOLDER_COLOR", {
|
|
6545
|
+
enumerable: true,
|
|
6546
|
+
get: function () { return chunkIZPXHVPJ_cjs.PLACEHOLDER_COLOR; }
|
|
6547
|
+
});
|
|
6548
|
+
Object.defineProperty(exports, "PdfIcon", {
|
|
6549
|
+
enumerable: true,
|
|
6550
|
+
get: function () { return chunkIZPXHVPJ_cjs.PdfIcon; }
|
|
7956
6551
|
});
|
|
7957
6552
|
Object.defineProperty(exports, "Popover", {
|
|
7958
6553
|
enumerable: true,
|
|
7959
|
-
get: function () { return
|
|
6554
|
+
get: function () { return chunkIZPXHVPJ_cjs.Popover; }
|
|
7960
6555
|
});
|
|
7961
6556
|
Object.defineProperty(exports, "PopoverAnchor", {
|
|
7962
6557
|
enumerable: true,
|
|
7963
|
-
get: function () { return
|
|
6558
|
+
get: function () { return chunkIZPXHVPJ_cjs.PopoverAnchor; }
|
|
7964
6559
|
});
|
|
7965
6560
|
Object.defineProperty(exports, "PopoverContent", {
|
|
7966
6561
|
enumerable: true,
|
|
7967
|
-
get: function () { return
|
|
6562
|
+
get: function () { return chunkIZPXHVPJ_cjs.PopoverContent; }
|
|
7968
6563
|
});
|
|
7969
6564
|
Object.defineProperty(exports, "PopoverTrigger", {
|
|
7970
6565
|
enumerable: true,
|
|
7971
|
-
get: function () { return
|
|
6566
|
+
get: function () { return chunkIZPXHVPJ_cjs.PopoverTrigger; }
|
|
6567
|
+
});
|
|
6568
|
+
Object.defineProperty(exports, "PresenceLabel", {
|
|
6569
|
+
enumerable: true,
|
|
6570
|
+
get: function () { return chunkIZPXHVPJ_cjs.PresenceLabel; }
|
|
7972
6571
|
});
|
|
7973
6572
|
Object.defineProperty(exports, "Progress", {
|
|
7974
6573
|
enumerable: true,
|
|
7975
|
-
get: function () { return
|
|
6574
|
+
get: function () { return chunkIZPXHVPJ_cjs.Progress; }
|
|
6575
|
+
});
|
|
6576
|
+
Object.defineProperty(exports, "ProjectEntity", {
|
|
6577
|
+
enumerable: true,
|
|
6578
|
+
get: function () { return chunkIZPXHVPJ_cjs.ProjectEntity; }
|
|
7976
6579
|
});
|
|
7977
6580
|
Object.defineProperty(exports, "RadioGroup", {
|
|
7978
6581
|
enumerable: true,
|
|
7979
|
-
get: function () { return
|
|
6582
|
+
get: function () { return chunkIZPXHVPJ_cjs.RadioGroup; }
|
|
7980
6583
|
});
|
|
7981
6584
|
Object.defineProperty(exports, "RadioGroupItem", {
|
|
7982
6585
|
enumerable: true,
|
|
7983
|
-
get: function () { return
|
|
6586
|
+
get: function () { return chunkIZPXHVPJ_cjs.RadioGroupItem; }
|
|
6587
|
+
});
|
|
6588
|
+
Object.defineProperty(exports, "RagDot", {
|
|
6589
|
+
enumerable: true,
|
|
6590
|
+
get: function () { return chunkIZPXHVPJ_cjs.RagDot; }
|
|
7984
6591
|
});
|
|
7985
6592
|
Object.defineProperty(exports, "ScrollArea", {
|
|
7986
6593
|
enumerable: true,
|
|
7987
|
-
get: function () { return
|
|
6594
|
+
get: function () { return chunkIZPXHVPJ_cjs.ScrollArea; }
|
|
7988
6595
|
});
|
|
7989
6596
|
Object.defineProperty(exports, "ScrollBar", {
|
|
7990
6597
|
enumerable: true,
|
|
7991
|
-
get: function () { return
|
|
6598
|
+
get: function () { return chunkIZPXHVPJ_cjs.ScrollBar; }
|
|
7992
6599
|
});
|
|
7993
6600
|
Object.defineProperty(exports, "Select", {
|
|
7994
6601
|
enumerable: true,
|
|
7995
|
-
get: function () { return
|
|
6602
|
+
get: function () { return chunkIZPXHVPJ_cjs.Select; }
|
|
7996
6603
|
});
|
|
7997
6604
|
Object.defineProperty(exports, "SelectContent", {
|
|
7998
6605
|
enumerable: true,
|
|
7999
|
-
get: function () { return
|
|
6606
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectContent; }
|
|
8000
6607
|
});
|
|
8001
6608
|
Object.defineProperty(exports, "SelectGroup", {
|
|
8002
6609
|
enumerable: true,
|
|
8003
|
-
get: function () { return
|
|
6610
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectGroup; }
|
|
8004
6611
|
});
|
|
8005
6612
|
Object.defineProperty(exports, "SelectItem", {
|
|
8006
6613
|
enumerable: true,
|
|
8007
|
-
get: function () { return
|
|
6614
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectItem; }
|
|
8008
6615
|
});
|
|
8009
6616
|
Object.defineProperty(exports, "SelectLabel", {
|
|
8010
6617
|
enumerable: true,
|
|
8011
|
-
get: function () { return
|
|
6618
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectLabel; }
|
|
8012
6619
|
});
|
|
8013
6620
|
Object.defineProperty(exports, "SelectScrollDownButton", {
|
|
8014
6621
|
enumerable: true,
|
|
8015
|
-
get: function () { return
|
|
6622
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectScrollDownButton; }
|
|
8016
6623
|
});
|
|
8017
6624
|
Object.defineProperty(exports, "SelectScrollUpButton", {
|
|
8018
6625
|
enumerable: true,
|
|
8019
|
-
get: function () { return
|
|
6626
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectScrollUpButton; }
|
|
8020
6627
|
});
|
|
8021
6628
|
Object.defineProperty(exports, "SelectSeparator", {
|
|
8022
6629
|
enumerable: true,
|
|
8023
|
-
get: function () { return
|
|
6630
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectSeparator; }
|
|
8024
6631
|
});
|
|
8025
6632
|
Object.defineProperty(exports, "SelectTrigger", {
|
|
8026
6633
|
enumerable: true,
|
|
8027
|
-
get: function () { return
|
|
6634
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectTrigger; }
|
|
8028
6635
|
});
|
|
8029
6636
|
Object.defineProperty(exports, "SelectValue", {
|
|
8030
6637
|
enumerable: true,
|
|
8031
|
-
get: function () { return
|
|
6638
|
+
get: function () { return chunkIZPXHVPJ_cjs.SelectValue; }
|
|
8032
6639
|
});
|
|
8033
6640
|
Object.defineProperty(exports, "Separator", {
|
|
8034
6641
|
enumerable: true,
|
|
8035
|
-
get: function () { return
|
|
6642
|
+
get: function () { return chunkIZPXHVPJ_cjs.Separator; }
|
|
8036
6643
|
});
|
|
8037
6644
|
Object.defineProperty(exports, "Slider", {
|
|
8038
6645
|
enumerable: true,
|
|
8039
|
-
get: function () { return
|
|
6646
|
+
get: function () { return chunkIZPXHVPJ_cjs.Slider; }
|
|
6647
|
+
});
|
|
6648
|
+
Object.defineProperty(exports, "StatusPill", {
|
|
6649
|
+
enumerable: true,
|
|
6650
|
+
get: function () { return chunkIZPXHVPJ_cjs.StatusPill; }
|
|
8040
6651
|
});
|
|
8041
6652
|
Object.defineProperty(exports, "Switch", {
|
|
8042
6653
|
enumerable: true,
|
|
8043
|
-
get: function () { return
|
|
6654
|
+
get: function () { return chunkIZPXHVPJ_cjs.Switch; }
|
|
6655
|
+
});
|
|
6656
|
+
Object.defineProperty(exports, "TAG_TYPE_ICONS", {
|
|
6657
|
+
enumerable: true,
|
|
6658
|
+
get: function () { return chunkIZPXHVPJ_cjs.TAG_TYPE_ICONS; }
|
|
6659
|
+
});
|
|
6660
|
+
Object.defineProperty(exports, "TAG_TYPE_LABELS", {
|
|
6661
|
+
enumerable: true,
|
|
6662
|
+
get: function () { return chunkIZPXHVPJ_cjs.TAG_TYPE_LABELS; }
|
|
8044
6663
|
});
|
|
8045
6664
|
Object.defineProperty(exports, "Table", {
|
|
8046
6665
|
enumerable: true,
|
|
8047
|
-
get: function () { return
|
|
6666
|
+
get: function () { return chunkIZPXHVPJ_cjs.Table; }
|
|
8048
6667
|
});
|
|
8049
6668
|
Object.defineProperty(exports, "TableBody", {
|
|
8050
6669
|
enumerable: true,
|
|
8051
|
-
get: function () { return
|
|
6670
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableBody; }
|
|
8052
6671
|
});
|
|
8053
6672
|
Object.defineProperty(exports, "TableCaption", {
|
|
8054
6673
|
enumerable: true,
|
|
8055
|
-
get: function () { return
|
|
6674
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableCaption; }
|
|
8056
6675
|
});
|
|
8057
6676
|
Object.defineProperty(exports, "TableCell", {
|
|
8058
6677
|
enumerable: true,
|
|
8059
|
-
get: function () { return
|
|
6678
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableCell; }
|
|
8060
6679
|
});
|
|
8061
6680
|
Object.defineProperty(exports, "TableFooter", {
|
|
8062
6681
|
enumerable: true,
|
|
8063
|
-
get: function () { return
|
|
6682
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableFooter; }
|
|
8064
6683
|
});
|
|
8065
6684
|
Object.defineProperty(exports, "TableHead", {
|
|
8066
6685
|
enumerable: true,
|
|
8067
|
-
get: function () { return
|
|
6686
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableHead; }
|
|
8068
6687
|
});
|
|
8069
6688
|
Object.defineProperty(exports, "TableHeader", {
|
|
8070
6689
|
enumerable: true,
|
|
8071
|
-
get: function () { return
|
|
6690
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableHeader; }
|
|
8072
6691
|
});
|
|
8073
6692
|
Object.defineProperty(exports, "TableRow", {
|
|
8074
6693
|
enumerable: true,
|
|
8075
|
-
get: function () { return
|
|
6694
|
+
get: function () { return chunkIZPXHVPJ_cjs.TableRow; }
|
|
8076
6695
|
});
|
|
8077
6696
|
Object.defineProperty(exports, "Tabs", {
|
|
8078
6697
|
enumerable: true,
|
|
8079
|
-
get: function () { return
|
|
6698
|
+
get: function () { return chunkIZPXHVPJ_cjs.Tabs; }
|
|
8080
6699
|
});
|
|
8081
6700
|
Object.defineProperty(exports, "TabsContent", {
|
|
8082
6701
|
enumerable: true,
|
|
8083
|
-
get: function () { return
|
|
6702
|
+
get: function () { return chunkIZPXHVPJ_cjs.TabsContent; }
|
|
8084
6703
|
});
|
|
8085
6704
|
Object.defineProperty(exports, "TabsList", {
|
|
8086
6705
|
enumerable: true,
|
|
8087
|
-
get: function () { return
|
|
6706
|
+
get: function () { return chunkIZPXHVPJ_cjs.TabsList; }
|
|
8088
6707
|
});
|
|
8089
6708
|
Object.defineProperty(exports, "TabsTrigger", {
|
|
8090
6709
|
enumerable: true,
|
|
8091
|
-
get: function () { return
|
|
6710
|
+
get: function () { return chunkIZPXHVPJ_cjs.TabsTrigger; }
|
|
6711
|
+
});
|
|
6712
|
+
Object.defineProperty(exports, "TagEntity", {
|
|
6713
|
+
enumerable: true,
|
|
6714
|
+
get: function () { return chunkIZPXHVPJ_cjs.TagEntity; }
|
|
8092
6715
|
});
|
|
8093
6716
|
Object.defineProperty(exports, "Textarea", {
|
|
8094
6717
|
enumerable: true,
|
|
8095
|
-
get: function () { return
|
|
6718
|
+
get: function () { return chunkIZPXHVPJ_cjs.Textarea; }
|
|
8096
6719
|
});
|
|
8097
6720
|
Object.defineProperty(exports, "Toggle", {
|
|
8098
6721
|
enumerable: true,
|
|
8099
|
-
get: function () { return
|
|
6722
|
+
get: function () { return chunkIZPXHVPJ_cjs.Toggle; }
|
|
8100
6723
|
});
|
|
8101
6724
|
Object.defineProperty(exports, "ToggleGroup", {
|
|
8102
6725
|
enumerable: true,
|
|
8103
|
-
get: function () { return
|
|
6726
|
+
get: function () { return chunkIZPXHVPJ_cjs.ToggleGroup; }
|
|
8104
6727
|
});
|
|
8105
6728
|
Object.defineProperty(exports, "ToggleGroupItem", {
|
|
8106
6729
|
enumerable: true,
|
|
8107
|
-
get: function () { return
|
|
6730
|
+
get: function () { return chunkIZPXHVPJ_cjs.ToggleGroupItem; }
|
|
8108
6731
|
});
|
|
8109
6732
|
Object.defineProperty(exports, "Tooltip", {
|
|
8110
6733
|
enumerable: true,
|
|
8111
|
-
get: function () { return
|
|
6734
|
+
get: function () { return chunkIZPXHVPJ_cjs.Tooltip; }
|
|
8112
6735
|
});
|
|
8113
6736
|
Object.defineProperty(exports, "TooltipContent", {
|
|
8114
6737
|
enumerable: true,
|
|
8115
|
-
get: function () { return
|
|
6738
|
+
get: function () { return chunkIZPXHVPJ_cjs.TooltipContent; }
|
|
8116
6739
|
});
|
|
8117
6740
|
Object.defineProperty(exports, "TooltipProvider", {
|
|
8118
6741
|
enumerable: true,
|
|
8119
|
-
get: function () { return
|
|
6742
|
+
get: function () { return chunkIZPXHVPJ_cjs.TooltipProvider; }
|
|
8120
6743
|
});
|
|
8121
6744
|
Object.defineProperty(exports, "TooltipTrigger", {
|
|
8122
6745
|
enumerable: true,
|
|
8123
|
-
get: function () { return
|
|
6746
|
+
get: function () { return chunkIZPXHVPJ_cjs.TooltipTrigger; }
|
|
6747
|
+
});
|
|
6748
|
+
Object.defineProperty(exports, "UserEntity", {
|
|
6749
|
+
enumerable: true,
|
|
6750
|
+
get: function () { return chunkIZPXHVPJ_cjs.UserEntity; }
|
|
6751
|
+
});
|
|
6752
|
+
Object.defineProperty(exports, "VISIBILITY_ICONS", {
|
|
6753
|
+
enumerable: true,
|
|
6754
|
+
get: function () { return chunkIZPXHVPJ_cjs.VISIBILITY_ICONS; }
|
|
6755
|
+
});
|
|
6756
|
+
Object.defineProperty(exports, "VidIcon", {
|
|
6757
|
+
enumerable: true,
|
|
6758
|
+
get: function () { return chunkIZPXHVPJ_cjs.VidIcon; }
|
|
6759
|
+
});
|
|
6760
|
+
Object.defineProperty(exports, "VisibilityIcon", {
|
|
6761
|
+
enumerable: true,
|
|
6762
|
+
get: function () { return chunkIZPXHVPJ_cjs.VisibilityIcon; }
|
|
8124
6763
|
});
|
|
8125
6764
|
Object.defineProperty(exports, "badgeVariants", {
|
|
8126
6765
|
enumerable: true,
|
|
8127
|
-
get: function () { return
|
|
6766
|
+
get: function () { return chunkIZPXHVPJ_cjs.badgeVariants; }
|
|
8128
6767
|
});
|
|
8129
6768
|
Object.defineProperty(exports, "buttonVariants", {
|
|
8130
6769
|
enumerable: true,
|
|
8131
|
-
get: function () { return
|
|
6770
|
+
get: function () { return chunkIZPXHVPJ_cjs.buttonVariants; }
|
|
8132
6771
|
});
|
|
8133
6772
|
Object.defineProperty(exports, "cardVariants", {
|
|
8134
6773
|
enumerable: true,
|
|
8135
|
-
get: function () { return
|
|
6774
|
+
get: function () { return chunkIZPXHVPJ_cjs.cardVariants; }
|
|
8136
6775
|
});
|
|
8137
6776
|
Object.defineProperty(exports, "cn", {
|
|
8138
6777
|
enumerable: true,
|
|
8139
|
-
get: function () { return
|
|
6778
|
+
get: function () { return chunkIZPXHVPJ_cjs.cn; }
|
|
6779
|
+
});
|
|
6780
|
+
Object.defineProperty(exports, "configureEntityRegistry", {
|
|
6781
|
+
enumerable: true,
|
|
6782
|
+
get: function () { return chunkIZPXHVPJ_cjs.configureEntityRegistry; }
|
|
6783
|
+
});
|
|
6784
|
+
Object.defineProperty(exports, "configureRagLabels", {
|
|
6785
|
+
enumerable: true,
|
|
6786
|
+
get: function () { return chunkIZPXHVPJ_cjs.configureRagLabels; }
|
|
6787
|
+
});
|
|
6788
|
+
Object.defineProperty(exports, "configureStatusRegistry", {
|
|
6789
|
+
enumerable: true,
|
|
6790
|
+
get: function () { return chunkIZPXHVPJ_cjs.configureStatusRegistry; }
|
|
8140
6791
|
});
|
|
8141
6792
|
Object.defineProperty(exports, "formatElapsed", {
|
|
8142
6793
|
enumerable: true,
|
|
8143
|
-
get: function () { return
|
|
6794
|
+
get: function () { return chunkIZPXHVPJ_cjs.formatElapsed; }
|
|
6795
|
+
});
|
|
6796
|
+
Object.defineProperty(exports, "getDocIcon", {
|
|
6797
|
+
enumerable: true,
|
|
6798
|
+
get: function () { return chunkIZPXHVPJ_cjs.getDocIcon; }
|
|
6799
|
+
});
|
|
6800
|
+
Object.defineProperty(exports, "getEntityColor", {
|
|
6801
|
+
enumerable: true,
|
|
6802
|
+
get: function () { return chunkIZPXHVPJ_cjs.getEntityColor; }
|
|
6803
|
+
});
|
|
6804
|
+
Object.defineProperty(exports, "getEntityColorStyles", {
|
|
6805
|
+
enumerable: true,
|
|
6806
|
+
get: function () { return chunkIZPXHVPJ_cjs.getEntityColorStyles; }
|
|
6807
|
+
});
|
|
6808
|
+
Object.defineProperty(exports, "getEntityIcon", {
|
|
6809
|
+
enumerable: true,
|
|
6810
|
+
get: function () { return chunkIZPXHVPJ_cjs.getEntityIcon; }
|
|
6811
|
+
});
|
|
6812
|
+
Object.defineProperty(exports, "getEntityLabel", {
|
|
6813
|
+
enumerable: true,
|
|
6814
|
+
get: function () { return chunkIZPXHVPJ_cjs.getEntityLabel; }
|
|
6815
|
+
});
|
|
6816
|
+
Object.defineProperty(exports, "getStatusVariant", {
|
|
6817
|
+
enumerable: true,
|
|
6818
|
+
get: function () { return chunkIZPXHVPJ_cjs.getStatusVariant; }
|
|
6819
|
+
});
|
|
6820
|
+
Object.defineProperty(exports, "getTagTypeIcon", {
|
|
6821
|
+
enumerable: true,
|
|
6822
|
+
get: function () { return chunkIZPXHVPJ_cjs.getTagTypeIcon; }
|
|
6823
|
+
});
|
|
6824
|
+
Object.defineProperty(exports, "getTagTypeLabel", {
|
|
6825
|
+
enumerable: true,
|
|
6826
|
+
get: function () { return chunkIZPXHVPJ_cjs.getTagTypeLabel; }
|
|
6827
|
+
});
|
|
6828
|
+
Object.defineProperty(exports, "getWorkspaceColor", {
|
|
6829
|
+
enumerable: true,
|
|
6830
|
+
get: function () { return chunkIZPXHVPJ_cjs.getWorkspaceColor; }
|
|
8144
6831
|
});
|
|
8145
6832
|
Object.defineProperty(exports, "markdownBaseComponents", {
|
|
8146
6833
|
enumerable: true,
|
|
8147
|
-
get: function () { return
|
|
6834
|
+
get: function () { return chunkIZPXHVPJ_cjs.markdownBaseComponents; }
|
|
8148
6835
|
});
|
|
8149
6836
|
Object.defineProperty(exports, "splitMarkdownBlocks", {
|
|
8150
6837
|
enumerable: true,
|
|
8151
|
-
get: function () { return
|
|
6838
|
+
get: function () { return chunkIZPXHVPJ_cjs.splitMarkdownBlocks; }
|
|
8152
6839
|
});
|
|
8153
6840
|
Object.defineProperty(exports, "toggleVariants", {
|
|
8154
6841
|
enumerable: true,
|
|
8155
|
-
get: function () { return
|
|
6842
|
+
get: function () { return chunkIZPXHVPJ_cjs.toggleVariants; }
|
|
8156
6843
|
});
|
|
8157
6844
|
Object.defineProperty(exports, "useAudioRecorder", {
|
|
8158
6845
|
enumerable: true,
|
|
8159
|
-
get: function () { return
|
|
6846
|
+
get: function () { return chunkIZPXHVPJ_cjs.useAudioRecorder; }
|
|
8160
6847
|
});
|
|
8161
6848
|
Object.defineProperty(exports, "ArbiProvider", {
|
|
8162
6849
|
enumerable: true,
|
|
@@ -8178,24 +6865,16 @@ Object.defineProperty(exports, "isMessageType", {
|
|
|
8178
6865
|
enumerable: true,
|
|
8179
6866
|
get: function () { return client.isMessageType; }
|
|
8180
6867
|
});
|
|
8181
|
-
Object.defineProperty(exports, "toast", {
|
|
8182
|
-
enumerable: true,
|
|
8183
|
-
get: function () { return sonner.toast; }
|
|
8184
|
-
});
|
|
8185
6868
|
exports.ActivityFeed = ActivityFeed;
|
|
8186
|
-
exports.AgentBadge = AgentBadge;
|
|
8187
6869
|
exports.AiActionCard = AiActionCard;
|
|
8188
6870
|
exports.AiAnswer = AiAnswer;
|
|
8189
6871
|
exports.AppleIcon = AppleIcon;
|
|
8190
|
-
exports.ArbiBotHeadIcon = ArbiBotHeadIcon;
|
|
8191
6872
|
exports.ArbiBotIcon = ArbiBotIcon;
|
|
8192
6873
|
exports.ArbiChat = ArbiChat;
|
|
8193
6874
|
exports.ArbiChatPanel = ArbiChatPanel;
|
|
8194
6875
|
exports.ArbiIcon = ArbiIcon;
|
|
8195
6876
|
exports.ArbiWebSocketProvider = ArbiWebSocketProvider;
|
|
8196
6877
|
exports.ArtifactCanvas = ArtifactCanvas;
|
|
8197
|
-
exports.AudIcon = AudIcon;
|
|
8198
|
-
exports.BASE_COLORS = BASE_COLORS2;
|
|
8199
6878
|
exports.ChatBubble = ChatBubble;
|
|
8200
6879
|
exports.CitationRenderer = CitationRenderer;
|
|
8201
6880
|
exports.ClaudeIcon = ClaudeIcon;
|
|
@@ -8203,7 +6882,6 @@ exports.CommandPalette = CommandPalette;
|
|
|
8203
6882
|
exports.CommandPaletteProvider = CommandPaletteProvider;
|
|
8204
6883
|
exports.ConversationList = ConversationList;
|
|
8205
6884
|
exports.DEFAULT_ASPECT_OPTIONS = DEFAULT_ASPECT_OPTIONS;
|
|
8206
|
-
exports.DEFAULT_NOTIFY_TONE = DEFAULT_NOTIFY_TONE;
|
|
8207
6885
|
exports.DateSeparator = DateSeparator;
|
|
8208
6886
|
exports.DirectMessages = DirectMessages;
|
|
8209
6887
|
exports.DmAvatar = DmAvatar;
|
|
@@ -8213,16 +6891,10 @@ exports.DocQaPanel = DocQaPanel;
|
|
|
8213
6891
|
exports.DocSearch = DocSearch;
|
|
8214
6892
|
exports.DocumentCard = DocumentCard;
|
|
8215
6893
|
exports.DocumentCardMenu = DocumentCardMenu;
|
|
8216
|
-
exports.DocumentEntity = DocumentEntity;
|
|
8217
6894
|
exports.DocumentGallery = DocumentGallery;
|
|
8218
6895
|
exports.DocumentReview = DocumentReview;
|
|
8219
6896
|
exports.DocumentTable = DocumentTable;
|
|
8220
6897
|
exports.DraftTitleControls = DraftTitleControls;
|
|
8221
|
-
exports.ENTITY_MAPPINGS = ENTITY_MAPPINGS;
|
|
8222
|
-
exports.EmlIcon = EmlIcon;
|
|
8223
|
-
exports.EntityIcon = EntityIcon;
|
|
8224
|
-
exports.EntityPill = EntityPill;
|
|
8225
|
-
exports.FILE_TYPE_COLORS = FILE_TYPE_COLORS;
|
|
8226
6898
|
exports.FileIcon = FileIcon;
|
|
8227
6899
|
exports.FireworksIcon = FireworksIcon;
|
|
8228
6900
|
exports.GeminiIcon = GeminiIcon;
|
|
@@ -8231,69 +6903,38 @@ exports.GoogleIcon = GoogleIcon;
|
|
|
8231
6903
|
exports.HtmlIcon = HtmlIcon;
|
|
8232
6904
|
exports.ImageCropModal = ImageCropModal;
|
|
8233
6905
|
exports.ImageCropper = ImageCropper;
|
|
8234
|
-
exports.ImgIcon = ImgIcon;
|
|
8235
6906
|
exports.LinkedInIcon = LinkedInIcon;
|
|
8236
6907
|
exports.MessageArtifactCard = MessageArtifactCard;
|
|
8237
6908
|
exports.MessageBubble = MessageBubble2;
|
|
8238
6909
|
exports.MessageThread = MessageThread;
|
|
8239
|
-
exports.NEUTRAL_GRAY = NEUTRAL_GRAY2;
|
|
8240
6910
|
exports.NotificationBell = NotificationBell;
|
|
8241
6911
|
exports.OpenAIIcon = OpenAIIcon;
|
|
8242
|
-
exports.PLACEHOLDER_COLOR = PLACEHOLDER_COLOR;
|
|
8243
6912
|
exports.PassageCard = PassageCard;
|
|
8244
|
-
exports.PdfIcon = PdfIcon;
|
|
8245
6913
|
exports.PhotoCapture = PhotoCapture;
|
|
8246
|
-
exports.PresenceLabel = PresenceLabel;
|
|
8247
|
-
exports.ProjectEntity = ProjectEntity;
|
|
8248
6914
|
exports.ProviderIcon = ProviderIcon;
|
|
8249
6915
|
exports.RUN_WINDOW_MS = RUN_WINDOW_MS;
|
|
8250
|
-
exports.RagDot = RagDot;
|
|
8251
6916
|
exports.RelevanceDot = RelevanceDot;
|
|
8252
6917
|
exports.SemanticSearch = SemanticSearch;
|
|
8253
|
-
exports.StatusPill = StatusPill;
|
|
8254
|
-
exports.TAG_TYPE_ICONS = TAG_TYPE_ICONS;
|
|
8255
|
-
exports.TAG_TYPE_LABELS = TAG_TYPE_LABELS;
|
|
8256
|
-
exports.TagEntity = TagEntity;
|
|
8257
|
-
exports.Toaster = Toaster;
|
|
8258
6918
|
exports.TxtIcon = TxtIcon;
|
|
8259
6919
|
exports.TypingIndicator = TypingIndicator;
|
|
8260
|
-
exports.UserEntity = UserEntity;
|
|
8261
6920
|
exports.UserMenu = UserMenu;
|
|
8262
|
-
exports.VISIBILITY_ICONS = VISIBILITY_ICONS;
|
|
8263
|
-
exports.VidIcon = VidIcon;
|
|
8264
6921
|
exports.VideoCapture = VideoCapture;
|
|
8265
|
-
exports.VisibilityIcon = VisibilityIcon;
|
|
8266
6922
|
exports.VoiceNoteRecorder = VoiceNoteRecorder;
|
|
8267
6923
|
exports.XlsIcon = XlsIcon;
|
|
8268
6924
|
exports.annotateThread = annotateThread;
|
|
8269
6925
|
exports.arbiQueryKeys = arbiQueryKeys;
|
|
8270
6926
|
exports.captureFrameAsBlob = captureFrameAsBlob;
|
|
8271
|
-
exports.configureEntityRegistry = configureEntityRegistry;
|
|
8272
|
-
exports.configureRagLabels = configureRagLabels;
|
|
8273
|
-
exports.configureStatusRegistry = configureStatusRegistry;
|
|
8274
6927
|
exports.cropImage = cropImage;
|
|
8275
6928
|
exports.dayKey = dayKey;
|
|
8276
6929
|
exports.describeActivity = describeActivity;
|
|
8277
6930
|
exports.formatRelativeTime = formatRelativeTime;
|
|
8278
|
-
exports.getDocIcon = getDocIcon;
|
|
8279
|
-
exports.getEntityColor = getEntityColor2;
|
|
8280
|
-
exports.getEntityColorStyles = getEntityColorStyles;
|
|
8281
|
-
exports.getEntityIcon = getEntityIcon;
|
|
8282
|
-
exports.getEntityLabel = getEntityLabel;
|
|
8283
6931
|
exports.getNotificationTypeMeta = getNotificationTypeMeta;
|
|
8284
|
-
exports.getStatusVariant = getStatusVariant;
|
|
8285
|
-
exports.getTagTypeIcon = getTagTypeIcon;
|
|
8286
|
-
exports.getTagTypeLabel = getTagTypeLabel;
|
|
8287
6932
|
exports.getWorkspaceActionText = getWorkspaceActionText;
|
|
8288
|
-
exports.getWorkspaceColor = getWorkspaceColor;
|
|
8289
6933
|
exports.getWorkspaceSentPhrase = getWorkspaceSentPhrase;
|
|
8290
6934
|
exports.hasVideoTrack = hasVideoTrack;
|
|
8291
6935
|
exports.isWorkspaceNotificationType = isWorkspaceNotificationType;
|
|
8292
|
-
exports.notify = notify;
|
|
8293
6936
|
exports.parseActivityContent = parseActivityContent;
|
|
8294
6937
|
exports.redlineStats = redlineStats;
|
|
8295
|
-
exports.seedNotifications = seedNotifications;
|
|
8296
|
-
exports.selectUnread = selectUnread;
|
|
8297
6938
|
exports.textToArtifact = textToArtifact;
|
|
8298
6939
|
exports.toRedlineMarkdown = toRedlineMarkdown;
|
|
8299
6940
|
exports.useActivity = useActivity;
|
|
@@ -8319,7 +6960,6 @@ exports.useDirectMessages = useDirectMessages;
|
|
|
8319
6960
|
exports.useDocuments = useDocuments;
|
|
8320
6961
|
exports.useFacts = useFacts;
|
|
8321
6962
|
exports.useHealth = useHealth;
|
|
8322
|
-
exports.useNotify = useNotify;
|
|
8323
6963
|
exports.useParsedDocument = useParsedDocument;
|
|
8324
6964
|
exports.useProjectInvoices = useProjectInvoices;
|
|
8325
6965
|
exports.useProjectUsage = useProjectUsage;
|