@mcp-b/embedded-agent 0.0.2 → 0.0.3
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/index.d.ts +272 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3012 -54
- package/dist/index.js.map +1 -1
- package/dist/styles/globals.css +1 -1
- package/dist/web-component-standalone.iife.js +4 -4
- package/dist/web-component.d.ts +10 -1
- package/dist/web-component.d.ts.map +1 -1
- package/dist/web-component.js +2826 -52
- package/dist/web-component.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { c } from "react/compiler-runtime";
|
|
2
|
-
import { ActionBarPrimitive, AssistantModalPrimitive, AssistantRuntimeProvider, AttachmentPrimitive, BranchPickerPrimitive, ComposerPrimitive, ErrorPrimitive, MessagePrimitive, ThreadPrimitive, tool, useAssistantApi, useAssistantRuntime, useAssistantState, useAssistantTool, useExternalStoreRuntime } from "@assistant-ui/react";
|
|
2
|
+
import { ActionBarPrimitive, AssistantModalPrimitive, AssistantRuntimeProvider, AttachmentPrimitive, BranchPickerPrimitive, ComposerPrimitive, ErrorPrimitive, MessagePrimitive, ThreadPrimitive, tool, useAssistantApi, useAssistantRuntime, useAssistantState, useAssistantTool, useExternalStoreRuntime, useThread } from "@assistant-ui/react";
|
|
3
3
|
import { AssistantChatTransport, useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
4
4
|
import r2wc from "@r2wc/react-to-web-component";
|
|
5
5
|
import { lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
|
6
6
|
import { createContext, forwardRef, memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
7
|
-
import { AlertCircle, ArrowDownIcon, ArrowUpIcon, Bot, CheckCircle2, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CopyIcon, FileText, Loader2, Mic, MicOff, PencilIcon, Phone, PhoneOff, Plug, Plus, PlusIcon, RefreshCwIcon, Square, User, Volume2, Wrench, X, XIcon } from "lucide-react";
|
|
8
|
-
import { AnimatePresence, LazyMotion, MotionConfig, domAnimation } from "motion/react";
|
|
7
|
+
import { AlertCircle, ArrowDownIcon, ArrowUpIcon, Bot, CheckCircle2, CheckIcon, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, Circle, CopyIcon, FileText, History, Loader2, MessageSquare, Mic, MicOff, PencilIcon, Phone, PhoneOff, Plug, Plus, PlusIcon, RefreshCwIcon, Send, Square, User, Volume2, Wrench, X, XIcon } from "lucide-react";
|
|
8
|
+
import { AnimatePresence, LazyMotion, MotionConfig, domAnimation, motion } from "motion/react";
|
|
9
9
|
import * as m from "motion/react-m";
|
|
10
10
|
import { clsx } from "clsx";
|
|
11
11
|
import { twMerge } from "tailwind-merge";
|
|
@@ -23,6 +23,7 @@ import { CreateMessageRequestSchema, GetPromptResultSchema, ListPromptsResultSch
|
|
|
23
23
|
import { TabClientTransport } from "@mcp-b/transports";
|
|
24
24
|
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
25
25
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
26
|
+
import ReactMarkdown from "react-markdown";
|
|
26
27
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
27
28
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
28
29
|
import { useAgent } from "agents/react";
|
|
@@ -2205,7 +2206,7 @@ const useFileSrc = (file) => {
|
|
|
2205
2206
|
return src;
|
|
2206
2207
|
};
|
|
2207
2208
|
const useAttachmentSrc = () => {
|
|
2208
|
-
const { file, src: src_0 } = useAssistantState(useShallow(_temp2));
|
|
2209
|
+
const { file, src: src_0 } = useAssistantState(useShallow(_temp2$5));
|
|
2209
2210
|
return useFileSrc(file) ?? src_0;
|
|
2210
2211
|
};
|
|
2211
2212
|
const AttachmentPreview = (t0) => {
|
|
@@ -2271,7 +2272,7 @@ const AttachmentPreviewDialog = (t0) => {
|
|
|
2271
2272
|
};
|
|
2272
2273
|
const AttachmentThumb = () => {
|
|
2273
2274
|
const $ = c(8);
|
|
2274
|
-
const isImage = useAssistantState(_temp3);
|
|
2275
|
+
const isImage = useAssistantState(_temp3$4);
|
|
2275
2276
|
const src = useAttachmentSrc();
|
|
2276
2277
|
let t0;
|
|
2277
2278
|
if ($[0] !== src) {
|
|
@@ -2313,8 +2314,8 @@ const AttachmentThumb = () => {
|
|
|
2313
2314
|
const AttachmentUI = () => {
|
|
2314
2315
|
const $ = c(17);
|
|
2315
2316
|
const isComposer = useAssistantApi().attachment.source === "composer";
|
|
2316
|
-
const isImage = useAssistantState(_temp4);
|
|
2317
|
-
const typeLabel = useAssistantState(_temp5);
|
|
2317
|
+
const isImage = useAssistantState(_temp4$4);
|
|
2318
|
+
const typeLabel = useAssistantState(_temp5$2);
|
|
2318
2319
|
const t0 = isImage && "aui-attachment-root-composer only:[&>#attachment-tile]:size-24";
|
|
2319
2320
|
let t1;
|
|
2320
2321
|
if ($[0] !== t0) {
|
|
@@ -2445,26 +2446,26 @@ const ComposerAddAttachment = () => {
|
|
|
2445
2446
|
} else t0 = $[0];
|
|
2446
2447
|
return t0;
|
|
2447
2448
|
};
|
|
2448
|
-
function _temp$
|
|
2449
|
+
function _temp$10(c$1) {
|
|
2449
2450
|
return c$1.type === "image";
|
|
2450
2451
|
}
|
|
2451
|
-
function _temp2(t0) {
|
|
2452
|
+
function _temp2$5(t0) {
|
|
2452
2453
|
const { attachment } = t0;
|
|
2453
2454
|
if (attachment.type !== "image") return {};
|
|
2454
2455
|
if (attachment.file) return { file: attachment.file };
|
|
2455
|
-
const src = attachment.content?.filter(_temp$
|
|
2456
|
+
const src = attachment.content?.filter(_temp$10)[0]?.image;
|
|
2456
2457
|
if (!src) return {};
|
|
2457
2458
|
return { src };
|
|
2458
2459
|
}
|
|
2459
|
-
function _temp3(t0) {
|
|
2460
|
+
function _temp3$4(t0) {
|
|
2460
2461
|
const { attachment } = t0;
|
|
2461
2462
|
return attachment.type === "image";
|
|
2462
2463
|
}
|
|
2463
|
-
function _temp4(t0) {
|
|
2464
|
+
function _temp4$4(t0) {
|
|
2464
2465
|
const { attachment } = t0;
|
|
2465
2466
|
return attachment.type === "image";
|
|
2466
2467
|
}
|
|
2467
|
-
function _temp5(t0) {
|
|
2468
|
+
function _temp5$2(t0) {
|
|
2468
2469
|
const { attachment: attachment_0 } = t0;
|
|
2469
2470
|
const type = attachment_0.type;
|
|
2470
2471
|
switch (type) {
|
|
@@ -4230,7 +4231,7 @@ const ThreadSuggestions$1 = () => {
|
|
|
4230
4231
|
label: "for healthy weight loss",
|
|
4231
4232
|
action: "Create a meal plan for healthy weight loss"
|
|
4232
4233
|
}
|
|
4233
|
-
].map(_temp$
|
|
4234
|
+
].map(_temp$9)
|
|
4234
4235
|
});
|
|
4235
4236
|
$[0] = t0;
|
|
4236
4237
|
} else t0 = $[0];
|
|
@@ -4503,7 +4504,7 @@ const BranchPicker$1 = (t0) => {
|
|
|
4503
4504
|
} else t6 = $[11];
|
|
4504
4505
|
return t6;
|
|
4505
4506
|
};
|
|
4506
|
-
function _temp$
|
|
4507
|
+
function _temp$9(suggestedAction, index) {
|
|
4507
4508
|
return /* @__PURE__ */ jsx(m.div, {
|
|
4508
4509
|
initial: {
|
|
4509
4510
|
opacity: 0,
|
|
@@ -4702,6 +4703,2912 @@ const MCPToolRegistry = () => {
|
|
|
4702
4703
|
return t1;
|
|
4703
4704
|
};
|
|
4704
4705
|
|
|
4706
|
+
//#endregion
|
|
4707
|
+
//#region src/hooks/useActions.ts
|
|
4708
|
+
/**
|
|
4709
|
+
* Humanize a tool name for display
|
|
4710
|
+
* e.g., "search_files" -> "Searching files"
|
|
4711
|
+
* e.g., "readFile" -> "Reading file"
|
|
4712
|
+
*/
|
|
4713
|
+
function humanizeToolName(toolName, isRunning = false) {
|
|
4714
|
+
const words = toolName.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/_/g, " ").toLowerCase().split(" ");
|
|
4715
|
+
if (words.length === 0) return toolName;
|
|
4716
|
+
if (isRunning) {
|
|
4717
|
+
const verb = words[0];
|
|
4718
|
+
const progressive = verb.endsWith("e") ? verb.slice(0, -1) + "ing" : verb + "ing";
|
|
4719
|
+
words[0] = progressive.charAt(0).toUpperCase() + progressive.slice(1);
|
|
4720
|
+
} else words[0] = words[0].charAt(0).toUpperCase() + words[0].slice(1);
|
|
4721
|
+
return words.join(" ");
|
|
4722
|
+
}
|
|
4723
|
+
/**
|
|
4724
|
+
* Hook to derive actions from the current thread's tool calls
|
|
4725
|
+
*
|
|
4726
|
+
* Actions are a view of tool calls - not separate state.
|
|
4727
|
+
* This maintains compatibility with assistant-ui's data model.
|
|
4728
|
+
*/
|
|
4729
|
+
function useActions() {
|
|
4730
|
+
const $ = c(3);
|
|
4731
|
+
const messages = useThread(_temp$8);
|
|
4732
|
+
let t0;
|
|
4733
|
+
bb0: {
|
|
4734
|
+
if (!messages || messages.length === 0) {
|
|
4735
|
+
let t1;
|
|
4736
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
4737
|
+
t1 = [];
|
|
4738
|
+
$[0] = t1;
|
|
4739
|
+
} else t1 = $[0];
|
|
4740
|
+
t0 = t1;
|
|
4741
|
+
break bb0;
|
|
4742
|
+
}
|
|
4743
|
+
let actions;
|
|
4744
|
+
if ($[1] !== messages) {
|
|
4745
|
+
actions = [];
|
|
4746
|
+
for (const message of messages) {
|
|
4747
|
+
if (message.role !== "assistant") continue;
|
|
4748
|
+
for (const part of message.content) {
|
|
4749
|
+
if (part.type !== "tool-call") continue;
|
|
4750
|
+
const toolPart = part;
|
|
4751
|
+
const isComplete = toolPart.result !== void 0;
|
|
4752
|
+
const hasError = toolPart.result && typeof toolPart.result === "object" && "error" in toolPart.result;
|
|
4753
|
+
let status;
|
|
4754
|
+
if (hasError) status = "error";
|
|
4755
|
+
else if (isComplete) status = "success";
|
|
4756
|
+
else status = "running";
|
|
4757
|
+
actions.push({
|
|
4758
|
+
id: toolPart.toolCallId,
|
|
4759
|
+
toolName: toolPart.toolName,
|
|
4760
|
+
label: humanizeToolName(toolPart.toolName, status === "running"),
|
|
4761
|
+
status,
|
|
4762
|
+
args: toolPart.args,
|
|
4763
|
+
result: toolPart.result,
|
|
4764
|
+
error: hasError ? String(toolPart.result.error) : void 0
|
|
4765
|
+
});
|
|
4766
|
+
}
|
|
4767
|
+
}
|
|
4768
|
+
$[1] = messages;
|
|
4769
|
+
$[2] = actions;
|
|
4770
|
+
} else actions = $[2];
|
|
4771
|
+
t0 = actions;
|
|
4772
|
+
}
|
|
4773
|
+
return t0;
|
|
4774
|
+
}
|
|
4775
|
+
/**
|
|
4776
|
+
* Hook to get the current running action (if any)
|
|
4777
|
+
*/
|
|
4778
|
+
function _temp$8(thread) {
|
|
4779
|
+
return thread.messages;
|
|
4780
|
+
}
|
|
4781
|
+
function useCurrentAction() {
|
|
4782
|
+
const $ = c(2);
|
|
4783
|
+
const actions = useActions();
|
|
4784
|
+
let t0;
|
|
4785
|
+
if ($[0] !== actions) {
|
|
4786
|
+
t0 = actions.find(_temp2$4) ?? null;
|
|
4787
|
+
$[0] = actions;
|
|
4788
|
+
$[1] = t0;
|
|
4789
|
+
} else t0 = $[1];
|
|
4790
|
+
return t0;
|
|
4791
|
+
}
|
|
4792
|
+
/**
|
|
4793
|
+
* Hook to get recently completed actions
|
|
4794
|
+
*/
|
|
4795
|
+
function _temp2$4(a) {
|
|
4796
|
+
return a.status === "running";
|
|
4797
|
+
}
|
|
4798
|
+
function useRecentActions(t0) {
|
|
4799
|
+
const $ = c(3);
|
|
4800
|
+
const limit = t0 === void 0 ? 3 : t0;
|
|
4801
|
+
const actions = useActions();
|
|
4802
|
+
let t1;
|
|
4803
|
+
if ($[0] !== actions || $[1] !== limit) {
|
|
4804
|
+
t1 = actions.filter(_temp3$3).slice(-limit);
|
|
4805
|
+
$[0] = actions;
|
|
4806
|
+
$[1] = limit;
|
|
4807
|
+
$[2] = t1;
|
|
4808
|
+
} else t1 = $[2];
|
|
4809
|
+
return t1;
|
|
4810
|
+
}
|
|
4811
|
+
/**
|
|
4812
|
+
* Hook to get action summary stats
|
|
4813
|
+
*/
|
|
4814
|
+
function _temp3$3(a) {
|
|
4815
|
+
return a.status === "success" || a.status === "error";
|
|
4816
|
+
}
|
|
4817
|
+
function useActionStats() {
|
|
4818
|
+
const $ = c(11);
|
|
4819
|
+
const actions = useActions();
|
|
4820
|
+
const t0 = actions.length;
|
|
4821
|
+
let t1;
|
|
4822
|
+
if ($[0] !== actions) {
|
|
4823
|
+
t1 = actions.filter(_temp4$3);
|
|
4824
|
+
$[0] = actions;
|
|
4825
|
+
$[1] = t1;
|
|
4826
|
+
} else t1 = $[1];
|
|
4827
|
+
const t2 = t1.length;
|
|
4828
|
+
let t3;
|
|
4829
|
+
if ($[2] !== actions) {
|
|
4830
|
+
t3 = actions.filter(_temp5$1);
|
|
4831
|
+
$[2] = actions;
|
|
4832
|
+
$[3] = t3;
|
|
4833
|
+
} else t3 = $[3];
|
|
4834
|
+
const t4 = t3.length;
|
|
4835
|
+
let t5;
|
|
4836
|
+
if ($[4] !== actions) {
|
|
4837
|
+
t5 = actions.filter(_temp6);
|
|
4838
|
+
$[4] = actions;
|
|
4839
|
+
$[5] = t5;
|
|
4840
|
+
} else t5 = $[5];
|
|
4841
|
+
let t6;
|
|
4842
|
+
if ($[6] !== actions.length || $[7] !== t1.length || $[8] !== t3.length || $[9] !== t5.length) {
|
|
4843
|
+
t6 = {
|
|
4844
|
+
total: t0,
|
|
4845
|
+
completed: t2,
|
|
4846
|
+
running: t4,
|
|
4847
|
+
failed: t5.length
|
|
4848
|
+
};
|
|
4849
|
+
$[6] = actions.length;
|
|
4850
|
+
$[7] = t1.length;
|
|
4851
|
+
$[8] = t3.length;
|
|
4852
|
+
$[9] = t5.length;
|
|
4853
|
+
$[10] = t6;
|
|
4854
|
+
} else t6 = $[10];
|
|
4855
|
+
return t6;
|
|
4856
|
+
}
|
|
4857
|
+
function _temp6(a_1) {
|
|
4858
|
+
return a_1.status === "error";
|
|
4859
|
+
}
|
|
4860
|
+
function _temp5$1(a_0) {
|
|
4861
|
+
return a_0.status === "running";
|
|
4862
|
+
}
|
|
4863
|
+
function _temp4$3(a) {
|
|
4864
|
+
return a.status === "success";
|
|
4865
|
+
}
|
|
4866
|
+
|
|
4867
|
+
//#endregion
|
|
4868
|
+
//#region src/components/pill/CurrentActivity.tsx
|
|
4869
|
+
/**
|
|
4870
|
+
* Displays the current action the agent is performing,
|
|
4871
|
+
* with optional recent completed steps shown below.
|
|
4872
|
+
*/
|
|
4873
|
+
const CurrentActivity = (t0) => {
|
|
4874
|
+
const $ = c(13);
|
|
4875
|
+
const { currentAction, recentActions: t1, showRecent: t2, className } = t0;
|
|
4876
|
+
let t3;
|
|
4877
|
+
if ($[0] !== t1) {
|
|
4878
|
+
t3 = t1 === void 0 ? [] : t1;
|
|
4879
|
+
$[0] = t1;
|
|
4880
|
+
$[1] = t3;
|
|
4881
|
+
} else t3 = $[1];
|
|
4882
|
+
const recentActions = t3;
|
|
4883
|
+
const showRecent = t2 === void 0 ? true : t2;
|
|
4884
|
+
if (!currentAction && recentActions.length === 0) return null;
|
|
4885
|
+
let t4;
|
|
4886
|
+
if ($[2] !== className) {
|
|
4887
|
+
t4 = cn("space-y-2", className);
|
|
4888
|
+
$[2] = className;
|
|
4889
|
+
$[3] = t4;
|
|
4890
|
+
} else t4 = $[3];
|
|
4891
|
+
let t5;
|
|
4892
|
+
if ($[4] !== currentAction) {
|
|
4893
|
+
t5 = currentAction && /* @__PURE__ */ jsxs("div", {
|
|
4894
|
+
className: "flex items-center gap-2.5",
|
|
4895
|
+
children: [/* @__PURE__ */ jsx(ActionStatusIcon, { status: currentAction.status }), /* @__PURE__ */ jsxs("span", {
|
|
4896
|
+
className: "text-sm font-medium text-white",
|
|
4897
|
+
children: [currentAction.label, "..."]
|
|
4898
|
+
})]
|
|
4899
|
+
});
|
|
4900
|
+
$[4] = currentAction;
|
|
4901
|
+
$[5] = t5;
|
|
4902
|
+
} else t5 = $[5];
|
|
4903
|
+
let t6;
|
|
4904
|
+
if ($[6] !== recentActions || $[7] !== showRecent) {
|
|
4905
|
+
t6 = showRecent && recentActions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
4906
|
+
className: "ml-1 border-l border-white/20 pl-3 space-y-1",
|
|
4907
|
+
children: recentActions.map(_temp$7)
|
|
4908
|
+
});
|
|
4909
|
+
$[6] = recentActions;
|
|
4910
|
+
$[7] = showRecent;
|
|
4911
|
+
$[8] = t6;
|
|
4912
|
+
} else t6 = $[8];
|
|
4913
|
+
let t7;
|
|
4914
|
+
if ($[9] !== t4 || $[10] !== t5 || $[11] !== t6) {
|
|
4915
|
+
t7 = /* @__PURE__ */ jsxs("div", {
|
|
4916
|
+
className: t4,
|
|
4917
|
+
children: [t5, t6]
|
|
4918
|
+
});
|
|
4919
|
+
$[9] = t4;
|
|
4920
|
+
$[10] = t5;
|
|
4921
|
+
$[11] = t6;
|
|
4922
|
+
$[12] = t7;
|
|
4923
|
+
} else t7 = $[12];
|
|
4924
|
+
return t7;
|
|
4925
|
+
};
|
|
4926
|
+
/**
|
|
4927
|
+
* Icon component for action status
|
|
4928
|
+
*/
|
|
4929
|
+
const ActionStatusIcon = (t0) => {
|
|
4930
|
+
const $ = c(25);
|
|
4931
|
+
const { status, size: t1, className } = t0;
|
|
4932
|
+
const sizeClass = (t1 === void 0 ? "md" : t1) === "sm" ? "h-3 w-3" : "h-4 w-4";
|
|
4933
|
+
switch (status) {
|
|
4934
|
+
case "queued": {
|
|
4935
|
+
let t2;
|
|
4936
|
+
if ($[0] !== className || $[1] !== sizeClass) {
|
|
4937
|
+
t2 = cn(sizeClass, "text-white/40", className);
|
|
4938
|
+
$[0] = className;
|
|
4939
|
+
$[1] = sizeClass;
|
|
4940
|
+
$[2] = t2;
|
|
4941
|
+
} else t2 = $[2];
|
|
4942
|
+
let t3;
|
|
4943
|
+
if ($[3] !== t2) {
|
|
4944
|
+
t3 = /* @__PURE__ */ jsx(Circle, { className: t2 });
|
|
4945
|
+
$[3] = t2;
|
|
4946
|
+
$[4] = t3;
|
|
4947
|
+
} else t3 = $[4];
|
|
4948
|
+
return t3;
|
|
4949
|
+
}
|
|
4950
|
+
case "running": {
|
|
4951
|
+
let t2;
|
|
4952
|
+
if ($[5] !== className || $[6] !== sizeClass) {
|
|
4953
|
+
t2 = cn(sizeClass, "text-blue-400 animate-spin", className);
|
|
4954
|
+
$[5] = className;
|
|
4955
|
+
$[6] = sizeClass;
|
|
4956
|
+
$[7] = t2;
|
|
4957
|
+
} else t2 = $[7];
|
|
4958
|
+
let t3;
|
|
4959
|
+
if ($[8] !== t2) {
|
|
4960
|
+
t3 = /* @__PURE__ */ jsx(Loader2, { className: t2 });
|
|
4961
|
+
$[8] = t2;
|
|
4962
|
+
$[9] = t3;
|
|
4963
|
+
} else t3 = $[9];
|
|
4964
|
+
return t3;
|
|
4965
|
+
}
|
|
4966
|
+
case "success": {
|
|
4967
|
+
let t2;
|
|
4968
|
+
if ($[10] !== className || $[11] !== sizeClass) {
|
|
4969
|
+
t2 = cn(sizeClass, "text-green-400", className);
|
|
4970
|
+
$[10] = className;
|
|
4971
|
+
$[11] = sizeClass;
|
|
4972
|
+
$[12] = t2;
|
|
4973
|
+
} else t2 = $[12];
|
|
4974
|
+
let t3;
|
|
4975
|
+
if ($[13] !== t2) {
|
|
4976
|
+
t3 = /* @__PURE__ */ jsx(CheckCircle2, { className: t2 });
|
|
4977
|
+
$[13] = t2;
|
|
4978
|
+
$[14] = t3;
|
|
4979
|
+
} else t3 = $[14];
|
|
4980
|
+
return t3;
|
|
4981
|
+
}
|
|
4982
|
+
case "error": {
|
|
4983
|
+
let t2;
|
|
4984
|
+
if ($[15] !== className || $[16] !== sizeClass) {
|
|
4985
|
+
t2 = cn(sizeClass, "text-red-400", className);
|
|
4986
|
+
$[15] = className;
|
|
4987
|
+
$[16] = sizeClass;
|
|
4988
|
+
$[17] = t2;
|
|
4989
|
+
} else t2 = $[17];
|
|
4990
|
+
let t3;
|
|
4991
|
+
if ($[18] !== t2) {
|
|
4992
|
+
t3 = /* @__PURE__ */ jsx(AlertCircle, { className: t2 });
|
|
4993
|
+
$[18] = t2;
|
|
4994
|
+
$[19] = t3;
|
|
4995
|
+
} else t3 = $[19];
|
|
4996
|
+
return t3;
|
|
4997
|
+
}
|
|
4998
|
+
default: {
|
|
4999
|
+
let t2;
|
|
5000
|
+
if ($[20] !== className || $[21] !== sizeClass) {
|
|
5001
|
+
t2 = cn(sizeClass, "text-white/40", className);
|
|
5002
|
+
$[20] = className;
|
|
5003
|
+
$[21] = sizeClass;
|
|
5004
|
+
$[22] = t2;
|
|
5005
|
+
} else t2 = $[22];
|
|
5006
|
+
let t3;
|
|
5007
|
+
if ($[23] !== t2) {
|
|
5008
|
+
t3 = /* @__PURE__ */ jsx(Circle, { className: t2 });
|
|
5009
|
+
$[23] = t2;
|
|
5010
|
+
$[24] = t3;
|
|
5011
|
+
} else t3 = $[24];
|
|
5012
|
+
return t3;
|
|
5013
|
+
}
|
|
5014
|
+
}
|
|
5015
|
+
};
|
|
5016
|
+
/**
|
|
5017
|
+
* Idle state indicator when no actions are running
|
|
5018
|
+
*/
|
|
5019
|
+
const IdleIndicator = (t0) => {
|
|
5020
|
+
const $ = c(6);
|
|
5021
|
+
const { className } = t0;
|
|
5022
|
+
let t1;
|
|
5023
|
+
if ($[0] !== className) {
|
|
5024
|
+
t1 = cn("flex items-center gap-2 text-white/50", className);
|
|
5025
|
+
$[0] = className;
|
|
5026
|
+
$[1] = t1;
|
|
5027
|
+
} else t1 = $[1];
|
|
5028
|
+
let t2;
|
|
5029
|
+
let t3;
|
|
5030
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5031
|
+
t2 = /* @__PURE__ */ jsx("div", { className: "h-2 w-2 rounded-full bg-green-400/60" });
|
|
5032
|
+
t3 = /* @__PURE__ */ jsx("span", {
|
|
5033
|
+
className: "text-xs",
|
|
5034
|
+
children: "Ready"
|
|
5035
|
+
});
|
|
5036
|
+
$[2] = t2;
|
|
5037
|
+
$[3] = t3;
|
|
5038
|
+
} else {
|
|
5039
|
+
t2 = $[2];
|
|
5040
|
+
t3 = $[3];
|
|
5041
|
+
}
|
|
5042
|
+
let t4;
|
|
5043
|
+
if ($[4] !== t1) {
|
|
5044
|
+
t4 = /* @__PURE__ */ jsxs("div", {
|
|
5045
|
+
className: t1,
|
|
5046
|
+
children: [t2, t3]
|
|
5047
|
+
});
|
|
5048
|
+
$[4] = t1;
|
|
5049
|
+
$[5] = t4;
|
|
5050
|
+
} else t4 = $[5];
|
|
5051
|
+
return t4;
|
|
5052
|
+
};
|
|
5053
|
+
function _temp$7(action) {
|
|
5054
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
5055
|
+
className: "flex items-center gap-2 text-xs text-white/60",
|
|
5056
|
+
children: [/* @__PURE__ */ jsx(ActionStatusIcon, {
|
|
5057
|
+
status: action.status,
|
|
5058
|
+
size: "sm"
|
|
5059
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
5060
|
+
className: cn(action.status === "error" && "text-red-400"),
|
|
5061
|
+
children: action.label
|
|
5062
|
+
})]
|
|
5063
|
+
}, action.id);
|
|
5064
|
+
}
|
|
5065
|
+
|
|
5066
|
+
//#endregion
|
|
5067
|
+
//#region src/components/pill/ActionList.tsx
|
|
5068
|
+
/**
|
|
5069
|
+
* Collapsible list of all actions (tool calls) in the current conversation.
|
|
5070
|
+
* Shows count in header, expands to show full list with status icons.
|
|
5071
|
+
*/
|
|
5072
|
+
const ActionList = (t0) => {
|
|
5073
|
+
const $ = c(34);
|
|
5074
|
+
const { actions, defaultCollapsed: t1, className } = t0;
|
|
5075
|
+
const [isCollapsed, setIsCollapsed] = useState(t1 === void 0 ? true : t1);
|
|
5076
|
+
if (actions.length === 0) return null;
|
|
5077
|
+
let t2;
|
|
5078
|
+
if ($[0] !== actions) {
|
|
5079
|
+
t2 = actions.filter(_temp$6);
|
|
5080
|
+
$[0] = actions;
|
|
5081
|
+
$[1] = t2;
|
|
5082
|
+
} else t2 = $[1];
|
|
5083
|
+
const completedCount = t2.length;
|
|
5084
|
+
const totalCount = actions.length;
|
|
5085
|
+
let t3;
|
|
5086
|
+
if ($[2] !== className) {
|
|
5087
|
+
t3 = cn("", className);
|
|
5088
|
+
$[2] = className;
|
|
5089
|
+
$[3] = t3;
|
|
5090
|
+
} else t3 = $[3];
|
|
5091
|
+
let t4;
|
|
5092
|
+
if ($[4] !== isCollapsed) {
|
|
5093
|
+
t4 = () => setIsCollapsed(!isCollapsed);
|
|
5094
|
+
$[4] = isCollapsed;
|
|
5095
|
+
$[5] = t4;
|
|
5096
|
+
} else t4 = $[5];
|
|
5097
|
+
let t5;
|
|
5098
|
+
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5099
|
+
t5 = cn("flex w-full items-center justify-between", "rounded-lg px-3 py-2", "bg-white/5 hover:bg-white/10", "transition-colors duration-200");
|
|
5100
|
+
$[6] = t5;
|
|
5101
|
+
} else t5 = $[6];
|
|
5102
|
+
const t6 = !isCollapsed;
|
|
5103
|
+
let t7;
|
|
5104
|
+
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5105
|
+
t7 = /* @__PURE__ */ jsx("span", {
|
|
5106
|
+
className: "text-xs font-medium text-white/80",
|
|
5107
|
+
children: "Actions"
|
|
5108
|
+
});
|
|
5109
|
+
$[7] = t7;
|
|
5110
|
+
} else t7 = $[7];
|
|
5111
|
+
let t8;
|
|
5112
|
+
if ($[8] !== completedCount || $[9] !== totalCount) {
|
|
5113
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
5114
|
+
className: "flex items-center gap-2",
|
|
5115
|
+
children: [t7, /* @__PURE__ */ jsxs("span", {
|
|
5116
|
+
className: "text-xs text-white/50",
|
|
5117
|
+
children: [
|
|
5118
|
+
"(",
|
|
5119
|
+
completedCount,
|
|
5120
|
+
"/",
|
|
5121
|
+
totalCount,
|
|
5122
|
+
")"
|
|
5123
|
+
]
|
|
5124
|
+
})]
|
|
5125
|
+
});
|
|
5126
|
+
$[8] = completedCount;
|
|
5127
|
+
$[9] = totalCount;
|
|
5128
|
+
$[10] = t8;
|
|
5129
|
+
} else t8 = $[10];
|
|
5130
|
+
const t9 = !isCollapsed && "rotate-180";
|
|
5131
|
+
let t10;
|
|
5132
|
+
if ($[11] !== t9) {
|
|
5133
|
+
t10 = cn("h-4 w-4 text-white/50 transition-transform duration-200", t9);
|
|
5134
|
+
$[11] = t9;
|
|
5135
|
+
$[12] = t10;
|
|
5136
|
+
} else t10 = $[12];
|
|
5137
|
+
let t11;
|
|
5138
|
+
if ($[13] !== t10) {
|
|
5139
|
+
t11 = /* @__PURE__ */ jsx(ChevronDown, { className: t10 });
|
|
5140
|
+
$[13] = t10;
|
|
5141
|
+
$[14] = t11;
|
|
5142
|
+
} else t11 = $[14];
|
|
5143
|
+
let t12;
|
|
5144
|
+
if ($[15] !== t11 || $[16] !== t4 || $[17] !== t6 || $[18] !== t8) {
|
|
5145
|
+
t12 = /* @__PURE__ */ jsxs("button", {
|
|
5146
|
+
type: "button",
|
|
5147
|
+
onClick: t4,
|
|
5148
|
+
className: t5,
|
|
5149
|
+
"aria-expanded": t6,
|
|
5150
|
+
children: [t8, t11]
|
|
5151
|
+
});
|
|
5152
|
+
$[15] = t11;
|
|
5153
|
+
$[16] = t4;
|
|
5154
|
+
$[17] = t6;
|
|
5155
|
+
$[18] = t8;
|
|
5156
|
+
$[19] = t12;
|
|
5157
|
+
} else t12 = $[19];
|
|
5158
|
+
const t13 = isCollapsed ? "grid-rows-[0fr]" : "grid-rows-[1fr]";
|
|
5159
|
+
let t14;
|
|
5160
|
+
if ($[20] !== t13) {
|
|
5161
|
+
t14 = cn("grid transition-[grid-template-rows] duration-300 ease-out", t13);
|
|
5162
|
+
$[20] = t13;
|
|
5163
|
+
$[21] = t14;
|
|
5164
|
+
} else t14 = $[21];
|
|
5165
|
+
let t15;
|
|
5166
|
+
if ($[22] !== actions) {
|
|
5167
|
+
t15 = actions.map(_temp2$3);
|
|
5168
|
+
$[22] = actions;
|
|
5169
|
+
$[23] = t15;
|
|
5170
|
+
} else t15 = $[23];
|
|
5171
|
+
let t16;
|
|
5172
|
+
if ($[24] !== t15) {
|
|
5173
|
+
t16 = /* @__PURE__ */ jsx("div", {
|
|
5174
|
+
className: "overflow-hidden",
|
|
5175
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
5176
|
+
className: "mt-2 max-h-48 space-y-1 overflow-y-auto px-1",
|
|
5177
|
+
children: t15
|
|
5178
|
+
})
|
|
5179
|
+
});
|
|
5180
|
+
$[24] = t15;
|
|
5181
|
+
$[25] = t16;
|
|
5182
|
+
} else t16 = $[25];
|
|
5183
|
+
let t17;
|
|
5184
|
+
if ($[26] !== isCollapsed || $[27] !== t14 || $[28] !== t16) {
|
|
5185
|
+
t17 = /* @__PURE__ */ jsx("div", {
|
|
5186
|
+
className: t14,
|
|
5187
|
+
"aria-hidden": isCollapsed,
|
|
5188
|
+
children: t16
|
|
5189
|
+
});
|
|
5190
|
+
$[26] = isCollapsed;
|
|
5191
|
+
$[27] = t14;
|
|
5192
|
+
$[28] = t16;
|
|
5193
|
+
$[29] = t17;
|
|
5194
|
+
} else t17 = $[29];
|
|
5195
|
+
let t18;
|
|
5196
|
+
if ($[30] !== t12 || $[31] !== t17 || $[32] !== t3) {
|
|
5197
|
+
t18 = /* @__PURE__ */ jsxs("div", {
|
|
5198
|
+
className: t3,
|
|
5199
|
+
children: [t12, t17]
|
|
5200
|
+
});
|
|
5201
|
+
$[30] = t12;
|
|
5202
|
+
$[31] = t17;
|
|
5203
|
+
$[32] = t3;
|
|
5204
|
+
$[33] = t18;
|
|
5205
|
+
} else t18 = $[33];
|
|
5206
|
+
return t18;
|
|
5207
|
+
};
|
|
5208
|
+
/**
|
|
5209
|
+
* Single action item in the list
|
|
5210
|
+
*/
|
|
5211
|
+
const ActionItem = (t0) => {
|
|
5212
|
+
const $ = c(25);
|
|
5213
|
+
const { action, className } = t0;
|
|
5214
|
+
let t1;
|
|
5215
|
+
if ($[0] !== className) {
|
|
5216
|
+
t1 = cn("flex items-center justify-between", "rounded-md px-3 py-1.5", "hover:bg-white/5", "transition-colors duration-150", className);
|
|
5217
|
+
$[0] = className;
|
|
5218
|
+
$[1] = t1;
|
|
5219
|
+
} else t1 = $[1];
|
|
5220
|
+
let t2;
|
|
5221
|
+
if ($[2] !== action.status) {
|
|
5222
|
+
t2 = /* @__PURE__ */ jsx(ActionStatusIcon, {
|
|
5223
|
+
status: action.status,
|
|
5224
|
+
size: "sm"
|
|
5225
|
+
});
|
|
5226
|
+
$[2] = action.status;
|
|
5227
|
+
$[3] = t2;
|
|
5228
|
+
} else t2 = $[3];
|
|
5229
|
+
const t3 = action.status === "success" && "text-white/60";
|
|
5230
|
+
const t4 = action.status === "running" && "text-white";
|
|
5231
|
+
const t5 = action.status === "error" && "text-red-400";
|
|
5232
|
+
const t6 = action.status === "queued" && "text-white/40";
|
|
5233
|
+
let t7;
|
|
5234
|
+
if ($[4] !== t3 || $[5] !== t4 || $[6] !== t5 || $[7] !== t6) {
|
|
5235
|
+
t7 = cn("text-sm truncate", t3, t4, t5, t6);
|
|
5236
|
+
$[4] = t3;
|
|
5237
|
+
$[5] = t4;
|
|
5238
|
+
$[6] = t5;
|
|
5239
|
+
$[7] = t6;
|
|
5240
|
+
$[8] = t7;
|
|
5241
|
+
} else t7 = $[8];
|
|
5242
|
+
let t8;
|
|
5243
|
+
if ($[9] !== action.label || $[10] !== t7) {
|
|
5244
|
+
t8 = /* @__PURE__ */ jsx("span", {
|
|
5245
|
+
className: t7,
|
|
5246
|
+
children: action.label
|
|
5247
|
+
});
|
|
5248
|
+
$[9] = action.label;
|
|
5249
|
+
$[10] = t7;
|
|
5250
|
+
$[11] = t8;
|
|
5251
|
+
} else t8 = $[11];
|
|
5252
|
+
let t9;
|
|
5253
|
+
if ($[12] !== t2 || $[13] !== t8) {
|
|
5254
|
+
t9 = /* @__PURE__ */ jsxs("div", {
|
|
5255
|
+
className: "flex items-center gap-2.5 min-w-0",
|
|
5256
|
+
children: [t2, t8]
|
|
5257
|
+
});
|
|
5258
|
+
$[12] = t2;
|
|
5259
|
+
$[13] = t8;
|
|
5260
|
+
$[14] = t9;
|
|
5261
|
+
} else t9 = $[14];
|
|
5262
|
+
let t10;
|
|
5263
|
+
if ($[15] !== action.duration) {
|
|
5264
|
+
t10 = action.duration && /* @__PURE__ */ jsx("span", {
|
|
5265
|
+
className: "text-[10px] text-white/40 tabular-nums",
|
|
5266
|
+
children: formatDuration(action.duration)
|
|
5267
|
+
});
|
|
5268
|
+
$[15] = action.duration;
|
|
5269
|
+
$[16] = t10;
|
|
5270
|
+
} else t10 = $[16];
|
|
5271
|
+
let t11;
|
|
5272
|
+
if ($[17] !== action.error || $[18] !== action.status) {
|
|
5273
|
+
t11 = action.status === "error" && action.error && /* @__PURE__ */ jsx("span", {
|
|
5274
|
+
className: "text-[10px] text-red-400 truncate max-w-[100px]",
|
|
5275
|
+
title: action.error,
|
|
5276
|
+
children: action.error
|
|
5277
|
+
});
|
|
5278
|
+
$[17] = action.error;
|
|
5279
|
+
$[18] = action.status;
|
|
5280
|
+
$[19] = t11;
|
|
5281
|
+
} else t11 = $[19];
|
|
5282
|
+
let t12;
|
|
5283
|
+
if ($[20] !== t1 || $[21] !== t10 || $[22] !== t11 || $[23] !== t9) {
|
|
5284
|
+
t12 = /* @__PURE__ */ jsxs("div", {
|
|
5285
|
+
className: t1,
|
|
5286
|
+
children: [
|
|
5287
|
+
t9,
|
|
5288
|
+
t10,
|
|
5289
|
+
t11
|
|
5290
|
+
]
|
|
5291
|
+
});
|
|
5292
|
+
$[20] = t1;
|
|
5293
|
+
$[21] = t10;
|
|
5294
|
+
$[22] = t11;
|
|
5295
|
+
$[23] = t9;
|
|
5296
|
+
$[24] = t12;
|
|
5297
|
+
} else t12 = $[24];
|
|
5298
|
+
return t12;
|
|
5299
|
+
};
|
|
5300
|
+
/**
|
|
5301
|
+
* Format duration in ms to human readable string
|
|
5302
|
+
*/
|
|
5303
|
+
function formatDuration(ms) {
|
|
5304
|
+
if (ms < 1e3) return `${ms}ms`;
|
|
5305
|
+
const seconds = ms / 1e3;
|
|
5306
|
+
if (seconds < 60) return `${seconds.toFixed(1)}s`;
|
|
5307
|
+
return `${Math.floor(seconds / 60)}m ${Math.floor(seconds % 60)}s`;
|
|
5308
|
+
}
|
|
5309
|
+
/**
|
|
5310
|
+
* Compact inline action summary (for collapsed pill states)
|
|
5311
|
+
*/
|
|
5312
|
+
const ActionSummary = (t0) => {
|
|
5313
|
+
const $ = c(19);
|
|
5314
|
+
const { actions, className } = t0;
|
|
5315
|
+
let t1;
|
|
5316
|
+
if ($[0] !== actions) {
|
|
5317
|
+
t1 = actions.filter(_temp3$2);
|
|
5318
|
+
$[0] = actions;
|
|
5319
|
+
$[1] = t1;
|
|
5320
|
+
} else t1 = $[1];
|
|
5321
|
+
const completed = t1.length;
|
|
5322
|
+
let t2;
|
|
5323
|
+
if ($[2] !== actions) {
|
|
5324
|
+
t2 = actions.filter(_temp4$2);
|
|
5325
|
+
$[2] = actions;
|
|
5326
|
+
$[3] = t2;
|
|
5327
|
+
} else t2 = $[3];
|
|
5328
|
+
const running = t2.length;
|
|
5329
|
+
let t3;
|
|
5330
|
+
if ($[4] !== actions) {
|
|
5331
|
+
t3 = actions.filter(_temp5);
|
|
5332
|
+
$[4] = actions;
|
|
5333
|
+
$[5] = t3;
|
|
5334
|
+
} else t3 = $[5];
|
|
5335
|
+
const failed = t3.length;
|
|
5336
|
+
if (actions.length === 0) return null;
|
|
5337
|
+
let t4;
|
|
5338
|
+
if ($[6] !== className) {
|
|
5339
|
+
t4 = cn("flex items-center gap-3 text-xs", className);
|
|
5340
|
+
$[6] = className;
|
|
5341
|
+
$[7] = t4;
|
|
5342
|
+
} else t4 = $[7];
|
|
5343
|
+
let t5;
|
|
5344
|
+
if ($[8] !== running) {
|
|
5345
|
+
t5 = running > 0 && /* @__PURE__ */ jsxs("span", {
|
|
5346
|
+
className: "flex items-center gap-1 text-blue-400",
|
|
5347
|
+
children: [
|
|
5348
|
+
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-blue-400 animate-pulse" }),
|
|
5349
|
+
running,
|
|
5350
|
+
" running"
|
|
5351
|
+
]
|
|
5352
|
+
});
|
|
5353
|
+
$[8] = running;
|
|
5354
|
+
$[9] = t5;
|
|
5355
|
+
} else t5 = $[9];
|
|
5356
|
+
let t6;
|
|
5357
|
+
if ($[10] !== completed) {
|
|
5358
|
+
t6 = completed > 0 && /* @__PURE__ */ jsxs("span", {
|
|
5359
|
+
className: "text-white/50",
|
|
5360
|
+
children: [completed, " completed"]
|
|
5361
|
+
});
|
|
5362
|
+
$[10] = completed;
|
|
5363
|
+
$[11] = t6;
|
|
5364
|
+
} else t6 = $[11];
|
|
5365
|
+
let t7;
|
|
5366
|
+
if ($[12] !== failed) {
|
|
5367
|
+
t7 = failed > 0 && /* @__PURE__ */ jsxs("span", {
|
|
5368
|
+
className: "text-red-400",
|
|
5369
|
+
children: [failed, " failed"]
|
|
5370
|
+
});
|
|
5371
|
+
$[12] = failed;
|
|
5372
|
+
$[13] = t7;
|
|
5373
|
+
} else t7 = $[13];
|
|
5374
|
+
let t8;
|
|
5375
|
+
if ($[14] !== t4 || $[15] !== t5 || $[16] !== t6 || $[17] !== t7) {
|
|
5376
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
5377
|
+
className: t4,
|
|
5378
|
+
children: [
|
|
5379
|
+
t5,
|
|
5380
|
+
t6,
|
|
5381
|
+
t7
|
|
5382
|
+
]
|
|
5383
|
+
});
|
|
5384
|
+
$[14] = t4;
|
|
5385
|
+
$[15] = t5;
|
|
5386
|
+
$[16] = t6;
|
|
5387
|
+
$[17] = t7;
|
|
5388
|
+
$[18] = t8;
|
|
5389
|
+
} else t8 = $[18];
|
|
5390
|
+
return t8;
|
|
5391
|
+
};
|
|
5392
|
+
function _temp$6(a) {
|
|
5393
|
+
return a.status === "success";
|
|
5394
|
+
}
|
|
5395
|
+
function _temp2$3(action) {
|
|
5396
|
+
return /* @__PURE__ */ jsx(ActionItem, { action }, action.id);
|
|
5397
|
+
}
|
|
5398
|
+
function _temp3$2(a) {
|
|
5399
|
+
return a.status === "success";
|
|
5400
|
+
}
|
|
5401
|
+
function _temp4$2(a_0) {
|
|
5402
|
+
return a_0.status === "running";
|
|
5403
|
+
}
|
|
5404
|
+
function _temp5(a_1) {
|
|
5405
|
+
return a_1.status === "error";
|
|
5406
|
+
}
|
|
5407
|
+
|
|
5408
|
+
//#endregion
|
|
5409
|
+
//#region src/components/pill/PillComposer.tsx
|
|
5410
|
+
/**
|
|
5411
|
+
* Compact composer for the pill UI.
|
|
5412
|
+
* Uses assistant-ui primitives for data binding.
|
|
5413
|
+
*/
|
|
5414
|
+
const PillComposer = (t0) => {
|
|
5415
|
+
const $ = c(17);
|
|
5416
|
+
const { placeholder: t1, showVoiceButton: t2, isVoiceActive: t3, onVoiceToggle, className } = t0;
|
|
5417
|
+
const placeholder = t1 === void 0 ? "Ask something..." : t1;
|
|
5418
|
+
const showVoiceButton = t2 === void 0 ? false : t2;
|
|
5419
|
+
const isVoiceActive = t3 === void 0 ? false : t3;
|
|
5420
|
+
let t4;
|
|
5421
|
+
if ($[0] !== className) {
|
|
5422
|
+
t4 = cn("flex items-center gap-2", "rounded-full", "bg-white/10 border border-white/10", "px-3 py-2", "focus-within:border-white/20 focus-within:bg-white/15", "transition-colors duration-200", className);
|
|
5423
|
+
$[0] = className;
|
|
5424
|
+
$[1] = t4;
|
|
5425
|
+
} else t4 = $[1];
|
|
5426
|
+
let t5;
|
|
5427
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5428
|
+
t5 = cn("flex-1 min-w-0", "bg-transparent", "text-sm text-white placeholder:text-white/40", "outline-none", "resize-none");
|
|
5429
|
+
$[2] = t5;
|
|
5430
|
+
} else t5 = $[2];
|
|
5431
|
+
let t6;
|
|
5432
|
+
if ($[3] !== placeholder) {
|
|
5433
|
+
t6 = /* @__PURE__ */ jsx(ComposerPrimitive.Input, {
|
|
5434
|
+
placeholder,
|
|
5435
|
+
className: t5,
|
|
5436
|
+
autoFocus: true
|
|
5437
|
+
});
|
|
5438
|
+
$[3] = placeholder;
|
|
5439
|
+
$[4] = t6;
|
|
5440
|
+
} else t6 = $[4];
|
|
5441
|
+
let t7;
|
|
5442
|
+
if ($[5] !== isVoiceActive || $[6] !== onVoiceToggle || $[7] !== showVoiceButton) {
|
|
5443
|
+
t7 = showVoiceButton && onVoiceToggle && /* @__PURE__ */ jsx("button", {
|
|
5444
|
+
type: "button",
|
|
5445
|
+
onClick: onVoiceToggle,
|
|
5446
|
+
className: cn("flex-shrink-0", "p-1.5 rounded-full", "transition-colors duration-200", isVoiceActive ? "bg-red-500 text-white" : "hover:bg-white/10 text-white/60 hover:text-white"),
|
|
5447
|
+
"aria-label": isVoiceActive ? "Stop voice input" : "Start voice input",
|
|
5448
|
+
children: /* @__PURE__ */ jsx(Mic, { className: "h-4 w-4" })
|
|
5449
|
+
});
|
|
5450
|
+
$[5] = isVoiceActive;
|
|
5451
|
+
$[6] = onVoiceToggle;
|
|
5452
|
+
$[7] = showVoiceButton;
|
|
5453
|
+
$[8] = t7;
|
|
5454
|
+
} else t7 = $[8];
|
|
5455
|
+
let t8;
|
|
5456
|
+
if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5457
|
+
t8 = cn("flex-shrink-0", "p-1.5 rounded-full", "bg-primary text-primary-foreground", "hover:bg-primary/90", "disabled:opacity-50 disabled:cursor-not-allowed", "transition-colors duration-200");
|
|
5458
|
+
$[9] = t8;
|
|
5459
|
+
} else t8 = $[9];
|
|
5460
|
+
let t9;
|
|
5461
|
+
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5462
|
+
t9 = /* @__PURE__ */ jsx(ThreadPrimitive.If, {
|
|
5463
|
+
running: false,
|
|
5464
|
+
children: /* @__PURE__ */ jsx(ComposerPrimitive.Send, {
|
|
5465
|
+
asChild: true,
|
|
5466
|
+
children: /* @__PURE__ */ jsx("button", {
|
|
5467
|
+
type: "submit",
|
|
5468
|
+
className: t8,
|
|
5469
|
+
"aria-label": "Send message",
|
|
5470
|
+
children: /* @__PURE__ */ jsx(Send, { className: "h-4 w-4" })
|
|
5471
|
+
})
|
|
5472
|
+
})
|
|
5473
|
+
});
|
|
5474
|
+
$[10] = t9;
|
|
5475
|
+
} else t9 = $[10];
|
|
5476
|
+
let t10;
|
|
5477
|
+
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5478
|
+
t10 = cn("flex-shrink-0", "p-1.5 rounded-full", "bg-red-500 text-white", "hover:bg-red-600", "transition-colors duration-200");
|
|
5479
|
+
$[11] = t10;
|
|
5480
|
+
} else t10 = $[11];
|
|
5481
|
+
let t11;
|
|
5482
|
+
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5483
|
+
t11 = /* @__PURE__ */ jsx(ThreadPrimitive.If, {
|
|
5484
|
+
running: true,
|
|
5485
|
+
children: /* @__PURE__ */ jsx(ComposerPrimitive.Cancel, {
|
|
5486
|
+
asChild: true,
|
|
5487
|
+
children: /* @__PURE__ */ jsx("button", {
|
|
5488
|
+
type: "button",
|
|
5489
|
+
className: t10,
|
|
5490
|
+
"aria-label": "Stop generating",
|
|
5491
|
+
children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
|
|
5492
|
+
})
|
|
5493
|
+
})
|
|
5494
|
+
});
|
|
5495
|
+
$[12] = t11;
|
|
5496
|
+
} else t11 = $[12];
|
|
5497
|
+
let t12;
|
|
5498
|
+
if ($[13] !== t4 || $[14] !== t6 || $[15] !== t7) {
|
|
5499
|
+
t12 = /* @__PURE__ */ jsxs(ComposerPrimitive.Root, {
|
|
5500
|
+
className: t4,
|
|
5501
|
+
children: [
|
|
5502
|
+
t6,
|
|
5503
|
+
t7,
|
|
5504
|
+
t9,
|
|
5505
|
+
t11
|
|
5506
|
+
]
|
|
5507
|
+
});
|
|
5508
|
+
$[13] = t4;
|
|
5509
|
+
$[14] = t6;
|
|
5510
|
+
$[15] = t7;
|
|
5511
|
+
$[16] = t12;
|
|
5512
|
+
} else t12 = $[16];
|
|
5513
|
+
return t12;
|
|
5514
|
+
};
|
|
5515
|
+
/**
|
|
5516
|
+
* Minimal composer for collapsed/hovered states
|
|
5517
|
+
* Just shows a clickable prompt
|
|
5518
|
+
*/
|
|
5519
|
+
const MinimalComposer = (t0) => {
|
|
5520
|
+
const $ = c(7);
|
|
5521
|
+
const { onClick, className } = t0;
|
|
5522
|
+
let t1;
|
|
5523
|
+
if ($[0] !== className) {
|
|
5524
|
+
t1 = cn("flex items-center gap-2", "w-full px-4 py-2", "rounded-full", "bg-white/5 hover:bg-white/10", "text-sm text-white/50 hover:text-white/70", "transition-colors duration-200", className);
|
|
5525
|
+
$[0] = className;
|
|
5526
|
+
$[1] = t1;
|
|
5527
|
+
} else t1 = $[1];
|
|
5528
|
+
let t2;
|
|
5529
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5530
|
+
t2 = /* @__PURE__ */ jsx("span", { children: "Ask something..." });
|
|
5531
|
+
$[2] = t2;
|
|
5532
|
+
} else t2 = $[2];
|
|
5533
|
+
let t3;
|
|
5534
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5535
|
+
t3 = /* @__PURE__ */ jsx("span", {
|
|
5536
|
+
className: "ml-auto text-xs text-white/30",
|
|
5537
|
+
children: /* @__PURE__ */ jsx("kbd", {
|
|
5538
|
+
className: "rounded bg-white/10 px-1 py-0.5 font-mono text-[10px]",
|
|
5539
|
+
children: "⌘⇧K"
|
|
5540
|
+
})
|
|
5541
|
+
});
|
|
5542
|
+
$[3] = t3;
|
|
5543
|
+
} else t3 = $[3];
|
|
5544
|
+
let t4;
|
|
5545
|
+
if ($[4] !== onClick || $[5] !== t1) {
|
|
5546
|
+
t4 = /* @__PURE__ */ jsxs("button", {
|
|
5547
|
+
type: "button",
|
|
5548
|
+
onClick,
|
|
5549
|
+
className: t1,
|
|
5550
|
+
children: [t2, t3]
|
|
5551
|
+
});
|
|
5552
|
+
$[4] = onClick;
|
|
5553
|
+
$[5] = t1;
|
|
5554
|
+
$[6] = t4;
|
|
5555
|
+
} else t4 = $[6];
|
|
5556
|
+
return t4;
|
|
5557
|
+
};
|
|
5558
|
+
|
|
5559
|
+
//#endregion
|
|
5560
|
+
//#region src/components/pill/PillContainer.tsx
|
|
5561
|
+
const sizeSpring = {
|
|
5562
|
+
type: "spring",
|
|
5563
|
+
stiffness: 300,
|
|
5564
|
+
damping: 28,
|
|
5565
|
+
mass: .8
|
|
5566
|
+
};
|
|
5567
|
+
const containerVariants = {
|
|
5568
|
+
collapsed: {
|
|
5569
|
+
width: "40px",
|
|
5570
|
+
height: "3px",
|
|
5571
|
+
padding: "0px",
|
|
5572
|
+
borderRadius: "9999px"
|
|
5573
|
+
},
|
|
5574
|
+
hovered: {
|
|
5575
|
+
width: "180px",
|
|
5576
|
+
height: "32px",
|
|
5577
|
+
padding: "0px 12px",
|
|
5578
|
+
borderRadius: "9999px"
|
|
5579
|
+
},
|
|
5580
|
+
composing: {
|
|
5581
|
+
width: "min(360px, calc(100vw - 2rem))",
|
|
5582
|
+
height: "auto",
|
|
5583
|
+
padding: "10px 14px",
|
|
5584
|
+
borderRadius: "20px"
|
|
5585
|
+
},
|
|
5586
|
+
active: {
|
|
5587
|
+
width: "min(360px, calc(100vw - 2rem))",
|
|
5588
|
+
height: "auto",
|
|
5589
|
+
padding: "10px 14px",
|
|
5590
|
+
borderRadius: "20px"
|
|
5591
|
+
},
|
|
5592
|
+
expanded: {
|
|
5593
|
+
width: "min(400px, calc(100vw - 2rem))",
|
|
5594
|
+
height: "auto",
|
|
5595
|
+
padding: "12px 16px",
|
|
5596
|
+
borderRadius: "20px"
|
|
5597
|
+
}
|
|
5598
|
+
};
|
|
5599
|
+
const contentVariants = {
|
|
5600
|
+
hidden: {
|
|
5601
|
+
opacity: 0,
|
|
5602
|
+
y: 8,
|
|
5603
|
+
scale: .95
|
|
5604
|
+
},
|
|
5605
|
+
visible: {
|
|
5606
|
+
opacity: 1,
|
|
5607
|
+
y: 0,
|
|
5608
|
+
scale: 1,
|
|
5609
|
+
transition: {
|
|
5610
|
+
type: "spring",
|
|
5611
|
+
stiffness: 500,
|
|
5612
|
+
damping: 30,
|
|
5613
|
+
staggerChildren: .05
|
|
5614
|
+
}
|
|
5615
|
+
},
|
|
5616
|
+
exit: {
|
|
5617
|
+
opacity: 0,
|
|
5618
|
+
y: -4,
|
|
5619
|
+
scale: .98,
|
|
5620
|
+
transition: {
|
|
5621
|
+
duration: .15,
|
|
5622
|
+
ease: "easeOut"
|
|
5623
|
+
}
|
|
5624
|
+
}
|
|
5625
|
+
};
|
|
5626
|
+
const hintVariants = {
|
|
5627
|
+
hidden: {
|
|
5628
|
+
opacity: 0,
|
|
5629
|
+
scale: .9
|
|
5630
|
+
},
|
|
5631
|
+
visible: {
|
|
5632
|
+
opacity: 1,
|
|
5633
|
+
scale: 1,
|
|
5634
|
+
transition: {
|
|
5635
|
+
delay: .1,
|
|
5636
|
+
duration: .2
|
|
5637
|
+
}
|
|
5638
|
+
},
|
|
5639
|
+
exit: {
|
|
5640
|
+
opacity: 0,
|
|
5641
|
+
scale: .9,
|
|
5642
|
+
transition: { duration: .1 }
|
|
5643
|
+
}
|
|
5644
|
+
};
|
|
5645
|
+
const barVariants = {
|
|
5646
|
+
idle: {
|
|
5647
|
+
opacity: .6,
|
|
5648
|
+
scaleX: 1
|
|
5649
|
+
},
|
|
5650
|
+
hover: {
|
|
5651
|
+
opacity: 1,
|
|
5652
|
+
scaleX: 1.1,
|
|
5653
|
+
transition: { duration: .2 }
|
|
5654
|
+
}
|
|
5655
|
+
};
|
|
5656
|
+
/**
|
|
5657
|
+
* Morphing container that changes size and shape based on state.
|
|
5658
|
+
* Uses spring animations for smooth, natural transitions.
|
|
5659
|
+
*
|
|
5660
|
+
* States:
|
|
5661
|
+
* - collapsed: Tiny 4px tall bar (ambient)
|
|
5662
|
+
* - hovered: Medium pill with prompt
|
|
5663
|
+
* - composing: User is typing
|
|
5664
|
+
* - active: Agent is working
|
|
5665
|
+
* - expanded: Full panel with summary/forms
|
|
5666
|
+
*/
|
|
5667
|
+
const PillContainer = (t0) => {
|
|
5668
|
+
const $ = c(55);
|
|
5669
|
+
const { mode, children, onModeChange, className } = t0;
|
|
5670
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
5671
|
+
const hoverTimeoutRef = useRef(null);
|
|
5672
|
+
let t1;
|
|
5673
|
+
if ($[0] !== mode || $[1] !== onModeChange) {
|
|
5674
|
+
t1 = () => {
|
|
5675
|
+
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5676
|
+
hoverTimeoutRef.current = setTimeout(() => {
|
|
5677
|
+
setIsHovered(true);
|
|
5678
|
+
if (mode === "collapsed") onModeChange?.("hovered");
|
|
5679
|
+
}, 100);
|
|
5680
|
+
};
|
|
5681
|
+
$[0] = mode;
|
|
5682
|
+
$[1] = onModeChange;
|
|
5683
|
+
$[2] = t1;
|
|
5684
|
+
} else t1 = $[2];
|
|
5685
|
+
const handleMouseEnter = t1;
|
|
5686
|
+
let t2;
|
|
5687
|
+
if ($[3] !== mode || $[4] !== onModeChange) {
|
|
5688
|
+
t2 = () => {
|
|
5689
|
+
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5690
|
+
setIsHovered(false);
|
|
5691
|
+
if (mode === "hovered") hoverTimeoutRef.current = setTimeout(() => {
|
|
5692
|
+
onModeChange?.("collapsed");
|
|
5693
|
+
}, 50);
|
|
5694
|
+
};
|
|
5695
|
+
$[3] = mode;
|
|
5696
|
+
$[4] = onModeChange;
|
|
5697
|
+
$[5] = t2;
|
|
5698
|
+
} else t2 = $[5];
|
|
5699
|
+
const handleMouseLeave = t2;
|
|
5700
|
+
let t3;
|
|
5701
|
+
if ($[6] !== mode || $[7] !== onModeChange) {
|
|
5702
|
+
t3 = () => {
|
|
5703
|
+
if (mode === "collapsed" || mode === "hovered") onModeChange?.("composing");
|
|
5704
|
+
};
|
|
5705
|
+
$[6] = mode;
|
|
5706
|
+
$[7] = onModeChange;
|
|
5707
|
+
$[8] = t3;
|
|
5708
|
+
} else t3 = $[8];
|
|
5709
|
+
const handleClick = t3;
|
|
5710
|
+
let t4;
|
|
5711
|
+
let t5;
|
|
5712
|
+
if ($[9] !== mode || $[10] !== onModeChange) {
|
|
5713
|
+
t4 = () => {
|
|
5714
|
+
const handleKeyDown = (e) => {
|
|
5715
|
+
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key.toLowerCase() === "k") {
|
|
5716
|
+
e.preventDefault();
|
|
5717
|
+
if (mode === "collapsed") onModeChange?.("composing");
|
|
5718
|
+
else if (mode === "composing" || mode === "hovered") onModeChange?.("collapsed");
|
|
5719
|
+
}
|
|
5720
|
+
};
|
|
5721
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
5722
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
5723
|
+
};
|
|
5724
|
+
t5 = [mode, onModeChange];
|
|
5725
|
+
$[9] = mode;
|
|
5726
|
+
$[10] = onModeChange;
|
|
5727
|
+
$[11] = t4;
|
|
5728
|
+
$[12] = t5;
|
|
5729
|
+
} else {
|
|
5730
|
+
t4 = $[11];
|
|
5731
|
+
t5 = $[12];
|
|
5732
|
+
}
|
|
5733
|
+
useEffect(t4, t5);
|
|
5734
|
+
let t6;
|
|
5735
|
+
let t7;
|
|
5736
|
+
if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5737
|
+
t6 = () => () => {
|
|
5738
|
+
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5739
|
+
};
|
|
5740
|
+
t7 = [];
|
|
5741
|
+
$[13] = t6;
|
|
5742
|
+
$[14] = t7;
|
|
5743
|
+
} else {
|
|
5744
|
+
t6 = $[13];
|
|
5745
|
+
t7 = $[14];
|
|
5746
|
+
}
|
|
5747
|
+
useEffect(t6, t7);
|
|
5748
|
+
const showContent = mode !== "collapsed" && mode !== "hovered";
|
|
5749
|
+
const currentVariant = containerVariants[mode];
|
|
5750
|
+
const t8 = mode === "collapsed" && "glass-pill-collapsed glass-shimmer";
|
|
5751
|
+
const t9 = mode === "hovered" && "glass-pill-hovered";
|
|
5752
|
+
const t10 = (mode === "composing" || mode === "expanded") && "glass-pill";
|
|
5753
|
+
const t11 = mode === "active" && "glass-pill glass-active";
|
|
5754
|
+
let t12;
|
|
5755
|
+
if ($[15] !== className || $[16] !== t10 || $[17] !== t11 || $[18] !== t8 || $[19] !== t9) {
|
|
5756
|
+
t12 = cn("relative overflow-hidden", "will-change-transform", t8, t9, t10, t11, className);
|
|
5757
|
+
$[15] = className;
|
|
5758
|
+
$[16] = t10;
|
|
5759
|
+
$[17] = t11;
|
|
5760
|
+
$[18] = t8;
|
|
5761
|
+
$[19] = t9;
|
|
5762
|
+
$[20] = t12;
|
|
5763
|
+
} else t12 = $[20];
|
|
5764
|
+
const glassClassName = t12;
|
|
5765
|
+
let t13;
|
|
5766
|
+
if ($[21] !== currentVariant.borderRadius || $[22] !== currentVariant.height || $[23] !== currentVariant.padding || $[24] !== currentVariant.width) {
|
|
5767
|
+
t13 = {
|
|
5768
|
+
width: currentVariant.width,
|
|
5769
|
+
height: currentVariant.height,
|
|
5770
|
+
padding: currentVariant.padding,
|
|
5771
|
+
borderRadius: currentVariant.borderRadius
|
|
5772
|
+
};
|
|
5773
|
+
$[21] = currentVariant.borderRadius;
|
|
5774
|
+
$[22] = currentVariant.height;
|
|
5775
|
+
$[23] = currentVariant.padding;
|
|
5776
|
+
$[24] = currentVariant.width;
|
|
5777
|
+
$[25] = t13;
|
|
5778
|
+
} else t13 = $[25];
|
|
5779
|
+
const t14 = mode === "collapsed" || mode === "hovered" ? "button" : void 0;
|
|
5780
|
+
const t15 = mode === "collapsed" || mode === "hovered" ? 0 : void 0;
|
|
5781
|
+
const t16 = mode === "collapsed" ? "Open assistant" : void 0;
|
|
5782
|
+
const t17 = showContent ? "60px" : void 0;
|
|
5783
|
+
let t18;
|
|
5784
|
+
if ($[26] !== t17) {
|
|
5785
|
+
t18 = { minHeight: t17 };
|
|
5786
|
+
$[26] = t17;
|
|
5787
|
+
$[27] = t18;
|
|
5788
|
+
} else t18 = $[27];
|
|
5789
|
+
let t19;
|
|
5790
|
+
if ($[28] !== isHovered || $[29] !== mode) {
|
|
5791
|
+
t19 = mode === "collapsed" && /* @__PURE__ */ jsx(motion.div, {
|
|
5792
|
+
className: "absolute inset-0",
|
|
5793
|
+
variants: barVariants,
|
|
5794
|
+
initial: "idle",
|
|
5795
|
+
animate: isHovered ? "hover" : "idle",
|
|
5796
|
+
exit: {
|
|
5797
|
+
opacity: 0,
|
|
5798
|
+
transition: { duration: .1 }
|
|
5799
|
+
},
|
|
5800
|
+
style: {
|
|
5801
|
+
background: "linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent)",
|
|
5802
|
+
backgroundSize: "200% 100%"
|
|
5803
|
+
}
|
|
5804
|
+
}, "collapsed-bar");
|
|
5805
|
+
$[28] = isHovered;
|
|
5806
|
+
$[29] = mode;
|
|
5807
|
+
$[30] = t19;
|
|
5808
|
+
} else t19 = $[30];
|
|
5809
|
+
let t20;
|
|
5810
|
+
if ($[31] !== t19) {
|
|
5811
|
+
t20 = /* @__PURE__ */ jsx(AnimatePresence, {
|
|
5812
|
+
mode: "wait",
|
|
5813
|
+
children: t19
|
|
5814
|
+
});
|
|
5815
|
+
$[31] = t19;
|
|
5816
|
+
$[32] = t20;
|
|
5817
|
+
} else t20 = $[32];
|
|
5818
|
+
let t21;
|
|
5819
|
+
if ($[33] !== mode) {
|
|
5820
|
+
t21 = mode === "hovered" && /* @__PURE__ */ jsx(motion.div, {
|
|
5821
|
+
className: "relative z-10 flex h-full w-full items-center justify-center",
|
|
5822
|
+
variants: hintVariants,
|
|
5823
|
+
initial: "hidden",
|
|
5824
|
+
animate: "visible",
|
|
5825
|
+
exit: "exit",
|
|
5826
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
5827
|
+
className: "text-xs text-white/70",
|
|
5828
|
+
children: [
|
|
5829
|
+
"Click or",
|
|
5830
|
+
" ",
|
|
5831
|
+
/* @__PURE__ */ jsx("kbd", {
|
|
5832
|
+
className: "rounded bg-white/10 px-1.5 py-0.5 font-mono text-[10px]",
|
|
5833
|
+
children: "⌘⇧K"
|
|
5834
|
+
})
|
|
5835
|
+
]
|
|
5836
|
+
})
|
|
5837
|
+
}, "hover-hint");
|
|
5838
|
+
$[33] = mode;
|
|
5839
|
+
$[34] = t21;
|
|
5840
|
+
} else t21 = $[34];
|
|
5841
|
+
let t22;
|
|
5842
|
+
if ($[35] !== t21) {
|
|
5843
|
+
t22 = /* @__PURE__ */ jsx(AnimatePresence, {
|
|
5844
|
+
mode: "wait",
|
|
5845
|
+
children: t21
|
|
5846
|
+
});
|
|
5847
|
+
$[35] = t21;
|
|
5848
|
+
$[36] = t22;
|
|
5849
|
+
} else t22 = $[36];
|
|
5850
|
+
let t23;
|
|
5851
|
+
if ($[37] !== children || $[38] !== showContent) {
|
|
5852
|
+
t23 = showContent && /* @__PURE__ */ jsx(motion.div, {
|
|
5853
|
+
className: "relative z-10 flex flex-col gap-2",
|
|
5854
|
+
variants: contentVariants,
|
|
5855
|
+
initial: "hidden",
|
|
5856
|
+
animate: "visible",
|
|
5857
|
+
exit: "exit",
|
|
5858
|
+
children
|
|
5859
|
+
}, "content");
|
|
5860
|
+
$[37] = children;
|
|
5861
|
+
$[38] = showContent;
|
|
5862
|
+
$[39] = t23;
|
|
5863
|
+
} else t23 = $[39];
|
|
5864
|
+
let t24;
|
|
5865
|
+
if ($[40] !== t23) {
|
|
5866
|
+
t24 = /* @__PURE__ */ jsx(AnimatePresence, {
|
|
5867
|
+
mode: "wait",
|
|
5868
|
+
children: t23
|
|
5869
|
+
});
|
|
5870
|
+
$[40] = t23;
|
|
5871
|
+
$[41] = t24;
|
|
5872
|
+
} else t24 = $[41];
|
|
5873
|
+
let t25;
|
|
5874
|
+
if ($[42] !== glassClassName || $[43] !== handleClick || $[44] !== handleMouseEnter || $[45] !== handleMouseLeave || $[46] !== t13 || $[47] !== t14 || $[48] !== t15 || $[49] !== t16 || $[50] !== t18 || $[51] !== t20 || $[52] !== t22 || $[53] !== t24) {
|
|
5875
|
+
t25 = /* @__PURE__ */ jsxs(motion.div, {
|
|
5876
|
+
layout: true,
|
|
5877
|
+
className: glassClassName,
|
|
5878
|
+
initial: false,
|
|
5879
|
+
animate: t13,
|
|
5880
|
+
transition: sizeSpring,
|
|
5881
|
+
onMouseEnter: handleMouseEnter,
|
|
5882
|
+
onMouseLeave: handleMouseLeave,
|
|
5883
|
+
onClick: handleClick,
|
|
5884
|
+
role: t14,
|
|
5885
|
+
tabIndex: t15,
|
|
5886
|
+
"aria-label": t16,
|
|
5887
|
+
style: t18,
|
|
5888
|
+
children: [
|
|
5889
|
+
t20,
|
|
5890
|
+
t22,
|
|
5891
|
+
t24
|
|
5892
|
+
]
|
|
5893
|
+
});
|
|
5894
|
+
$[42] = glassClassName;
|
|
5895
|
+
$[43] = handleClick;
|
|
5896
|
+
$[44] = handleMouseEnter;
|
|
5897
|
+
$[45] = handleMouseLeave;
|
|
5898
|
+
$[46] = t13;
|
|
5899
|
+
$[47] = t14;
|
|
5900
|
+
$[48] = t15;
|
|
5901
|
+
$[49] = t16;
|
|
5902
|
+
$[50] = t18;
|
|
5903
|
+
$[51] = t20;
|
|
5904
|
+
$[52] = t22;
|
|
5905
|
+
$[53] = t24;
|
|
5906
|
+
$[54] = t25;
|
|
5907
|
+
} else t25 = $[54];
|
|
5908
|
+
return t25;
|
|
5909
|
+
};
|
|
5910
|
+
|
|
5911
|
+
//#endregion
|
|
5912
|
+
//#region src/components/pill/PillVoice.tsx
|
|
5913
|
+
const voiceVariants = {
|
|
5914
|
+
hidden: {
|
|
5915
|
+
opacity: 0,
|
|
5916
|
+
scale: .95,
|
|
5917
|
+
y: 4
|
|
5918
|
+
},
|
|
5919
|
+
visible: {
|
|
5920
|
+
opacity: 1,
|
|
5921
|
+
scale: 1,
|
|
5922
|
+
y: 0,
|
|
5923
|
+
transition: {
|
|
5924
|
+
type: "spring",
|
|
5925
|
+
stiffness: 400,
|
|
5926
|
+
damping: 30
|
|
5927
|
+
}
|
|
5928
|
+
},
|
|
5929
|
+
exit: {
|
|
5930
|
+
opacity: 0,
|
|
5931
|
+
scale: .95,
|
|
5932
|
+
y: -4,
|
|
5933
|
+
transition: { duration: .15 }
|
|
5934
|
+
}
|
|
5935
|
+
};
|
|
5936
|
+
const buttonVariants$1 = {
|
|
5937
|
+
idle: { scale: 1 },
|
|
5938
|
+
hover: { scale: 1.05 },
|
|
5939
|
+
tap: { scale: .95 }
|
|
5940
|
+
};
|
|
5941
|
+
const transcriptVariants = {
|
|
5942
|
+
hidden: {
|
|
5943
|
+
opacity: 0,
|
|
5944
|
+
height: 0
|
|
5945
|
+
},
|
|
5946
|
+
visible: {
|
|
5947
|
+
opacity: 1,
|
|
5948
|
+
height: "auto",
|
|
5949
|
+
transition: {
|
|
5950
|
+
type: "spring",
|
|
5951
|
+
stiffness: 300,
|
|
5952
|
+
damping: 25
|
|
5953
|
+
}
|
|
5954
|
+
},
|
|
5955
|
+
exit: {
|
|
5956
|
+
opacity: 0,
|
|
5957
|
+
height: 0,
|
|
5958
|
+
transition: { duration: .1 }
|
|
5959
|
+
}
|
|
5960
|
+
};
|
|
5961
|
+
/**
|
|
5962
|
+
* Convert voice mode tool call status to border status
|
|
5963
|
+
*/
|
|
5964
|
+
function voiceToolCallToBorderStatus(toolCall) {
|
|
5965
|
+
if (!toolCall) return "idle";
|
|
5966
|
+
if (toolCall.status === "started") return "calling";
|
|
5967
|
+
if (toolCall.status === "completed") return toolCall.error ? "error" : "success";
|
|
5968
|
+
return "idle";
|
|
5969
|
+
}
|
|
5970
|
+
/**
|
|
5971
|
+
* Compact voice mode UI for the pill.
|
|
5972
|
+
* Shows waveforms, controls, and transcript preview.
|
|
5973
|
+
* Uses motion animations for smooth transitions.
|
|
5974
|
+
*/
|
|
5975
|
+
const PillVoice = (t0) => {
|
|
5976
|
+
const $ = c(98);
|
|
5977
|
+
const { onEnd, compact: t1, className } = t0;
|
|
5978
|
+
const compact = t1 === void 0 ? false : t1;
|
|
5979
|
+
const voiceMode = useOptionalVoiceModeContext();
|
|
5980
|
+
let t2;
|
|
5981
|
+
if ($[0] !== onEnd || $[1] !== voiceMode) {
|
|
5982
|
+
t2 = () => {
|
|
5983
|
+
voiceMode?.stopSession();
|
|
5984
|
+
onEnd?.();
|
|
5985
|
+
};
|
|
5986
|
+
$[0] = onEnd;
|
|
5987
|
+
$[1] = voiceMode;
|
|
5988
|
+
$[2] = t2;
|
|
5989
|
+
} else t2 = $[2];
|
|
5990
|
+
const handleEnd = t2;
|
|
5991
|
+
let t3;
|
|
5992
|
+
if ($[3] !== voiceMode) {
|
|
5993
|
+
t3 = () => {
|
|
5994
|
+
voiceMode?.toggleMute();
|
|
5995
|
+
};
|
|
5996
|
+
$[3] = voiceMode;
|
|
5997
|
+
$[4] = t3;
|
|
5998
|
+
} else t3 = $[4];
|
|
5999
|
+
const handleToggleMute = t3;
|
|
6000
|
+
if (!voiceMode || !voiceMode.isActive && !voiceMode.isConnecting && !voiceMode.isError) return null;
|
|
6001
|
+
const { isActive, isConnecting, isMuted, isError, error, audioLevel, transcript, toolCall } = voiceMode;
|
|
6002
|
+
const micLevel = audioLevel?.micLevel ?? 0;
|
|
6003
|
+
const speakerLevel = audioLevel?.speakerLevel ?? 0;
|
|
6004
|
+
let t4;
|
|
6005
|
+
if ($[5] !== className) {
|
|
6006
|
+
t4 = cn("flex flex-col gap-3", className);
|
|
6007
|
+
$[5] = className;
|
|
6008
|
+
$[6] = t4;
|
|
6009
|
+
} else t4 = $[6];
|
|
6010
|
+
const t5 = isMuted ? "bg-red-500/20 text-red-400" : "bg-white/10 text-white/80";
|
|
6011
|
+
let t6;
|
|
6012
|
+
if ($[7] !== t5) {
|
|
6013
|
+
t6 = cn("flex h-7 w-7 shrink-0 items-center justify-center rounded-full", t5);
|
|
6014
|
+
$[7] = t5;
|
|
6015
|
+
$[8] = t6;
|
|
6016
|
+
} else t6 = $[8];
|
|
6017
|
+
const t7 = isMuted ? .6 : 1;
|
|
6018
|
+
let t8;
|
|
6019
|
+
if ($[9] !== t7) {
|
|
6020
|
+
t8 = { opacity: t7 };
|
|
6021
|
+
$[9] = t7;
|
|
6022
|
+
$[10] = t8;
|
|
6023
|
+
} else t8 = $[10];
|
|
6024
|
+
let t9;
|
|
6025
|
+
if ($[11] !== isMuted) {
|
|
6026
|
+
t9 = isMuted ? /* @__PURE__ */ jsx(MicOff, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(Mic, { className: "h-3.5 w-3.5" });
|
|
6027
|
+
$[11] = isMuted;
|
|
6028
|
+
$[12] = t9;
|
|
6029
|
+
} else t9 = $[12];
|
|
6030
|
+
let t10;
|
|
6031
|
+
if ($[13] !== t6 || $[14] !== t8 || $[15] !== t9) {
|
|
6032
|
+
t10 = /* @__PURE__ */ jsx(motion.div, {
|
|
6033
|
+
className: t6,
|
|
6034
|
+
animate: t8,
|
|
6035
|
+
children: t9
|
|
6036
|
+
});
|
|
6037
|
+
$[13] = t6;
|
|
6038
|
+
$[14] = t8;
|
|
6039
|
+
$[15] = t9;
|
|
6040
|
+
$[16] = t10;
|
|
6041
|
+
} else t10 = $[16];
|
|
6042
|
+
const t11 = compact ? "max-w-16" : "max-w-24";
|
|
6043
|
+
let t12;
|
|
6044
|
+
if ($[17] !== t11) {
|
|
6045
|
+
t12 = cn("h-5 flex-1", t11);
|
|
6046
|
+
$[17] = t11;
|
|
6047
|
+
$[18] = t12;
|
|
6048
|
+
} else t12 = $[18];
|
|
6049
|
+
const t13 = isActive && !isMuted;
|
|
6050
|
+
let t14;
|
|
6051
|
+
if ($[19] !== isConnecting || $[20] !== micLevel || $[21] !== t13) {
|
|
6052
|
+
t14 = /* @__PURE__ */ jsx(LiveWaveform, {
|
|
6053
|
+
active: t13,
|
|
6054
|
+
processing: isConnecting,
|
|
6055
|
+
manualAudioLevel: micLevel,
|
|
6056
|
+
barWidth: 2,
|
|
6057
|
+
barGap: 1,
|
|
6058
|
+
barRadius: 1,
|
|
6059
|
+
barColor: "rgba(255, 255, 255, 0.7)",
|
|
6060
|
+
height: 20,
|
|
6061
|
+
mode: "static",
|
|
6062
|
+
sensitivity: 2,
|
|
6063
|
+
fadeEdges: false
|
|
6064
|
+
});
|
|
6065
|
+
$[19] = isConnecting;
|
|
6066
|
+
$[20] = micLevel;
|
|
6067
|
+
$[21] = t13;
|
|
6068
|
+
$[22] = t14;
|
|
6069
|
+
} else t14 = $[22];
|
|
6070
|
+
let t15;
|
|
6071
|
+
if ($[23] !== t12 || $[24] !== t14) {
|
|
6072
|
+
t15 = /* @__PURE__ */ jsx("div", {
|
|
6073
|
+
className: t12,
|
|
6074
|
+
children: t14
|
|
6075
|
+
});
|
|
6076
|
+
$[23] = t12;
|
|
6077
|
+
$[24] = t14;
|
|
6078
|
+
$[25] = t15;
|
|
6079
|
+
} else t15 = $[25];
|
|
6080
|
+
let t16;
|
|
6081
|
+
if ($[26] !== t10 || $[27] !== t15) {
|
|
6082
|
+
t16 = /* @__PURE__ */ jsxs("div", {
|
|
6083
|
+
className: "flex flex-1 items-center gap-2",
|
|
6084
|
+
children: [t10, t15]
|
|
6085
|
+
});
|
|
6086
|
+
$[26] = t10;
|
|
6087
|
+
$[27] = t15;
|
|
6088
|
+
$[28] = t16;
|
|
6089
|
+
} else t16 = $[28];
|
|
6090
|
+
let t17;
|
|
6091
|
+
if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6092
|
+
t17 = /* @__PURE__ */ jsx("div", { className: "h-5 w-px bg-white/10" });
|
|
6093
|
+
$[29] = t17;
|
|
6094
|
+
} else t17 = $[29];
|
|
6095
|
+
const t18 = compact ? "max-w-16" : "max-w-24";
|
|
6096
|
+
let t19;
|
|
6097
|
+
if ($[30] !== t18) {
|
|
6098
|
+
t19 = cn("h-5 flex-1", t18);
|
|
6099
|
+
$[30] = t18;
|
|
6100
|
+
$[31] = t19;
|
|
6101
|
+
} else t19 = $[31];
|
|
6102
|
+
let t20;
|
|
6103
|
+
if ($[32] !== isActive || $[33] !== isConnecting || $[34] !== speakerLevel) {
|
|
6104
|
+
t20 = /* @__PURE__ */ jsx(LiveWaveform, {
|
|
6105
|
+
active: isActive,
|
|
6106
|
+
processing: isConnecting,
|
|
6107
|
+
manualAudioLevel: speakerLevel,
|
|
6108
|
+
barWidth: 2,
|
|
6109
|
+
barGap: 1,
|
|
6110
|
+
barRadius: 1,
|
|
6111
|
+
barColor: "rgba(255, 255, 255, 0.4)",
|
|
6112
|
+
height: 20,
|
|
6113
|
+
mode: "static",
|
|
6114
|
+
sensitivity: 2,
|
|
6115
|
+
fadeEdges: false
|
|
6116
|
+
});
|
|
6117
|
+
$[32] = isActive;
|
|
6118
|
+
$[33] = isConnecting;
|
|
6119
|
+
$[34] = speakerLevel;
|
|
6120
|
+
$[35] = t20;
|
|
6121
|
+
} else t20 = $[35];
|
|
6122
|
+
let t21;
|
|
6123
|
+
if ($[36] !== t19 || $[37] !== t20) {
|
|
6124
|
+
t21 = /* @__PURE__ */ jsx("div", {
|
|
6125
|
+
className: t19,
|
|
6126
|
+
children: t20
|
|
6127
|
+
});
|
|
6128
|
+
$[36] = t19;
|
|
6129
|
+
$[37] = t20;
|
|
6130
|
+
$[38] = t21;
|
|
6131
|
+
} else t21 = $[38];
|
|
6132
|
+
let t22;
|
|
6133
|
+
if ($[39] !== speakerLevel) {
|
|
6134
|
+
t22 = speakerLevel > .1 ? [
|
|
6135
|
+
1,
|
|
6136
|
+
1.2,
|
|
6137
|
+
1
|
|
6138
|
+
] : 1;
|
|
6139
|
+
$[39] = speakerLevel;
|
|
6140
|
+
$[40] = t22;
|
|
6141
|
+
} else t22 = $[40];
|
|
6142
|
+
const t23 = speakerLevel > .1 ? 1 : .5;
|
|
6143
|
+
let t24;
|
|
6144
|
+
if ($[41] !== t22 || $[42] !== t23) {
|
|
6145
|
+
t24 = {
|
|
6146
|
+
scale: t22,
|
|
6147
|
+
opacity: t23
|
|
6148
|
+
};
|
|
6149
|
+
$[41] = t22;
|
|
6150
|
+
$[42] = t23;
|
|
6151
|
+
$[43] = t24;
|
|
6152
|
+
} else t24 = $[43];
|
|
6153
|
+
let t25;
|
|
6154
|
+
if ($[44] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6155
|
+
t25 = { duration: .2 };
|
|
6156
|
+
$[44] = t25;
|
|
6157
|
+
} else t25 = $[44];
|
|
6158
|
+
let t26;
|
|
6159
|
+
if ($[45] !== t24) {
|
|
6160
|
+
t26 = /* @__PURE__ */ jsx("div", {
|
|
6161
|
+
className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-white/10",
|
|
6162
|
+
children: /* @__PURE__ */ jsx(motion.div, {
|
|
6163
|
+
className: "h-2.5 w-2.5 rounded-full bg-green-400",
|
|
6164
|
+
animate: t24,
|
|
6165
|
+
transition: t25
|
|
6166
|
+
})
|
|
6167
|
+
});
|
|
6168
|
+
$[45] = t24;
|
|
6169
|
+
$[46] = t26;
|
|
6170
|
+
} else t26 = $[46];
|
|
6171
|
+
let t27;
|
|
6172
|
+
if ($[47] !== t21 || $[48] !== t26) {
|
|
6173
|
+
t27 = /* @__PURE__ */ jsxs("div", {
|
|
6174
|
+
className: "flex flex-1 items-center gap-2",
|
|
6175
|
+
children: [t21, t26]
|
|
6176
|
+
});
|
|
6177
|
+
$[47] = t21;
|
|
6178
|
+
$[48] = t26;
|
|
6179
|
+
$[49] = t27;
|
|
6180
|
+
} else t27 = $[49];
|
|
6181
|
+
let t28;
|
|
6182
|
+
if ($[50] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6183
|
+
t28 = /* @__PURE__ */ jsx("div", { className: "h-5 w-px bg-white/10" });
|
|
6184
|
+
$[50] = t28;
|
|
6185
|
+
} else t28 = $[50];
|
|
6186
|
+
const t29 = !isActive;
|
|
6187
|
+
const t30 = isMuted ? "bg-red-500/20 text-red-400 hover:bg-red-500/30" : "bg-white/10 text-white/70 hover:bg-white/20 hover:text-white";
|
|
6188
|
+
let t31;
|
|
6189
|
+
if ($[51] !== t30) {
|
|
6190
|
+
t31 = cn("flex h-7 w-7 items-center justify-center rounded-full", "transition-colors duration-150", t30);
|
|
6191
|
+
$[51] = t30;
|
|
6192
|
+
$[52] = t31;
|
|
6193
|
+
} else t31 = $[52];
|
|
6194
|
+
const t32 = isMuted ? "Unmute microphone" : "Mute microphone";
|
|
6195
|
+
let t33;
|
|
6196
|
+
if ($[53] !== isMuted) {
|
|
6197
|
+
t33 = isMuted ? /* @__PURE__ */ jsx(MicOff, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(Mic, { className: "h-3.5 w-3.5" });
|
|
6198
|
+
$[53] = isMuted;
|
|
6199
|
+
$[54] = t33;
|
|
6200
|
+
} else t33 = $[54];
|
|
6201
|
+
let t34;
|
|
6202
|
+
if ($[55] !== handleToggleMute || $[56] !== t29 || $[57] !== t31 || $[58] !== t32 || $[59] !== t33) {
|
|
6203
|
+
t34 = /* @__PURE__ */ jsx(motion.button, {
|
|
6204
|
+
type: "button",
|
|
6205
|
+
onClick: handleToggleMute,
|
|
6206
|
+
disabled: t29,
|
|
6207
|
+
className: t31,
|
|
6208
|
+
variants: buttonVariants$1,
|
|
6209
|
+
initial: "idle",
|
|
6210
|
+
whileHover: "hover",
|
|
6211
|
+
whileTap: "tap",
|
|
6212
|
+
"aria-label": t32,
|
|
6213
|
+
children: t33
|
|
6214
|
+
});
|
|
6215
|
+
$[55] = handleToggleMute;
|
|
6216
|
+
$[56] = t29;
|
|
6217
|
+
$[57] = t31;
|
|
6218
|
+
$[58] = t32;
|
|
6219
|
+
$[59] = t33;
|
|
6220
|
+
$[60] = t34;
|
|
6221
|
+
} else t34 = $[60];
|
|
6222
|
+
let t35;
|
|
6223
|
+
if ($[61] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6224
|
+
t35 = cn("flex h-7 w-7 items-center justify-center rounded-full", "bg-red-500/20 text-red-400", "hover:bg-red-500/30 hover:text-red-300", "transition-colors duration-150");
|
|
6225
|
+
$[61] = t35;
|
|
6226
|
+
} else t35 = $[61];
|
|
6227
|
+
let t36;
|
|
6228
|
+
if ($[62] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6229
|
+
t36 = /* @__PURE__ */ jsx(PhoneOff, { className: "h-3.5 w-3.5" });
|
|
6230
|
+
$[62] = t36;
|
|
6231
|
+
} else t36 = $[62];
|
|
6232
|
+
let t37;
|
|
6233
|
+
if ($[63] !== handleEnd) {
|
|
6234
|
+
t37 = /* @__PURE__ */ jsx(motion.button, {
|
|
6235
|
+
type: "button",
|
|
6236
|
+
onClick: handleEnd,
|
|
6237
|
+
className: t35,
|
|
6238
|
+
variants: buttonVariants$1,
|
|
6239
|
+
initial: "idle",
|
|
6240
|
+
whileHover: "hover",
|
|
6241
|
+
whileTap: "tap",
|
|
6242
|
+
"aria-label": "End voice session",
|
|
6243
|
+
children: t36
|
|
6244
|
+
});
|
|
6245
|
+
$[63] = handleEnd;
|
|
6246
|
+
$[64] = t37;
|
|
6247
|
+
} else t37 = $[64];
|
|
6248
|
+
let t38;
|
|
6249
|
+
if ($[65] !== t34 || $[66] !== t37) {
|
|
6250
|
+
t38 = /* @__PURE__ */ jsxs("div", {
|
|
6251
|
+
className: "flex shrink-0 items-center gap-1.5",
|
|
6252
|
+
children: [t34, t37]
|
|
6253
|
+
});
|
|
6254
|
+
$[65] = t34;
|
|
6255
|
+
$[66] = t37;
|
|
6256
|
+
$[67] = t38;
|
|
6257
|
+
} else t38 = $[67];
|
|
6258
|
+
let t39;
|
|
6259
|
+
if ($[68] !== t16 || $[69] !== t27 || $[70] !== t38) {
|
|
6260
|
+
t39 = /* @__PURE__ */ jsxs("div", {
|
|
6261
|
+
className: "flex items-center gap-3",
|
|
6262
|
+
children: [
|
|
6263
|
+
t16,
|
|
6264
|
+
t17,
|
|
6265
|
+
t27,
|
|
6266
|
+
t28,
|
|
6267
|
+
t38
|
|
6268
|
+
]
|
|
6269
|
+
});
|
|
6270
|
+
$[68] = t16;
|
|
6271
|
+
$[69] = t27;
|
|
6272
|
+
$[70] = t38;
|
|
6273
|
+
$[71] = t39;
|
|
6274
|
+
} else t39 = $[71];
|
|
6275
|
+
let t40;
|
|
6276
|
+
if ($[72] !== toolCall) {
|
|
6277
|
+
t40 = toolCall && /* @__PURE__ */ jsxs(motion.div, {
|
|
6278
|
+
className: cn("flex max-w-full items-center gap-2 rounded-full px-3 py-1.5", "text-xs", toolCall.status === "started" && "bg-blue-500/10 text-blue-400", toolCall.status === "completed" && !toolCall.error && "bg-green-500/10 text-green-400", toolCall.status === "completed" && toolCall.error && "bg-red-500/10 text-red-400"),
|
|
6279
|
+
initial: {
|
|
6280
|
+
opacity: 0,
|
|
6281
|
+
y: -4
|
|
6282
|
+
},
|
|
6283
|
+
animate: {
|
|
6284
|
+
opacity: 1,
|
|
6285
|
+
y: 0
|
|
6286
|
+
},
|
|
6287
|
+
exit: {
|
|
6288
|
+
opacity: 0,
|
|
6289
|
+
y: -4
|
|
6290
|
+
},
|
|
6291
|
+
transition: {
|
|
6292
|
+
type: "spring",
|
|
6293
|
+
stiffness: 400,
|
|
6294
|
+
damping: 30
|
|
6295
|
+
},
|
|
6296
|
+
children: [/* @__PURE__ */ jsx(motion.span, {
|
|
6297
|
+
className: cn("h-1.5 w-1.5 shrink-0 rounded-full", toolCall.status === "started" && "bg-blue-500", toolCall.status === "completed" && !toolCall.error && "bg-green-500", toolCall.status === "completed" && toolCall.error && "bg-red-500"),
|
|
6298
|
+
animate: toolCall.status === "started" ? { opacity: [
|
|
6299
|
+
1,
|
|
6300
|
+
.5,
|
|
6301
|
+
1
|
|
6302
|
+
] } : {},
|
|
6303
|
+
transition: {
|
|
6304
|
+
duration: .8,
|
|
6305
|
+
repeat: Infinity
|
|
6306
|
+
}
|
|
6307
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
6308
|
+
className: "min-w-0 truncate",
|
|
6309
|
+
children: toolCall.toolName
|
|
6310
|
+
})]
|
|
6311
|
+
});
|
|
6312
|
+
$[72] = toolCall;
|
|
6313
|
+
$[73] = t40;
|
|
6314
|
+
} else t40 = $[73];
|
|
6315
|
+
let t41;
|
|
6316
|
+
if ($[74] !== t40) {
|
|
6317
|
+
t41 = /* @__PURE__ */ jsx(AnimatePresence, { children: t40 });
|
|
6318
|
+
$[74] = t40;
|
|
6319
|
+
$[75] = t41;
|
|
6320
|
+
} else t41 = $[75];
|
|
6321
|
+
let t42;
|
|
6322
|
+
if ($[76] !== transcript) {
|
|
6323
|
+
t42 = transcript && transcript.text && /* @__PURE__ */ jsx(motion.div, {
|
|
6324
|
+
className: "overflow-hidden",
|
|
6325
|
+
variants: transcriptVariants,
|
|
6326
|
+
initial: "hidden",
|
|
6327
|
+
animate: "visible",
|
|
6328
|
+
exit: "exit",
|
|
6329
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
6330
|
+
className: cn("rounded-lg px-3 py-2 text-xs", transcript.type === "user" ? "bg-white/10 text-white/80" : "bg-white/5 text-white/60"),
|
|
6331
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
6332
|
+
className: "mr-1.5 shrink-0 text-white/40",
|
|
6333
|
+
children: transcript.type === "user" ? "You:" : "Agent:"
|
|
6334
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
6335
|
+
className: cn("line-clamp-3", !transcript.isDone && "animate-pulse"),
|
|
6336
|
+
children: transcript.text
|
|
6337
|
+
})]
|
|
6338
|
+
})
|
|
6339
|
+
});
|
|
6340
|
+
$[76] = transcript;
|
|
6341
|
+
$[77] = t42;
|
|
6342
|
+
} else t42 = $[77];
|
|
6343
|
+
let t43;
|
|
6344
|
+
if ($[78] !== t42) {
|
|
6345
|
+
t43 = /* @__PURE__ */ jsx(AnimatePresence, { children: t42 });
|
|
6346
|
+
$[78] = t42;
|
|
6347
|
+
$[79] = t43;
|
|
6348
|
+
} else t43 = $[79];
|
|
6349
|
+
let t44;
|
|
6350
|
+
if ($[80] !== isActive || $[81] !== isConnecting) {
|
|
6351
|
+
t44 = isConnecting && !isActive && /* @__PURE__ */ jsxs(motion.div, {
|
|
6352
|
+
className: "flex items-center justify-center gap-2 py-2 text-xs text-white/50",
|
|
6353
|
+
initial: { opacity: 0 },
|
|
6354
|
+
animate: { opacity: 1 },
|
|
6355
|
+
exit: { opacity: 0 },
|
|
6356
|
+
children: [/* @__PURE__ */ jsx(motion.span, {
|
|
6357
|
+
className: "h-1.5 w-1.5 rounded-full bg-amber-500",
|
|
6358
|
+
animate: { opacity: [
|
|
6359
|
+
1,
|
|
6360
|
+
.5,
|
|
6361
|
+
1
|
|
6362
|
+
] },
|
|
6363
|
+
transition: {
|
|
6364
|
+
duration: .8,
|
|
6365
|
+
repeat: Infinity
|
|
6366
|
+
}
|
|
6367
|
+
}), /* @__PURE__ */ jsx("span", { children: "Connecting..." })]
|
|
6368
|
+
});
|
|
6369
|
+
$[80] = isActive;
|
|
6370
|
+
$[81] = isConnecting;
|
|
6371
|
+
$[82] = t44;
|
|
6372
|
+
} else t44 = $[82];
|
|
6373
|
+
let t45;
|
|
6374
|
+
if ($[83] !== t44) {
|
|
6375
|
+
t45 = /* @__PURE__ */ jsx(AnimatePresence, { children: t44 });
|
|
6376
|
+
$[83] = t44;
|
|
6377
|
+
$[84] = t45;
|
|
6378
|
+
} else t45 = $[84];
|
|
6379
|
+
let t46;
|
|
6380
|
+
if ($[85] !== error || $[86] !== handleEnd || $[87] !== isError) {
|
|
6381
|
+
t46 = isError && error && /* @__PURE__ */ jsxs(motion.div, {
|
|
6382
|
+
className: "flex items-center gap-2 rounded-lg bg-red-500/10 px-3 py-2 text-xs text-red-400",
|
|
6383
|
+
initial: {
|
|
6384
|
+
opacity: 0,
|
|
6385
|
+
y: -4
|
|
6386
|
+
},
|
|
6387
|
+
animate: {
|
|
6388
|
+
opacity: 1,
|
|
6389
|
+
y: 0
|
|
6390
|
+
},
|
|
6391
|
+
exit: {
|
|
6392
|
+
opacity: 0,
|
|
6393
|
+
y: -4
|
|
6394
|
+
},
|
|
6395
|
+
children: [
|
|
6396
|
+
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-red-500" }),
|
|
6397
|
+
/* @__PURE__ */ jsx("span", {
|
|
6398
|
+
className: "line-clamp-2",
|
|
6399
|
+
children: error
|
|
6400
|
+
}),
|
|
6401
|
+
/* @__PURE__ */ jsx("button", {
|
|
6402
|
+
type: "button",
|
|
6403
|
+
onClick: handleEnd,
|
|
6404
|
+
className: "ml-auto shrink-0 text-red-300 hover:text-red-200",
|
|
6405
|
+
children: "Dismiss"
|
|
6406
|
+
})
|
|
6407
|
+
]
|
|
6408
|
+
});
|
|
6409
|
+
$[85] = error;
|
|
6410
|
+
$[86] = handleEnd;
|
|
6411
|
+
$[87] = isError;
|
|
6412
|
+
$[88] = t46;
|
|
6413
|
+
} else t46 = $[88];
|
|
6414
|
+
let t47;
|
|
6415
|
+
if ($[89] !== t46) {
|
|
6416
|
+
t47 = /* @__PURE__ */ jsx(AnimatePresence, { children: t46 });
|
|
6417
|
+
$[89] = t46;
|
|
6418
|
+
$[90] = t47;
|
|
6419
|
+
} else t47 = $[90];
|
|
6420
|
+
let t48;
|
|
6421
|
+
if ($[91] !== t39 || $[92] !== t4 || $[93] !== t41 || $[94] !== t43 || $[95] !== t45 || $[96] !== t47) {
|
|
6422
|
+
t48 = /* @__PURE__ */ jsxs(motion.div, {
|
|
6423
|
+
className: t4,
|
|
6424
|
+
variants: voiceVariants,
|
|
6425
|
+
initial: "hidden",
|
|
6426
|
+
animate: "visible",
|
|
6427
|
+
exit: "exit",
|
|
6428
|
+
children: [
|
|
6429
|
+
t39,
|
|
6430
|
+
t41,
|
|
6431
|
+
t43,
|
|
6432
|
+
t45,
|
|
6433
|
+
t47
|
|
6434
|
+
]
|
|
6435
|
+
});
|
|
6436
|
+
$[91] = t39;
|
|
6437
|
+
$[92] = t4;
|
|
6438
|
+
$[93] = t41;
|
|
6439
|
+
$[94] = t43;
|
|
6440
|
+
$[95] = t45;
|
|
6441
|
+
$[96] = t47;
|
|
6442
|
+
$[97] = t48;
|
|
6443
|
+
} else t48 = $[97];
|
|
6444
|
+
return t48;
|
|
6445
|
+
};
|
|
6446
|
+
/**
|
|
6447
|
+
* Hook to get voice border status for the pill container
|
|
6448
|
+
*/
|
|
6449
|
+
function useVoiceBorderStatus() {
|
|
6450
|
+
const $ = c(2);
|
|
6451
|
+
const voiceMode = useOptionalVoiceModeContext();
|
|
6452
|
+
if (!voiceMode) return "idle";
|
|
6453
|
+
let t0;
|
|
6454
|
+
if ($[0] !== voiceMode.toolCall) {
|
|
6455
|
+
t0 = voiceToolCallToBorderStatus(voiceMode.toolCall);
|
|
6456
|
+
$[0] = voiceMode.toolCall;
|
|
6457
|
+
$[1] = t0;
|
|
6458
|
+
} else t0 = $[1];
|
|
6459
|
+
return t0;
|
|
6460
|
+
}
|
|
6461
|
+
|
|
6462
|
+
//#endregion
|
|
6463
|
+
//#region src/components/pill/PillMarkdown.tsx
|
|
6464
|
+
/**
|
|
6465
|
+
* Markdown renderer for pill components.
|
|
6466
|
+
* Uses the same styling as the main MarkdownText but accepts content as a prop.
|
|
6467
|
+
*/
|
|
6468
|
+
/**
|
|
6469
|
+
* Markdown component for rendering content within pill UI.
|
|
6470
|
+
* Supports GitHub-flavored markdown with compact styling option.
|
|
6471
|
+
*/
|
|
6472
|
+
const PillMarkdown = memo((t0) => {
|
|
6473
|
+
const $ = c(33);
|
|
6474
|
+
const { content, className, compact } = t0;
|
|
6475
|
+
let t1;
|
|
6476
|
+
let t2;
|
|
6477
|
+
let t3;
|
|
6478
|
+
let t4;
|
|
6479
|
+
let t5;
|
|
6480
|
+
let t6;
|
|
6481
|
+
let t7;
|
|
6482
|
+
if ($[0] !== compact) {
|
|
6483
|
+
t1 = (t8$1) => {
|
|
6484
|
+
const { className: cn_, ...props } = t8$1;
|
|
6485
|
+
return /* @__PURE__ */ jsx("h1", {
|
|
6486
|
+
className: cn("aui-md-h1 mb-3 scroll-m-20 font-extrabold tracking-tight last:mb-0", compact ? "text-base" : "text-lg", cn_),
|
|
6487
|
+
...props
|
|
6488
|
+
});
|
|
6489
|
+
};
|
|
6490
|
+
t2 = (t9$1) => {
|
|
6491
|
+
const { className: cn__0, ...props_0 } = t9$1;
|
|
6492
|
+
return /* @__PURE__ */ jsx("h2", {
|
|
6493
|
+
className: cn("aui-md-h2 mt-3 mb-2 scroll-m-20 font-semibold tracking-tight first:mt-0 last:mb-0", compact ? "text-sm" : "text-base", cn__0),
|
|
6494
|
+
...props_0
|
|
6495
|
+
});
|
|
6496
|
+
};
|
|
6497
|
+
t3 = (t10$1) => {
|
|
6498
|
+
const { className: cn__1, ...props_1 } = t10$1;
|
|
6499
|
+
return /* @__PURE__ */ jsx("h3", {
|
|
6500
|
+
className: cn("aui-md-h3 mt-2 mb-1 scroll-m-20 font-semibold tracking-tight first:mt-0 last:mb-0", compact ? "text-sm" : "text-[15px]", cn__1),
|
|
6501
|
+
...props_1
|
|
6502
|
+
});
|
|
6503
|
+
};
|
|
6504
|
+
t4 = (t11$1) => {
|
|
6505
|
+
const { className: cn__2, ...props_2 } = t11$1;
|
|
6506
|
+
return /* @__PURE__ */ jsx("p", {
|
|
6507
|
+
className: cn("aui-md-p leading-relaxed first:mt-0 last:mb-0", compact ? "text-xs my-1" : "text-sm my-2", cn__2),
|
|
6508
|
+
...props_2
|
|
6509
|
+
});
|
|
6510
|
+
};
|
|
6511
|
+
t5 = (t12$1) => {
|
|
6512
|
+
const { className: cn__3, ...props_3 } = t12$1;
|
|
6513
|
+
return /* @__PURE__ */ jsx("a", {
|
|
6514
|
+
className: cn("aui-md-a font-medium text-primary underline underline-offset-4 hover:text-primary/80", compact ? "text-xs" : "text-sm", cn__3),
|
|
6515
|
+
...props_3
|
|
6516
|
+
});
|
|
6517
|
+
};
|
|
6518
|
+
t6 = (t13$1) => {
|
|
6519
|
+
const { className: cn__4, ...props_4 } = t13$1;
|
|
6520
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
6521
|
+
className: cn("aui-md-ul ml-4 list-disc [&>li]:mt-0.5", compact ? "text-xs my-1" : "text-sm my-2", cn__4),
|
|
6522
|
+
...props_4
|
|
6523
|
+
});
|
|
6524
|
+
};
|
|
6525
|
+
t7 = (t14$1) => {
|
|
6526
|
+
const { className: cn__5, ...props_5 } = t14$1;
|
|
6527
|
+
return /* @__PURE__ */ jsx("ol", {
|
|
6528
|
+
className: cn("aui-md-ol ml-4 list-decimal [&>li]:mt-0.5", compact ? "text-xs my-1" : "text-sm my-2", cn__5),
|
|
6529
|
+
...props_5
|
|
6530
|
+
});
|
|
6531
|
+
};
|
|
6532
|
+
$[0] = compact;
|
|
6533
|
+
$[1] = t1;
|
|
6534
|
+
$[2] = t2;
|
|
6535
|
+
$[3] = t3;
|
|
6536
|
+
$[4] = t4;
|
|
6537
|
+
$[5] = t5;
|
|
6538
|
+
$[6] = t6;
|
|
6539
|
+
$[7] = t7;
|
|
6540
|
+
} else {
|
|
6541
|
+
t1 = $[1];
|
|
6542
|
+
t2 = $[2];
|
|
6543
|
+
t3 = $[3];
|
|
6544
|
+
t4 = $[4];
|
|
6545
|
+
t5 = $[5];
|
|
6546
|
+
t6 = $[6];
|
|
6547
|
+
t7 = $[7];
|
|
6548
|
+
}
|
|
6549
|
+
let t10;
|
|
6550
|
+
let t8;
|
|
6551
|
+
let t9;
|
|
6552
|
+
if ($[8] !== compact) {
|
|
6553
|
+
t8 = (t11$1) => {
|
|
6554
|
+
const { className: cn__7, ...props_7 } = t11$1;
|
|
6555
|
+
return /* @__PURE__ */ jsx("blockquote", {
|
|
6556
|
+
className: cn("aui-md-blockquote border-l-2 border-white/20 pl-3 italic text-white/70", compact ? "text-xs" : "text-sm", cn__7),
|
|
6557
|
+
...props_7
|
|
6558
|
+
});
|
|
6559
|
+
};
|
|
6560
|
+
t9 = (t12$1) => {
|
|
6561
|
+
const { className: cn__8, ...props_8 } = t12$1;
|
|
6562
|
+
if (!cn__8?.includes("language-")) return /* @__PURE__ */ jsx("code", {
|
|
6563
|
+
className: cn("aui-md-inline-code rounded bg-white/10 px-1 py-0.5 font-mono", compact ? "text-[10px]" : "text-xs", cn__8),
|
|
6564
|
+
...props_8
|
|
6565
|
+
});
|
|
6566
|
+
return /* @__PURE__ */ jsx("code", {
|
|
6567
|
+
className: cn("aui-md-code block font-mono", compact ? "text-[10px]" : "text-xs", cn__8),
|
|
6568
|
+
...props_8
|
|
6569
|
+
});
|
|
6570
|
+
};
|
|
6571
|
+
t10 = (t13$1) => {
|
|
6572
|
+
const { className: cn__9, ...props_9 } = t13$1;
|
|
6573
|
+
return /* @__PURE__ */ jsx("pre", {
|
|
6574
|
+
className: cn("aui-md-pre overflow-x-auto rounded-lg bg-black/30 p-2 my-2", compact ? "text-[10px]" : "text-xs", cn__9),
|
|
6575
|
+
...props_9
|
|
6576
|
+
});
|
|
6577
|
+
};
|
|
6578
|
+
$[8] = compact;
|
|
6579
|
+
$[9] = t10;
|
|
6580
|
+
$[10] = t8;
|
|
6581
|
+
$[11] = t9;
|
|
6582
|
+
} else {
|
|
6583
|
+
t10 = $[9];
|
|
6584
|
+
t8 = $[10];
|
|
6585
|
+
t9 = $[11];
|
|
6586
|
+
}
|
|
6587
|
+
let t11;
|
|
6588
|
+
if ($[12] !== t1 || $[13] !== t10 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4 || $[17] !== t5 || $[18] !== t6 || $[19] !== t7 || $[20] !== t8 || $[21] !== t9) {
|
|
6589
|
+
t11 = {
|
|
6590
|
+
h1: t1,
|
|
6591
|
+
h2: t2,
|
|
6592
|
+
h3: t3,
|
|
6593
|
+
p: t4,
|
|
6594
|
+
a: t5,
|
|
6595
|
+
ul: t6,
|
|
6596
|
+
ol: t7,
|
|
6597
|
+
li: _temp$5,
|
|
6598
|
+
blockquote: t8,
|
|
6599
|
+
code: t9,
|
|
6600
|
+
pre: t10,
|
|
6601
|
+
hr: _temp2$2,
|
|
6602
|
+
strong: _temp3$1,
|
|
6603
|
+
em: _temp4$1
|
|
6604
|
+
};
|
|
6605
|
+
$[12] = t1;
|
|
6606
|
+
$[13] = t10;
|
|
6607
|
+
$[14] = t2;
|
|
6608
|
+
$[15] = t3;
|
|
6609
|
+
$[16] = t4;
|
|
6610
|
+
$[17] = t5;
|
|
6611
|
+
$[18] = t6;
|
|
6612
|
+
$[19] = t7;
|
|
6613
|
+
$[20] = t8;
|
|
6614
|
+
$[21] = t9;
|
|
6615
|
+
$[22] = t11;
|
|
6616
|
+
} else t11 = $[22];
|
|
6617
|
+
const components = t11;
|
|
6618
|
+
const t12 = compact && "pill-markdown-compact";
|
|
6619
|
+
let t13;
|
|
6620
|
+
if ($[23] !== className || $[24] !== t12) {
|
|
6621
|
+
t13 = cn("aui-md pill-markdown", t12, className);
|
|
6622
|
+
$[23] = className;
|
|
6623
|
+
$[24] = t12;
|
|
6624
|
+
$[25] = t13;
|
|
6625
|
+
} else t13 = $[25];
|
|
6626
|
+
let t14;
|
|
6627
|
+
if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6628
|
+
t14 = [remarkGfm];
|
|
6629
|
+
$[26] = t14;
|
|
6630
|
+
} else t14 = $[26];
|
|
6631
|
+
let t15;
|
|
6632
|
+
if ($[27] !== components || $[28] !== content) {
|
|
6633
|
+
t15 = /* @__PURE__ */ jsx(ReactMarkdown, {
|
|
6634
|
+
remarkPlugins: t14,
|
|
6635
|
+
components,
|
|
6636
|
+
children: content
|
|
6637
|
+
});
|
|
6638
|
+
$[27] = components;
|
|
6639
|
+
$[28] = content;
|
|
6640
|
+
$[29] = t15;
|
|
6641
|
+
} else t15 = $[29];
|
|
6642
|
+
let t16;
|
|
6643
|
+
if ($[30] !== t13 || $[31] !== t15) {
|
|
6644
|
+
t16 = /* @__PURE__ */ jsx("div", {
|
|
6645
|
+
className: t13,
|
|
6646
|
+
children: t15
|
|
6647
|
+
});
|
|
6648
|
+
$[30] = t13;
|
|
6649
|
+
$[31] = t15;
|
|
6650
|
+
$[32] = t16;
|
|
6651
|
+
} else t16 = $[32];
|
|
6652
|
+
return t16;
|
|
6653
|
+
});
|
|
6654
|
+
PillMarkdown.displayName = "PillMarkdown";
|
|
6655
|
+
function _temp$5(t0) {
|
|
6656
|
+
const { className: cn__6, ...props_6 } = t0;
|
|
6657
|
+
return /* @__PURE__ */ jsx("li", {
|
|
6658
|
+
className: cn("aui-md-li", cn__6),
|
|
6659
|
+
...props_6
|
|
6660
|
+
});
|
|
6661
|
+
}
|
|
6662
|
+
function _temp2$2(t0) {
|
|
6663
|
+
const { className: cn__10, ...props_10 } = t0;
|
|
6664
|
+
return /* @__PURE__ */ jsx("hr", {
|
|
6665
|
+
className: cn("aui-md-hr my-2 border-white/10", cn__10),
|
|
6666
|
+
...props_10
|
|
6667
|
+
});
|
|
6668
|
+
}
|
|
6669
|
+
function _temp3$1(t0) {
|
|
6670
|
+
const { className: cn__11, ...props_11 } = t0;
|
|
6671
|
+
return /* @__PURE__ */ jsx("strong", {
|
|
6672
|
+
className: cn("aui-md-strong font-semibold", cn__11),
|
|
6673
|
+
...props_11
|
|
6674
|
+
});
|
|
6675
|
+
}
|
|
6676
|
+
function _temp4$1(t0) {
|
|
6677
|
+
const { className: cn__12, ...props_12 } = t0;
|
|
6678
|
+
return /* @__PURE__ */ jsx("em", {
|
|
6679
|
+
className: cn("aui-md-em italic", cn__12),
|
|
6680
|
+
...props_12
|
|
6681
|
+
});
|
|
6682
|
+
}
|
|
6683
|
+
|
|
6684
|
+
//#endregion
|
|
6685
|
+
//#region src/components/pill/SummaryBlock.tsx
|
|
6686
|
+
/**
|
|
6687
|
+
* Summary block showing the agent's synthesized output.
|
|
6688
|
+
* Displayed after task completion instead of token streaming.
|
|
6689
|
+
*/
|
|
6690
|
+
const SummaryBlock = (t0) => {
|
|
6691
|
+
const $ = c(17);
|
|
6692
|
+
const { summary, isSuccess, isError, actions, className } = t0;
|
|
6693
|
+
const t1 = isSuccess && "bg-green-500/10 border border-green-500/20";
|
|
6694
|
+
const t2 = isError && "bg-red-500/10 border border-red-500/20";
|
|
6695
|
+
const t3 = !isSuccess && !isError && "bg-white/5 border border-white/10";
|
|
6696
|
+
let t4;
|
|
6697
|
+
if ($[0] !== className || $[1] !== t1 || $[2] !== t2 || $[3] !== t3) {
|
|
6698
|
+
t4 = cn("rounded-xl p-4", t1, t2, t3, className);
|
|
6699
|
+
$[0] = className;
|
|
6700
|
+
$[1] = t1;
|
|
6701
|
+
$[2] = t2;
|
|
6702
|
+
$[3] = t3;
|
|
6703
|
+
$[4] = t4;
|
|
6704
|
+
} else t4 = $[4];
|
|
6705
|
+
let t5;
|
|
6706
|
+
if ($[5] !== isError || $[6] !== isSuccess) {
|
|
6707
|
+
t5 = (isSuccess || isError) && /* @__PURE__ */ jsxs("div", {
|
|
6708
|
+
className: "flex items-center gap-2 mb-3",
|
|
6709
|
+
children: [
|
|
6710
|
+
isSuccess && /* @__PURE__ */ jsx(CheckCircle2, { className: "h-4 w-4 text-green-400" }),
|
|
6711
|
+
isError && /* @__PURE__ */ jsx(AlertCircle, { className: "h-4 w-4 text-red-400" }),
|
|
6712
|
+
/* @__PURE__ */ jsx("span", {
|
|
6713
|
+
className: cn("text-sm font-medium", isSuccess && "text-green-400", isError && "text-red-400"),
|
|
6714
|
+
children: isSuccess ? "Task Complete" : "Error"
|
|
6715
|
+
})
|
|
6716
|
+
]
|
|
6717
|
+
});
|
|
6718
|
+
$[5] = isError;
|
|
6719
|
+
$[6] = isSuccess;
|
|
6720
|
+
$[7] = t5;
|
|
6721
|
+
} else t5 = $[7];
|
|
6722
|
+
let t6;
|
|
6723
|
+
if ($[8] !== summary) {
|
|
6724
|
+
t6 = /* @__PURE__ */ jsx(PillMarkdown, {
|
|
6725
|
+
content: summary,
|
|
6726
|
+
className: "text-white/90"
|
|
6727
|
+
});
|
|
6728
|
+
$[8] = summary;
|
|
6729
|
+
$[9] = t6;
|
|
6730
|
+
} else t6 = $[9];
|
|
6731
|
+
let t7;
|
|
6732
|
+
if ($[10] !== actions) {
|
|
6733
|
+
t7 = actions && actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
6734
|
+
className: "flex flex-wrap gap-2 mt-4 pt-3 border-t border-white/10",
|
|
6735
|
+
children: actions.map(_temp$4)
|
|
6736
|
+
});
|
|
6737
|
+
$[10] = actions;
|
|
6738
|
+
$[11] = t7;
|
|
6739
|
+
} else t7 = $[11];
|
|
6740
|
+
let t8;
|
|
6741
|
+
if ($[12] !== t4 || $[13] !== t5 || $[14] !== t6 || $[15] !== t7) {
|
|
6742
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
6743
|
+
className: t4,
|
|
6744
|
+
children: [
|
|
6745
|
+
t5,
|
|
6746
|
+
t6,
|
|
6747
|
+
t7
|
|
6748
|
+
]
|
|
6749
|
+
});
|
|
6750
|
+
$[12] = t4;
|
|
6751
|
+
$[13] = t5;
|
|
6752
|
+
$[14] = t6;
|
|
6753
|
+
$[15] = t7;
|
|
6754
|
+
$[16] = t8;
|
|
6755
|
+
} else t8 = $[16];
|
|
6756
|
+
return t8;
|
|
6757
|
+
};
|
|
6758
|
+
/**
|
|
6759
|
+
* Hook to get the latest summary from the thread
|
|
6760
|
+
* Returns the last text content from the last assistant message
|
|
6761
|
+
*/
|
|
6762
|
+
function useLatestSummary() {
|
|
6763
|
+
const $ = c(2);
|
|
6764
|
+
const messages = useThread(_temp2$1);
|
|
6765
|
+
let t0;
|
|
6766
|
+
if ($[0] !== messages) {
|
|
6767
|
+
bb0: {
|
|
6768
|
+
if (!messages || messages.length === 0) {
|
|
6769
|
+
t0 = null;
|
|
6770
|
+
break bb0;
|
|
6771
|
+
}
|
|
6772
|
+
const lastAssistantMessage = [...messages].reverse().find(_temp3);
|
|
6773
|
+
if (!lastAssistantMessage) {
|
|
6774
|
+
t0 = null;
|
|
6775
|
+
break bb0;
|
|
6776
|
+
}
|
|
6777
|
+
const lastText = lastAssistantMessage.content.filter(_temp4).at(-1);
|
|
6778
|
+
if (!lastText) {
|
|
6779
|
+
t0 = null;
|
|
6780
|
+
break bb0;
|
|
6781
|
+
}
|
|
6782
|
+
t0 = lastText.text;
|
|
6783
|
+
}
|
|
6784
|
+
$[0] = messages;
|
|
6785
|
+
$[1] = t0;
|
|
6786
|
+
} else t0 = $[1];
|
|
6787
|
+
return t0;
|
|
6788
|
+
}
|
|
6789
|
+
/**
|
|
6790
|
+
* Welcome message for empty state
|
|
6791
|
+
*/
|
|
6792
|
+
function _temp4(c$1) {
|
|
6793
|
+
return c$1.type === "text";
|
|
6794
|
+
}
|
|
6795
|
+
function _temp3(m$1) {
|
|
6796
|
+
return m$1.role === "assistant";
|
|
6797
|
+
}
|
|
6798
|
+
function _temp2$1(thread) {
|
|
6799
|
+
return thread.messages;
|
|
6800
|
+
}
|
|
6801
|
+
const WelcomeMessage = (t0) => {
|
|
6802
|
+
const $ = c(6);
|
|
6803
|
+
const { className } = t0;
|
|
6804
|
+
let t1;
|
|
6805
|
+
if ($[0] !== className) {
|
|
6806
|
+
t1 = cn("text-center py-4", className);
|
|
6807
|
+
$[0] = className;
|
|
6808
|
+
$[1] = t1;
|
|
6809
|
+
} else t1 = $[1];
|
|
6810
|
+
let t2;
|
|
6811
|
+
let t3;
|
|
6812
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6813
|
+
t2 = /* @__PURE__ */ jsx("h3", {
|
|
6814
|
+
className: "text-lg font-semibold text-white mb-1",
|
|
6815
|
+
children: "Hello!"
|
|
6816
|
+
});
|
|
6817
|
+
t3 = /* @__PURE__ */ jsx("p", {
|
|
6818
|
+
className: "text-sm text-white/60",
|
|
6819
|
+
children: "How can I help you today?"
|
|
6820
|
+
});
|
|
6821
|
+
$[2] = t2;
|
|
6822
|
+
$[3] = t3;
|
|
6823
|
+
} else {
|
|
6824
|
+
t2 = $[2];
|
|
6825
|
+
t3 = $[3];
|
|
6826
|
+
}
|
|
6827
|
+
let t4;
|
|
6828
|
+
if ($[4] !== t1) {
|
|
6829
|
+
t4 = /* @__PURE__ */ jsxs("div", {
|
|
6830
|
+
className: t1,
|
|
6831
|
+
children: [t2, t3]
|
|
6832
|
+
});
|
|
6833
|
+
$[4] = t1;
|
|
6834
|
+
$[5] = t4;
|
|
6835
|
+
} else t4 = $[5];
|
|
6836
|
+
return t4;
|
|
6837
|
+
};
|
|
6838
|
+
function _temp$4(action, i) {
|
|
6839
|
+
return /* @__PURE__ */ jsx("button", {
|
|
6840
|
+
onClick: action.onClick,
|
|
6841
|
+
className: cn("px-3 py-1.5 rounded-lg text-sm font-medium", "transition-colors duration-200", action.variant === "primary" ? "bg-primary text-primary-foreground hover:bg-primary/90" : "bg-white/10 text-white/80 hover:bg-white/20"),
|
|
6842
|
+
children: action.label
|
|
6843
|
+
}, i);
|
|
6844
|
+
}
|
|
6845
|
+
|
|
6846
|
+
//#endregion
|
|
6847
|
+
//#region src/components/pill/ToolStatusBorder.tsx
|
|
6848
|
+
const borderVariants = {
|
|
6849
|
+
idle: {
|
|
6850
|
+
opacity: 0,
|
|
6851
|
+
scale: 1
|
|
6852
|
+
},
|
|
6853
|
+
calling: {
|
|
6854
|
+
opacity: 1,
|
|
6855
|
+
scale: 1,
|
|
6856
|
+
transition: { opacity: { duration: .15 } }
|
|
6857
|
+
},
|
|
6858
|
+
error: {
|
|
6859
|
+
opacity: 1,
|
|
6860
|
+
scale: 1,
|
|
6861
|
+
transition: { opacity: { duration: .1 } }
|
|
6862
|
+
}
|
|
6863
|
+
};
|
|
6864
|
+
const shakeAnimation = {
|
|
6865
|
+
x: [
|
|
6866
|
+
0,
|
|
6867
|
+
-2,
|
|
6868
|
+
2,
|
|
6869
|
+
-2,
|
|
6870
|
+
2,
|
|
6871
|
+
0
|
|
6872
|
+
],
|
|
6873
|
+
transition: {
|
|
6874
|
+
duration: .3,
|
|
6875
|
+
ease: [
|
|
6876
|
+
.25,
|
|
6877
|
+
.1,
|
|
6878
|
+
.25,
|
|
6879
|
+
1
|
|
6880
|
+
]
|
|
6881
|
+
}
|
|
6882
|
+
};
|
|
6883
|
+
/**
|
|
6884
|
+
* Minimal animated border for tool execution status.
|
|
6885
|
+
*
|
|
6886
|
+
* - idle/success: clean, no border (success is the default state)
|
|
6887
|
+
* - calling: subtle animated gradient
|
|
6888
|
+
* - error: brief red flash with shake
|
|
6889
|
+
*/
|
|
6890
|
+
const ToolStatusBorder = (t0) => {
|
|
6891
|
+
const $ = c(17);
|
|
6892
|
+
const { status, children, className, borderRadius: t1 } = t0;
|
|
6893
|
+
const borderRadius = t1 === void 0 ? "20px" : t1;
|
|
6894
|
+
const effectiveStatus = status === "success" ? "idle" : status;
|
|
6895
|
+
let t2;
|
|
6896
|
+
if ($[0] !== className) {
|
|
6897
|
+
t2 = cn("relative", className);
|
|
6898
|
+
$[0] = className;
|
|
6899
|
+
$[1] = t2;
|
|
6900
|
+
} else t2 = $[1];
|
|
6901
|
+
const t3 = effectiveStatus === "error" ? shakeAnimation : void 0;
|
|
6902
|
+
let t4;
|
|
6903
|
+
if ($[2] !== borderRadius || $[3] !== effectiveStatus) {
|
|
6904
|
+
t4 = effectiveStatus !== "idle" && /* @__PURE__ */ jsx(motion.div, {
|
|
6905
|
+
className: cn("absolute -inset-[1px] pointer-events-none", effectiveStatus === "calling" && "tool-border-calling", effectiveStatus === "error" && "tool-border-error"),
|
|
6906
|
+
style: { borderRadius },
|
|
6907
|
+
variants: borderVariants,
|
|
6908
|
+
initial: "idle",
|
|
6909
|
+
animate: effectiveStatus,
|
|
6910
|
+
exit: {
|
|
6911
|
+
opacity: 0,
|
|
6912
|
+
transition: { duration: .15 }
|
|
6913
|
+
}
|
|
6914
|
+
});
|
|
6915
|
+
$[2] = borderRadius;
|
|
6916
|
+
$[3] = effectiveStatus;
|
|
6917
|
+
$[4] = t4;
|
|
6918
|
+
} else t4 = $[4];
|
|
6919
|
+
let t5;
|
|
6920
|
+
if ($[5] !== t4) {
|
|
6921
|
+
t5 = /* @__PURE__ */ jsx(AnimatePresence, { children: t4 });
|
|
6922
|
+
$[5] = t4;
|
|
6923
|
+
$[6] = t5;
|
|
6924
|
+
} else t5 = $[6];
|
|
6925
|
+
let t6;
|
|
6926
|
+
if ($[7] !== borderRadius) {
|
|
6927
|
+
t6 = { borderRadius };
|
|
6928
|
+
$[7] = borderRadius;
|
|
6929
|
+
$[8] = t6;
|
|
6930
|
+
} else t6 = $[8];
|
|
6931
|
+
let t7;
|
|
6932
|
+
if ($[9] !== children || $[10] !== t6) {
|
|
6933
|
+
t7 = /* @__PURE__ */ jsx("div", {
|
|
6934
|
+
className: "relative",
|
|
6935
|
+
style: t6,
|
|
6936
|
+
children
|
|
6937
|
+
});
|
|
6938
|
+
$[9] = children;
|
|
6939
|
+
$[10] = t6;
|
|
6940
|
+
$[11] = t7;
|
|
6941
|
+
} else t7 = $[11];
|
|
6942
|
+
let t8;
|
|
6943
|
+
if ($[12] !== t2 || $[13] !== t3 || $[14] !== t5 || $[15] !== t7) {
|
|
6944
|
+
t8 = /* @__PURE__ */ jsxs(motion.div, {
|
|
6945
|
+
className: t2,
|
|
6946
|
+
animate: t3,
|
|
6947
|
+
children: [t5, t7]
|
|
6948
|
+
});
|
|
6949
|
+
$[12] = t2;
|
|
6950
|
+
$[13] = t3;
|
|
6951
|
+
$[14] = t5;
|
|
6952
|
+
$[15] = t7;
|
|
6953
|
+
$[16] = t8;
|
|
6954
|
+
} else t8 = $[16];
|
|
6955
|
+
return t8;
|
|
6956
|
+
};
|
|
6957
|
+
/**
|
|
6958
|
+
* Hook to manage tool border status based on actions.
|
|
6959
|
+
* Minimalist approach: success returns to idle immediately.
|
|
6960
|
+
*/
|
|
6961
|
+
function useToolBorderStatus(hasRunningAction, lastActionStatus) {
|
|
6962
|
+
const $ = c(4);
|
|
6963
|
+
const [status, setStatus] = useState("idle");
|
|
6964
|
+
const timeoutRef = useRef(null);
|
|
6965
|
+
let t0;
|
|
6966
|
+
let t1;
|
|
6967
|
+
if ($[0] !== hasRunningAction || $[1] !== lastActionStatus) {
|
|
6968
|
+
t0 = () => {
|
|
6969
|
+
if (timeoutRef.current) {
|
|
6970
|
+
clearTimeout(timeoutRef.current);
|
|
6971
|
+
timeoutRef.current = null;
|
|
6972
|
+
}
|
|
6973
|
+
if (hasRunningAction) setStatus("calling");
|
|
6974
|
+
else if (lastActionStatus === "error") {
|
|
6975
|
+
setStatus("error");
|
|
6976
|
+
timeoutRef.current = setTimeout(() => {
|
|
6977
|
+
setStatus("idle");
|
|
6978
|
+
}, 400);
|
|
6979
|
+
} else setStatus("idle");
|
|
6980
|
+
return () => {
|
|
6981
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
6982
|
+
};
|
|
6983
|
+
};
|
|
6984
|
+
t1 = [hasRunningAction, lastActionStatus];
|
|
6985
|
+
$[0] = hasRunningAction;
|
|
6986
|
+
$[1] = lastActionStatus;
|
|
6987
|
+
$[2] = t0;
|
|
6988
|
+
$[3] = t1;
|
|
6989
|
+
} else {
|
|
6990
|
+
t0 = $[2];
|
|
6991
|
+
t1 = $[3];
|
|
6992
|
+
}
|
|
6993
|
+
useEffect(t0, t1);
|
|
6994
|
+
return status;
|
|
6995
|
+
}
|
|
6996
|
+
|
|
6997
|
+
//#endregion
|
|
6998
|
+
//#region src/components/pill/AgentPill.tsx
|
|
6999
|
+
/**
|
|
7000
|
+
* Action-first agent pill UI.
|
|
7001
|
+
*
|
|
7002
|
+
* A compact, morphing interface that shows:
|
|
7003
|
+
* - Current activity when agent is working
|
|
7004
|
+
* - Action list (collapsible)
|
|
7005
|
+
* - Summary when complete
|
|
7006
|
+
* - Input composer
|
|
7007
|
+
*
|
|
7008
|
+
* Uses assistant-ui primitives for data binding.
|
|
7009
|
+
*/
|
|
7010
|
+
const AgentPill = (t0) => {
|
|
7011
|
+
const $ = c(69);
|
|
7012
|
+
const { position: t1, onOpenHistory, showVoiceButton: t2, isVoiceActive: t3, onVoiceToggle, className } = t0;
|
|
7013
|
+
const position = t1 === void 0 ? "bottom-center" : t1;
|
|
7014
|
+
const showVoiceButton = t2 === void 0 ? false : t2;
|
|
7015
|
+
const isVoiceActive = t3 === void 0 ? false : t3;
|
|
7016
|
+
const [userMode, setUserMode] = useState("collapsed");
|
|
7017
|
+
const messages = useThread(_temp$3);
|
|
7018
|
+
const voiceMode = useOptionalVoiceModeContext();
|
|
7019
|
+
const voiceBorderStatus = useVoiceBorderStatus();
|
|
7020
|
+
const isVoiceModeActive = voiceMode?.isActive || voiceMode?.isConnecting || voiceMode?.isError || isVoiceActive;
|
|
7021
|
+
const actions = useActions();
|
|
7022
|
+
const currentAction = useCurrentAction();
|
|
7023
|
+
const recentActions = useRecentActions(3);
|
|
7024
|
+
const summary = useLatestSummary();
|
|
7025
|
+
const hasMessages = (messages?.length ?? 0) > 0;
|
|
7026
|
+
let t4;
|
|
7027
|
+
bb0: {
|
|
7028
|
+
if (!messages || messages.length === 0) {
|
|
7029
|
+
t4 = false;
|
|
7030
|
+
break bb0;
|
|
7031
|
+
}
|
|
7032
|
+
let t5$1;
|
|
7033
|
+
if ($[0] !== messages) {
|
|
7034
|
+
t5$1 = messages.at(-1);
|
|
7035
|
+
$[0] = messages;
|
|
7036
|
+
$[1] = t5$1;
|
|
7037
|
+
} else t5$1 = $[1];
|
|
7038
|
+
const lastMessage = t5$1;
|
|
7039
|
+
t4 = lastMessage?.role === "assistant" && lastMessage.status?.type !== "complete";
|
|
7040
|
+
}
|
|
7041
|
+
const isRunning = t4;
|
|
7042
|
+
let t5;
|
|
7043
|
+
if ($[2] !== actions) {
|
|
7044
|
+
t5 = actions.filter(_temp2).at(-1);
|
|
7045
|
+
$[2] = actions;
|
|
7046
|
+
$[3] = t5;
|
|
7047
|
+
} else t5 = $[3];
|
|
7048
|
+
const lastCompletedAction = t5;
|
|
7049
|
+
const textBorderStatus = useToolBorderStatus(!!currentAction, lastCompletedAction?.status === "success" ? "success" : lastCompletedAction?.status === "error" ? "error" : null);
|
|
7050
|
+
const borderStatus = isVoiceModeActive ? voiceBorderStatus : textBorderStatus;
|
|
7051
|
+
let t6;
|
|
7052
|
+
bb1: {
|
|
7053
|
+
if (isVoiceModeActive) {
|
|
7054
|
+
t6 = "active";
|
|
7055
|
+
break bb1;
|
|
7056
|
+
}
|
|
7057
|
+
if (userMode === "collapsed") {
|
|
7058
|
+
t6 = "collapsed";
|
|
7059
|
+
break bb1;
|
|
7060
|
+
}
|
|
7061
|
+
if (userMode === "hovered") {
|
|
7062
|
+
t6 = "hovered";
|
|
7063
|
+
break bb1;
|
|
7064
|
+
}
|
|
7065
|
+
if (isRunning) {
|
|
7066
|
+
t6 = "active";
|
|
7067
|
+
break bb1;
|
|
7068
|
+
}
|
|
7069
|
+
if (hasMessages) {
|
|
7070
|
+
t6 = "expanded";
|
|
7071
|
+
break bb1;
|
|
7072
|
+
}
|
|
7073
|
+
if (userMode === "composing") {
|
|
7074
|
+
t6 = "composing";
|
|
7075
|
+
break bb1;
|
|
7076
|
+
}
|
|
7077
|
+
t6 = "collapsed";
|
|
7078
|
+
}
|
|
7079
|
+
const mode = t6;
|
|
7080
|
+
let t7;
|
|
7081
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7082
|
+
t7 = (newMode) => {
|
|
7083
|
+
setUserMode(newMode);
|
|
7084
|
+
};
|
|
7085
|
+
$[4] = t7;
|
|
7086
|
+
} else t7 = $[4];
|
|
7087
|
+
const handleModeChange = t7;
|
|
7088
|
+
let t8;
|
|
7089
|
+
if ($[5] !== onVoiceToggle || $[6] !== voiceMode) {
|
|
7090
|
+
t8 = () => {
|
|
7091
|
+
if (voiceMode) if (voiceMode.isActive || voiceMode.isConnecting) voiceMode.stopSession();
|
|
7092
|
+
else voiceMode.startSession();
|
|
7093
|
+
onVoiceToggle?.();
|
|
7094
|
+
};
|
|
7095
|
+
$[5] = onVoiceToggle;
|
|
7096
|
+
$[6] = voiceMode;
|
|
7097
|
+
$[7] = t8;
|
|
7098
|
+
} else t8 = $[7];
|
|
7099
|
+
const handleVoiceToggle = t8;
|
|
7100
|
+
const borderRadius = mode === "collapsed" || mode === "hovered" ? "9999px" : "24px";
|
|
7101
|
+
const t9 = position === "bottom-center" && "bottom-4 left-1/2 -translate-x-1/2";
|
|
7102
|
+
const t10 = position === "bottom-right" && "bottom-4 right-4";
|
|
7103
|
+
let t11;
|
|
7104
|
+
if ($[8] !== className || $[9] !== t10 || $[10] !== t9) {
|
|
7105
|
+
t11 = cn("fixed z-50", t9, t10, className);
|
|
7106
|
+
$[8] = className;
|
|
7107
|
+
$[9] = t10;
|
|
7108
|
+
$[10] = t9;
|
|
7109
|
+
$[11] = t11;
|
|
7110
|
+
} else t11 = $[11];
|
|
7111
|
+
let t12;
|
|
7112
|
+
if ($[12] !== isVoiceModeActive || $[13] !== mode || $[14] !== onOpenHistory) {
|
|
7113
|
+
t12 = !isVoiceModeActive && mode !== "collapsed" && mode !== "hovered" && onOpenHistory && /* @__PURE__ */ jsx("button", {
|
|
7114
|
+
type: "button",
|
|
7115
|
+
onClick: onOpenHistory,
|
|
7116
|
+
className: cn("absolute top-3 right-3", "p-1.5 rounded-full", "hover:bg-white/10", "text-white/50 hover:text-white/80", "transition-colors duration-200"),
|
|
7117
|
+
"aria-label": "View conversation history",
|
|
7118
|
+
children: /* @__PURE__ */ jsx(History, { className: "h-4 w-4" })
|
|
7119
|
+
});
|
|
7120
|
+
$[12] = isVoiceModeActive;
|
|
7121
|
+
$[13] = mode;
|
|
7122
|
+
$[14] = onOpenHistory;
|
|
7123
|
+
$[15] = t12;
|
|
7124
|
+
} else t12 = $[15];
|
|
7125
|
+
let t13;
|
|
7126
|
+
if ($[16] !== handleVoiceToggle || $[17] !== isVoiceModeActive) {
|
|
7127
|
+
t13 = isVoiceModeActive && /* @__PURE__ */ jsx(PillVoice, { onEnd: handleVoiceToggle }, "voice-mode");
|
|
7128
|
+
$[16] = handleVoiceToggle;
|
|
7129
|
+
$[17] = isVoiceModeActive;
|
|
7130
|
+
$[18] = t13;
|
|
7131
|
+
} else t13 = $[18];
|
|
7132
|
+
let t14;
|
|
7133
|
+
if ($[19] !== t13) {
|
|
7134
|
+
t14 = /* @__PURE__ */ jsx(AnimatePresence, {
|
|
7135
|
+
mode: "wait",
|
|
7136
|
+
children: t13
|
|
7137
|
+
});
|
|
7138
|
+
$[19] = t13;
|
|
7139
|
+
$[20] = t14;
|
|
7140
|
+
} else t14 = $[20];
|
|
7141
|
+
let t15;
|
|
7142
|
+
if ($[21] !== hasMessages || $[22] !== isVoiceModeActive || $[23] !== mode) {
|
|
7143
|
+
t15 = !isVoiceModeActive && mode === "composing" && !hasMessages && /* @__PURE__ */ jsx(WelcomeMessage, {});
|
|
7144
|
+
$[21] = hasMessages;
|
|
7145
|
+
$[22] = isVoiceModeActive;
|
|
7146
|
+
$[23] = mode;
|
|
7147
|
+
$[24] = t15;
|
|
7148
|
+
} else t15 = $[24];
|
|
7149
|
+
let t16;
|
|
7150
|
+
if ($[25] !== currentAction || $[26] !== isVoiceModeActive || $[27] !== mode || $[28] !== recentActions) {
|
|
7151
|
+
t16 = !isVoiceModeActive && mode === "active" && /* @__PURE__ */ jsx(CurrentActivity, {
|
|
7152
|
+
currentAction,
|
|
7153
|
+
recentActions,
|
|
7154
|
+
showRecent: true
|
|
7155
|
+
});
|
|
7156
|
+
$[25] = currentAction;
|
|
7157
|
+
$[26] = isVoiceModeActive;
|
|
7158
|
+
$[27] = mode;
|
|
7159
|
+
$[28] = recentActions;
|
|
7160
|
+
$[29] = t16;
|
|
7161
|
+
} else t16 = $[29];
|
|
7162
|
+
let t17;
|
|
7163
|
+
if ($[30] !== isRunning || $[31] !== isVoiceModeActive || $[32] !== lastCompletedAction?.error || $[33] !== mode || $[34] !== summary) {
|
|
7164
|
+
t17 = !isVoiceModeActive && mode === "expanded" && !isRunning && summary && /* @__PURE__ */ jsx(SummaryBlock, {
|
|
7165
|
+
summary,
|
|
7166
|
+
isSuccess: !lastCompletedAction?.error
|
|
7167
|
+
});
|
|
7168
|
+
$[30] = isRunning;
|
|
7169
|
+
$[31] = isVoiceModeActive;
|
|
7170
|
+
$[32] = lastCompletedAction?.error;
|
|
7171
|
+
$[33] = mode;
|
|
7172
|
+
$[34] = summary;
|
|
7173
|
+
$[35] = t17;
|
|
7174
|
+
} else t17 = $[35];
|
|
7175
|
+
let t18;
|
|
7176
|
+
if ($[36] !== isRunning || $[37] !== isVoiceModeActive || $[38] !== mode || $[39] !== summary) {
|
|
7177
|
+
t18 = !isVoiceModeActive && mode === "expanded" && !isRunning && !summary && /* @__PURE__ */ jsx(IdleIndicator, {});
|
|
7178
|
+
$[36] = isRunning;
|
|
7179
|
+
$[37] = isVoiceModeActive;
|
|
7180
|
+
$[38] = mode;
|
|
7181
|
+
$[39] = summary;
|
|
7182
|
+
$[40] = t18;
|
|
7183
|
+
} else t18 = $[40];
|
|
7184
|
+
let t19;
|
|
7185
|
+
if ($[41] !== actions || $[42] !== isVoiceModeActive || $[43] !== mode) {
|
|
7186
|
+
t19 = !isVoiceModeActive && (mode === "active" || mode === "expanded") && actions.length > 0 && /* @__PURE__ */ jsx(ActionList, {
|
|
7187
|
+
actions,
|
|
7188
|
+
defaultCollapsed: mode === "active"
|
|
7189
|
+
});
|
|
7190
|
+
$[41] = actions;
|
|
7191
|
+
$[42] = isVoiceModeActive;
|
|
7192
|
+
$[43] = mode;
|
|
7193
|
+
$[44] = t19;
|
|
7194
|
+
} else t19 = $[44];
|
|
7195
|
+
let t20;
|
|
7196
|
+
if ($[45] !== handleVoiceToggle || $[46] !== isVoiceActive || $[47] !== isVoiceModeActive || $[48] !== mode || $[49] !== showVoiceButton || $[50] !== voiceMode?.isSupported) {
|
|
7197
|
+
t20 = !isVoiceModeActive && (mode === "composing" || mode === "active" || mode === "expanded") && /* @__PURE__ */ jsx(PillComposer, {
|
|
7198
|
+
showVoiceButton: showVoiceButton || !!voiceMode?.isSupported,
|
|
7199
|
+
isVoiceActive,
|
|
7200
|
+
onVoiceToggle: handleVoiceToggle
|
|
7201
|
+
});
|
|
7202
|
+
$[45] = handleVoiceToggle;
|
|
7203
|
+
$[46] = isVoiceActive;
|
|
7204
|
+
$[47] = isVoiceModeActive;
|
|
7205
|
+
$[48] = mode;
|
|
7206
|
+
$[49] = showVoiceButton;
|
|
7207
|
+
$[50] = voiceMode?.isSupported;
|
|
7208
|
+
$[51] = t20;
|
|
7209
|
+
} else t20 = $[51];
|
|
7210
|
+
let t21;
|
|
7211
|
+
if ($[52] !== mode || $[53] !== t12 || $[54] !== t14 || $[55] !== t15 || $[56] !== t16 || $[57] !== t17 || $[58] !== t18 || $[59] !== t19 || $[60] !== t20) {
|
|
7212
|
+
t21 = /* @__PURE__ */ jsxs(PillContainer, {
|
|
7213
|
+
mode,
|
|
7214
|
+
onModeChange: handleModeChange,
|
|
7215
|
+
children: [
|
|
7216
|
+
t12,
|
|
7217
|
+
t14,
|
|
7218
|
+
t15,
|
|
7219
|
+
t16,
|
|
7220
|
+
t17,
|
|
7221
|
+
t18,
|
|
7222
|
+
t19,
|
|
7223
|
+
t20
|
|
7224
|
+
]
|
|
7225
|
+
});
|
|
7226
|
+
$[52] = mode;
|
|
7227
|
+
$[53] = t12;
|
|
7228
|
+
$[54] = t14;
|
|
7229
|
+
$[55] = t15;
|
|
7230
|
+
$[56] = t16;
|
|
7231
|
+
$[57] = t17;
|
|
7232
|
+
$[58] = t18;
|
|
7233
|
+
$[59] = t19;
|
|
7234
|
+
$[60] = t20;
|
|
7235
|
+
$[61] = t21;
|
|
7236
|
+
} else t21 = $[61];
|
|
7237
|
+
let t22;
|
|
7238
|
+
if ($[62] !== borderRadius || $[63] !== borderStatus || $[64] !== t21) {
|
|
7239
|
+
t22 = /* @__PURE__ */ jsx(ToolStatusBorder, {
|
|
7240
|
+
status: borderStatus,
|
|
7241
|
+
borderRadius,
|
|
7242
|
+
children: t21
|
|
7243
|
+
});
|
|
7244
|
+
$[62] = borderRadius;
|
|
7245
|
+
$[63] = borderStatus;
|
|
7246
|
+
$[64] = t21;
|
|
7247
|
+
$[65] = t22;
|
|
7248
|
+
} else t22 = $[65];
|
|
7249
|
+
let t23;
|
|
7250
|
+
if ($[66] !== t11 || $[67] !== t22) {
|
|
7251
|
+
t23 = /* @__PURE__ */ jsx(ThreadPrimitive.Root, {
|
|
7252
|
+
className: t11,
|
|
7253
|
+
children: t22
|
|
7254
|
+
});
|
|
7255
|
+
$[66] = t11;
|
|
7256
|
+
$[67] = t22;
|
|
7257
|
+
$[68] = t23;
|
|
7258
|
+
} else t23 = $[68];
|
|
7259
|
+
return t23;
|
|
7260
|
+
};
|
|
7261
|
+
function _temp$3(thread) {
|
|
7262
|
+
return thread.messages;
|
|
7263
|
+
}
|
|
7264
|
+
function _temp2(a) {
|
|
7265
|
+
return a.status === "success" || a.status === "error";
|
|
7266
|
+
}
|
|
7267
|
+
|
|
7268
|
+
//#endregion
|
|
7269
|
+
//#region src/components/pill/HistorySidebar.tsx
|
|
7270
|
+
/**
|
|
7271
|
+
* Sidebar panel showing conversation history and full thread view.
|
|
7272
|
+
* Opens from the right side of the screen.
|
|
7273
|
+
*/
|
|
7274
|
+
const HistorySidebar = (t0) => {
|
|
7275
|
+
const $ = c(30);
|
|
7276
|
+
const { isOpen, onClose, conversations: t1, selectedId, onSelectConversation, className } = t0;
|
|
7277
|
+
let t2;
|
|
7278
|
+
if ($[0] !== t1) {
|
|
7279
|
+
t2 = t1 === void 0 ? [] : t1;
|
|
7280
|
+
$[0] = t1;
|
|
7281
|
+
$[1] = t2;
|
|
7282
|
+
} else t2 = $[1];
|
|
7283
|
+
const conversations = t2;
|
|
7284
|
+
const [showFullThread, setShowFullThread] = useState(false);
|
|
7285
|
+
let t3;
|
|
7286
|
+
if ($[2] !== isOpen || $[3] !== onClose) {
|
|
7287
|
+
t3 = isOpen && /* @__PURE__ */ jsx("div", {
|
|
7288
|
+
className: "fixed inset-0 z-40 bg-black/50 backdrop-blur-sm",
|
|
7289
|
+
onClick: onClose,
|
|
7290
|
+
"aria-hidden": "true"
|
|
7291
|
+
});
|
|
7292
|
+
$[2] = isOpen;
|
|
7293
|
+
$[3] = onClose;
|
|
7294
|
+
$[4] = t3;
|
|
7295
|
+
} else t3 = $[4];
|
|
7296
|
+
const t4 = isOpen ? "translate-x-0" : "translate-x-full";
|
|
7297
|
+
let t5;
|
|
7298
|
+
if ($[5] !== className || $[6] !== t4) {
|
|
7299
|
+
t5 = cn("fixed top-0 right-0 z-50", "h-full w-full max-w-md", "bg-slate-900/95 backdrop-blur-xl", "border-l border-white/10", "shadow-2xl", "transform transition-transform duration-300 ease-out", t4, className);
|
|
7300
|
+
$[5] = className;
|
|
7301
|
+
$[6] = t4;
|
|
7302
|
+
$[7] = t5;
|
|
7303
|
+
} else t5 = $[7];
|
|
7304
|
+
let t6;
|
|
7305
|
+
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7306
|
+
t6 = /* @__PURE__ */ jsx(MessageSquare, { className: "h-5 w-5 text-white/70" });
|
|
7307
|
+
$[8] = t6;
|
|
7308
|
+
} else t6 = $[8];
|
|
7309
|
+
const t7 = showFullThread ? "Conversation" : "History";
|
|
7310
|
+
let t8;
|
|
7311
|
+
if ($[9] !== t7) {
|
|
7312
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
7313
|
+
className: "flex items-center gap-2",
|
|
7314
|
+
children: [t6, /* @__PURE__ */ jsx("h2", {
|
|
7315
|
+
className: "text-lg font-semibold text-white",
|
|
7316
|
+
children: t7
|
|
7317
|
+
})]
|
|
7318
|
+
});
|
|
7319
|
+
$[9] = t7;
|
|
7320
|
+
$[10] = t8;
|
|
7321
|
+
} else t8 = $[10];
|
|
7322
|
+
let t9;
|
|
7323
|
+
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7324
|
+
t9 = cn("p-1.5 rounded-lg", "hover:bg-white/10", "text-white/60 hover:text-white", "transition-colors duration-200");
|
|
7325
|
+
$[11] = t9;
|
|
7326
|
+
} else t9 = $[11];
|
|
7327
|
+
let t10;
|
|
7328
|
+
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7329
|
+
t10 = /* @__PURE__ */ jsx(X, { className: "h-5 w-5" });
|
|
7330
|
+
$[12] = t10;
|
|
7331
|
+
} else t10 = $[12];
|
|
7332
|
+
let t11;
|
|
7333
|
+
if ($[13] !== onClose) {
|
|
7334
|
+
t11 = /* @__PURE__ */ jsx("button", {
|
|
7335
|
+
type: "button",
|
|
7336
|
+
onClick: onClose,
|
|
7337
|
+
className: t9,
|
|
7338
|
+
"aria-label": "Close sidebar",
|
|
7339
|
+
children: t10
|
|
7340
|
+
});
|
|
7341
|
+
$[13] = onClose;
|
|
7342
|
+
$[14] = t11;
|
|
7343
|
+
} else t11 = $[14];
|
|
7344
|
+
let t12;
|
|
7345
|
+
if ($[15] !== t11 || $[16] !== t8) {
|
|
7346
|
+
t12 = /* @__PURE__ */ jsxs("div", {
|
|
7347
|
+
className: "flex items-center justify-between px-4 py-3 border-b border-white/10",
|
|
7348
|
+
children: [t8, t11]
|
|
7349
|
+
});
|
|
7350
|
+
$[15] = t11;
|
|
7351
|
+
$[16] = t8;
|
|
7352
|
+
$[17] = t12;
|
|
7353
|
+
} else t12 = $[17];
|
|
7354
|
+
let t13;
|
|
7355
|
+
if ($[18] !== conversations || $[19] !== onSelectConversation || $[20] !== selectedId || $[21] !== showFullThread) {
|
|
7356
|
+
t13 = /* @__PURE__ */ jsx("div", {
|
|
7357
|
+
className: "flex flex-col h-[calc(100%-60px)] overflow-hidden",
|
|
7358
|
+
children: showFullThread && selectedId ? /* @__PURE__ */ jsxs("div", {
|
|
7359
|
+
className: "flex-1 overflow-y-auto",
|
|
7360
|
+
children: [/* @__PURE__ */ jsx("button", {
|
|
7361
|
+
type: "button",
|
|
7362
|
+
onClick: () => setShowFullThread(false),
|
|
7363
|
+
className: "px-4 py-2 text-sm text-primary hover:underline",
|
|
7364
|
+
children: "← Back to history"
|
|
7365
|
+
}), /* @__PURE__ */ jsx(FullThreadView, {})]
|
|
7366
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
7367
|
+
className: "flex-1 overflow-y-auto p-4",
|
|
7368
|
+
children: conversations.length === 0 ? /* @__PURE__ */ jsx(EmptyHistory, {}) : /* @__PURE__ */ jsx(ConversationList, {
|
|
7369
|
+
conversations,
|
|
7370
|
+
selectedId,
|
|
7371
|
+
onSelect: (id) => {
|
|
7372
|
+
onSelectConversation?.(id);
|
|
7373
|
+
setShowFullThread(true);
|
|
7374
|
+
}
|
|
7375
|
+
})
|
|
7376
|
+
})
|
|
7377
|
+
});
|
|
7378
|
+
$[18] = conversations;
|
|
7379
|
+
$[19] = onSelectConversation;
|
|
7380
|
+
$[20] = selectedId;
|
|
7381
|
+
$[21] = showFullThread;
|
|
7382
|
+
$[22] = t13;
|
|
7383
|
+
} else t13 = $[22];
|
|
7384
|
+
let t14;
|
|
7385
|
+
if ($[23] !== t12 || $[24] !== t13 || $[25] !== t5) {
|
|
7386
|
+
t14 = /* @__PURE__ */ jsxs("div", {
|
|
7387
|
+
className: t5,
|
|
7388
|
+
role: "dialog",
|
|
7389
|
+
"aria-modal": "true",
|
|
7390
|
+
"aria-label": "Conversation history",
|
|
7391
|
+
children: [t12, t13]
|
|
7392
|
+
});
|
|
7393
|
+
$[23] = t12;
|
|
7394
|
+
$[24] = t13;
|
|
7395
|
+
$[25] = t5;
|
|
7396
|
+
$[26] = t14;
|
|
7397
|
+
} else t14 = $[26];
|
|
7398
|
+
let t15;
|
|
7399
|
+
if ($[27] !== t14 || $[28] !== t3) {
|
|
7400
|
+
t15 = /* @__PURE__ */ jsxs(Fragment, { children: [t3, t14] });
|
|
7401
|
+
$[27] = t14;
|
|
7402
|
+
$[28] = t3;
|
|
7403
|
+
$[29] = t15;
|
|
7404
|
+
} else t15 = $[29];
|
|
7405
|
+
return t15;
|
|
7406
|
+
};
|
|
7407
|
+
/**
|
|
7408
|
+
* Empty state when no conversations exist
|
|
7409
|
+
*/
|
|
7410
|
+
const EmptyHistory = () => {
|
|
7411
|
+
const $ = c(1);
|
|
7412
|
+
let t0;
|
|
7413
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7414
|
+
t0 = /* @__PURE__ */ jsxs("div", {
|
|
7415
|
+
className: "flex flex-col items-center justify-center h-full text-center px-8",
|
|
7416
|
+
children: [
|
|
7417
|
+
/* @__PURE__ */ jsx(MessageSquare, { className: "h-12 w-12 text-white/20 mb-4" }),
|
|
7418
|
+
/* @__PURE__ */ jsx("h3", {
|
|
7419
|
+
className: "text-lg font-medium text-white/80 mb-2",
|
|
7420
|
+
children: "No conversations yet"
|
|
7421
|
+
}),
|
|
7422
|
+
/* @__PURE__ */ jsx("p", {
|
|
7423
|
+
className: "text-sm text-white/50",
|
|
7424
|
+
children: "Your conversation history will appear here."
|
|
7425
|
+
})
|
|
7426
|
+
]
|
|
7427
|
+
});
|
|
7428
|
+
$[0] = t0;
|
|
7429
|
+
} else t0 = $[0];
|
|
7430
|
+
return t0;
|
|
7431
|
+
};
|
|
7432
|
+
/**
|
|
7433
|
+
* List of conversations grouped by date
|
|
7434
|
+
*/
|
|
7435
|
+
const ConversationList = (t0) => {
|
|
7436
|
+
const $ = c(11);
|
|
7437
|
+
const { conversations, selectedId, onSelect } = t0;
|
|
7438
|
+
let t1;
|
|
7439
|
+
let t2;
|
|
7440
|
+
if ($[0] !== conversations || $[1] !== onSelect || $[2] !== selectedId) {
|
|
7441
|
+
const grouped = groupByDate(conversations);
|
|
7442
|
+
t1 = "space-y-6";
|
|
7443
|
+
let t3$1;
|
|
7444
|
+
if ($[5] !== onSelect || $[6] !== selectedId) {
|
|
7445
|
+
t3$1 = (t4) => {
|
|
7446
|
+
const [date, convos] = t4;
|
|
7447
|
+
return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
7448
|
+
className: "text-xs font-medium text-white/50 uppercase tracking-wide mb-2",
|
|
7449
|
+
children: date
|
|
7450
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
7451
|
+
className: "space-y-1",
|
|
7452
|
+
children: convos.map((convo) => /* @__PURE__ */ jsxs("button", {
|
|
7453
|
+
type: "button",
|
|
7454
|
+
onClick: () => onSelect(convo.id),
|
|
7455
|
+
className: cn("w-full text-left p-3 rounded-lg", "hover:bg-white/10", "transition-colors duration-200", selectedId === convo.id && "bg-white/10"),
|
|
7456
|
+
children: [
|
|
7457
|
+
/* @__PURE__ */ jsx("div", {
|
|
7458
|
+
className: "font-medium text-white truncate",
|
|
7459
|
+
children: convo.title
|
|
7460
|
+
}),
|
|
7461
|
+
/* @__PURE__ */ jsx("div", {
|
|
7462
|
+
className: "text-xs text-white/50 truncate mt-0.5",
|
|
7463
|
+
children: convo.preview
|
|
7464
|
+
}),
|
|
7465
|
+
/* @__PURE__ */ jsxs("div", {
|
|
7466
|
+
className: "text-[10px] text-white/30 mt-1",
|
|
7467
|
+
children: [
|
|
7468
|
+
convo.messageCount,
|
|
7469
|
+
" messages • ",
|
|
7470
|
+
formatRelativeTime(convo.timestamp)
|
|
7471
|
+
]
|
|
7472
|
+
})
|
|
7473
|
+
]
|
|
7474
|
+
}, convo.id))
|
|
7475
|
+
})] }, date);
|
|
7476
|
+
};
|
|
7477
|
+
$[5] = onSelect;
|
|
7478
|
+
$[6] = selectedId;
|
|
7479
|
+
$[7] = t3$1;
|
|
7480
|
+
} else t3$1 = $[7];
|
|
7481
|
+
t2 = grouped.map(t3$1);
|
|
7482
|
+
$[0] = conversations;
|
|
7483
|
+
$[1] = onSelect;
|
|
7484
|
+
$[2] = selectedId;
|
|
7485
|
+
$[3] = t1;
|
|
7486
|
+
$[4] = t2;
|
|
7487
|
+
} else {
|
|
7488
|
+
t1 = $[3];
|
|
7489
|
+
t2 = $[4];
|
|
7490
|
+
}
|
|
7491
|
+
let t3;
|
|
7492
|
+
if ($[8] !== t1 || $[9] !== t2) {
|
|
7493
|
+
t3 = /* @__PURE__ */ jsx("div", {
|
|
7494
|
+
className: t1,
|
|
7495
|
+
children: t2
|
|
7496
|
+
});
|
|
7497
|
+
$[8] = t1;
|
|
7498
|
+
$[9] = t2;
|
|
7499
|
+
$[10] = t3;
|
|
7500
|
+
} else t3 = $[10];
|
|
7501
|
+
return t3;
|
|
7502
|
+
};
|
|
7503
|
+
/**
|
|
7504
|
+
* Full thread view using assistant-ui primitives
|
|
7505
|
+
*/
|
|
7506
|
+
const FullThreadView = () => {
|
|
7507
|
+
const $ = c(1);
|
|
7508
|
+
let t0;
|
|
7509
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7510
|
+
t0 = /* @__PURE__ */ jsx(ThreadPrimitive.Root, {
|
|
7511
|
+
className: "flex flex-col h-full",
|
|
7512
|
+
children: /* @__PURE__ */ jsx(ThreadPrimitive.Viewport, {
|
|
7513
|
+
className: "flex-1 overflow-y-auto px-4 py-4",
|
|
7514
|
+
children: /* @__PURE__ */ jsx(ThreadPrimitive.Messages, { components: {
|
|
7515
|
+
UserMessage: HistoryUserMessage,
|
|
7516
|
+
AssistantMessage: HistoryAssistantMessage
|
|
7517
|
+
} })
|
|
7518
|
+
})
|
|
7519
|
+
});
|
|
7520
|
+
$[0] = t0;
|
|
7521
|
+
} else t0 = $[0];
|
|
7522
|
+
return t0;
|
|
7523
|
+
};
|
|
7524
|
+
/**
|
|
7525
|
+
* User message component for history view
|
|
7526
|
+
*/
|
|
7527
|
+
const HistoryUserMessage = () => {
|
|
7528
|
+
const $ = c(1);
|
|
7529
|
+
let t0;
|
|
7530
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7531
|
+
t0 = /* @__PURE__ */ jsx(MessagePrimitive.Root, {
|
|
7532
|
+
asChild: true,
|
|
7533
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
7534
|
+
className: "flex justify-end mb-4",
|
|
7535
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
7536
|
+
className: "max-w-[80%] rounded-2xl bg-primary px-4 py-2 text-sm text-primary-foreground",
|
|
7537
|
+
children: /* @__PURE__ */ jsx(MessagePrimitive.Parts, {})
|
|
7538
|
+
})
|
|
7539
|
+
})
|
|
7540
|
+
});
|
|
7541
|
+
$[0] = t0;
|
|
7542
|
+
} else t0 = $[0];
|
|
7543
|
+
return t0;
|
|
7544
|
+
};
|
|
7545
|
+
/**
|
|
7546
|
+
* Assistant message component for history view
|
|
7547
|
+
*/
|
|
7548
|
+
const HistoryAssistantMessage = () => {
|
|
7549
|
+
const $ = c(1);
|
|
7550
|
+
let t0;
|
|
7551
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7552
|
+
t0 = /* @__PURE__ */ jsx(MessagePrimitive.Root, {
|
|
7553
|
+
asChild: true,
|
|
7554
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
7555
|
+
className: "mb-4",
|
|
7556
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
7557
|
+
className: "text-sm text-white/90",
|
|
7558
|
+
children: /* @__PURE__ */ jsx(MessagePrimitive.Parts, { components: {
|
|
7559
|
+
Text: MarkdownText,
|
|
7560
|
+
tools: { Fallback: ToolFallback }
|
|
7561
|
+
} })
|
|
7562
|
+
})
|
|
7563
|
+
})
|
|
7564
|
+
});
|
|
7565
|
+
$[0] = t0;
|
|
7566
|
+
} else t0 = $[0];
|
|
7567
|
+
return t0;
|
|
7568
|
+
};
|
|
7569
|
+
/**
|
|
7570
|
+
* Group conversations by date
|
|
7571
|
+
*/
|
|
7572
|
+
function groupByDate(conversations) {
|
|
7573
|
+
const groups = /* @__PURE__ */ new Map();
|
|
7574
|
+
const today = /* @__PURE__ */ new Date();
|
|
7575
|
+
today.setHours(0, 0, 0, 0);
|
|
7576
|
+
const yesterday = new Date(today);
|
|
7577
|
+
yesterday.setDate(yesterday.getDate() - 1);
|
|
7578
|
+
for (const convo of conversations) {
|
|
7579
|
+
const convoDate = new Date(convo.timestamp);
|
|
7580
|
+
convoDate.setHours(0, 0, 0, 0);
|
|
7581
|
+
let dateKey;
|
|
7582
|
+
if (convoDate.getTime() === today.getTime()) dateKey = "Today";
|
|
7583
|
+
else if (convoDate.getTime() === yesterday.getTime()) dateKey = "Yesterday";
|
|
7584
|
+
else if (convoDate.getTime() > today.getTime() - 10080 * 60 * 1e3) dateKey = "This Week";
|
|
7585
|
+
else dateKey = convoDate.toLocaleDateString("en-US", {
|
|
7586
|
+
month: "long",
|
|
7587
|
+
year: "numeric"
|
|
7588
|
+
});
|
|
7589
|
+
if (!groups.has(dateKey)) groups.set(dateKey, []);
|
|
7590
|
+
groups.get(dateKey).push(convo);
|
|
7591
|
+
}
|
|
7592
|
+
return Array.from(groups.entries());
|
|
7593
|
+
}
|
|
7594
|
+
/**
|
|
7595
|
+
* Format relative time
|
|
7596
|
+
*/
|
|
7597
|
+
function formatRelativeTime(date) {
|
|
7598
|
+
const diffMs = (/* @__PURE__ */ new Date()).getTime() - date.getTime();
|
|
7599
|
+
const diffMins = Math.floor(diffMs / 6e4);
|
|
7600
|
+
const diffHours = Math.floor(diffMs / 36e5);
|
|
7601
|
+
const diffDays = Math.floor(diffMs / 864e5);
|
|
7602
|
+
if (diffMins < 1) return "just now";
|
|
7603
|
+
if (diffMins < 60) return `${diffMins} min ago`;
|
|
7604
|
+
if (diffHours < 24) return `${diffHours} hr ago`;
|
|
7605
|
+
if (diffDays < 7) return `${diffDays} days ago`;
|
|
7606
|
+
return date.toLocaleDateString("en-US", {
|
|
7607
|
+
month: "short",
|
|
7608
|
+
day: "numeric"
|
|
7609
|
+
});
|
|
7610
|
+
}
|
|
7611
|
+
|
|
4705
7612
|
//#endregion
|
|
4706
7613
|
//#region src/generated/inline-styles.ts
|
|
4707
7614
|
/**
|
|
@@ -4710,7 +7617,7 @@ const MCPToolRegistry = () => {
|
|
|
4710
7617
|
*
|
|
4711
7618
|
* Contains the compiled CSS for the web component standalone build.
|
|
4712
7619
|
*/
|
|
4713
|
-
const WEBMCP_STYLES = "/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklch,var(--ring),transparent 50%)}}body{background-color:var(--background);color:var(--foreground)}}@layer components{.app-shell{z-index:0;background-color:var(--background);background-image:radial-gradient(80% 60% at -10% -10%,oklch(82% .15 270/.15),#0000),radial-gradient(60% 50% at 110% 10%,oklch(85% .1 220/.12),#0000),radial-gradient(50% 45% at 50% 120%,oklch(95% .02 250/.08),#0000);position:relative}.dark .app-shell{background-image:radial-gradient(80% 60% at -10% -10%,oklch(55% .14 270/.25),#0000),radial-gradient(60% 50% at 110% 15%,oklch(60% .12 220/.22),#0000),radial-gradient(50% 45% at 50% 120%,oklch(35% .04 250/.16),#0000)}.app-shell:before,.app-shell:after{content:\"\";pointer-events:none;filter:blur(32px);opacity:.6;z-index:-1;border-radius:9999px;position:absolute;inset:auto}.app-shell:before{background:radial-gradient(60% 60% at 40% 40%,oklch(80% .12 270/.3),#0000);width:260px;height:260px;top:-60px;left:-80px}.app-shell:after{background:radial-gradient(60% 60% at 60% 60%,oklch(84% .1 220/.25),#0000);width:300px;height:300px;bottom:-80px;right:-60px}.toolbar-surface{border-top:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-surface-top{border-bottom:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface-top{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface-top{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-inner{justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.toolbar-card{background:var(--card);justify-content:space-between;align-items:center;gap:.5rem;display:flex}@supports (color:color-mix(in lab, red, red)){.toolbar-card{background:color-mix(in oklch,var(--card),transparent 60%)}}.toolbar-card{border:1px solid var(--border);border-radius:.75rem;padding:.5rem .75rem}.toolbar-group{align-items:center;gap:.25rem;display:flex}.btn-toolbar-primary{background:linear-gradient(to right,var(--primary),var(--primary));border-radius:.75rem;align-items:center;gap:.5rem;height:2.25rem;padding:0 .75rem;display:flex}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 95%),color-mix(in oklch,var(--primary),transparent 90%))}}.btn-toolbar-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 80%)}}.btn-toolbar-primary{transition:all .2s}.btn-toolbar-primary:hover{background:linear-gradient(to right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary:hover{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,var(--primary),var(--primary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 70%)}}.btn-toolbar-icon-primary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 80%),color-mix(in oklch,var(--primary),transparent 70%))}}.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,var(--secondary),var(--secondary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 90%),color-mix(in oklch,var(--secondary),transparent 80%))}}.btn-toolbar-icon-secondary{border:1px solid var(--secondary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{border:1px solid color-mix(in oklch,var(--secondary),transparent 70%)}}.btn-toolbar-icon-secondary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,var(--secondary),var(--secondary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 80%),color-mix(in oklch,var(--secondary),transparent 70%))}}.badge-compact{height:1.25rem;padding:0 .5rem;font-size:10px}.badge-mini{height:1rem;padding:0 .375rem;font-size:10px}@keyframes shimmer-bg{0%{background-position:-1000px 0}to{background-position:1000px 0}}.shimmer{background:linear-gradient(90deg,#0000,#ffffff1a,#0000) 0 0/1000px 100%;animation:3s linear infinite shimmer-bg}.animate-shimmer{animation:2s linear infinite shimmer}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px rgba(var(--primary),.1)}50%{box-shadow:0 0 30px rgba(var(--primary),.2)}}.pulse-glow{animation:2s ease-in-out infinite pulse-glow}@keyframes gradient-x{0%,to{background-position:0%}50%{background-position:100%}}.animate-gradient-x{animation:8s ease-in-out infinite gradient-x}.gradient-text{background:linear-gradient(to right,var(--foreground),var(--foreground))}@supports (color:color-mix(in lab, red, red)){.gradient-text{background:linear-gradient(to right,var(--foreground),color-mix(in oklch,var(--foreground),transparent 30%))}}.gradient-text{-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.glass{background:color-mix(in oklch,var(--background),transparent 50%)}}.glass{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border)}@supports (color:color-mix(in lab, red, red)){.glass{border:1px solid color-mix(in oklch,var(--border),transparent 50%)}}.tool-card{transition:all .3s ease-out}.tool-card:hover{transform:scale(1.02);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.scrollbar-thin{scrollbar-width:thin}.scrollbar-thin::-webkit-scrollbar{width:6px;height:6px}.scrollbar-thin::-webkit-scrollbar-track{background:0 0}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb{background-color:color-mix(in oklch,var(--primary),transparent 80%)}}.scrollbar-thin::-webkit-scrollbar-thumb{border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch,var(--primary),transparent 70%)}}}@layer utilities{.\\@container{container-type:inline-size}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-12{top:calc(var(--spacing)*-12)}.top-1\\.5{top:calc(var(--spacing)*1.5)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1\\.5{right:calc(var(--spacing)*1.5)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-\\[50\\%\\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.my-auto{margin-block:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-14{width:calc(var(--spacing)*14);height:calc(var(--spacing)*14)}.size-\\[34px\\]{width:34px;height:34px}.size-full{width:100%;height:100%}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\\[600px\\]{height:600px}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\\[80dvh\\]{max-height:80dvh}.max-h-\\[80vh\\]{max-height:80vh}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-\\[60px\\]{min-height:60px}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-16{width:calc(var(--spacing)*16)}.w-\\[500px\\]{width:500px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-7\\/8{max-width:87.5%}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[80px\\]{max-width:80px}.max-w-\\[85\\%\\]{max-width:85%}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-\\[var\\(--thread-max-width\\)\\]{max-width:var(--thread-max-width)}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-auto{grid-auto-rows:auto}.grid-cols-\\[minmax\\(72px\\,1fr\\)_auto\\]{grid-template-columns:minmax(72px,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-center{align-self:center}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[14px\\]{border-radius:14px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.\\!rounded-t-none{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-blue-500\\/40{border-color:#3080ff66}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/40{border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.border-blue-500\\/60{border-color:#3080ff99}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/60{border-color:color-mix(in oklab,var(--color-blue-500)60%,transparent)}}.border-border,.border-border\\/20{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/20{border-color:color-mix(in oklab,var(--border)20%,transparent)}}.border-border\\/40{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/40{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive,.border-destructive\\/60{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/60{border-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.border-foreground\\/20{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\\/20{border-color:color-mix(in oklab,var(--foreground)20%,transparent)}}.border-green-500\\/40{border-color:#00c75866}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-green-500\\/60{border-color:#00c75899}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/60{border-color:color-mix(in oklab,var(--color-green-500)60%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\\/20{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\\/20{border-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.border-primary\\/60{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\\/60{border-color:color-mix(in oklab,var(--primary)60%,transparent)}}.border-red-500\\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/40{border-color:color-mix(in oklab,var(--color-red-500)40%,transparent)}}.border-red-500\\/60{border-color:#fb2c3699}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/60{border-color:color-mix(in oklab,var(--color-red-500)60%,transparent)}}.border-transparent{border-color:#0000}.border-white\\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\\[color-mix\\(in_oklab\\,rgb\\(var\\(--background\\)\\)_20\\%\\,transparent\\)\\]{background-color:rgb(var(--background))}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,rgb\\(var\\(--background\\)\\)_20\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,rgb(var(--background))20%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background,.bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/50{background-color:color-mix(in oklab,var(--background)50%,transparent)}}.bg-background\\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/95{background-color:color-mix(in oklab,var(--background)95%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\\/5{background-color:#3080ff0d}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/5{background-color:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.bg-blue-500\\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive,.bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\\/5{background-color:#00c7580d}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/5{background-color:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.bg-green-500\\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/15{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.bg-muted\\/5{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/5{background-color:color-mix(in oklab,var(--muted)5%,transparent)}}.bg-muted\\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover\\/95{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\\/95{background-color:color-mix(in oklab,var(--popover)95%,transparent)}}.bg-primary,.bg-primary\\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.bg-red-500\\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-500{background-color:var(--color-yellow-500)}.fill-foreground{fill:var(--foreground)}.stroke-\\[1\\.5px\\]{stroke-width:1.5px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0\\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.text-\\[17px\\]{font-size:17px}.text-\\[19px\\]{font-size:19px}.text-\\[21px\\]{font-size:21px}.text-\\[25px\\]{font-size:25px}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-blue-600{color:var(--color-blue-600)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-muted-foreground,.text-muted-foreground\\/65{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/65{color:color-mix(in oklab,var(--muted-foreground)65%,transparent)}}.text-muted-foreground\\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(34\\,197\\,94\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#22c55e4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(59\\,130\\,246\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(239\\,68\\,68\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#ef44444d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_12px_24px_-16px_rgba\\(37\\,99\\,235\\,0\\.55\\)\\]{--tw-shadow:0 12px 24px -16px var(--tw-shadow-color,#2563eb8c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_12px_24px_-18px_rgba\\(220\\,38\\,38\\,0\\.55\\)\\]{--tw-shadow:0 12px 24px -18px var(--tw-shadow-color,#dc26268c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\\[box-shadow\\:inset_0_1px_2px_0_rgba\\(255\\,255\\,255\\,0\\.15\\)\\]{box-shadow:inset 0 1px 2px #ffffff26}.shadow-black\\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\\:text-muted-foreground::placeholder,.placeholder\\:text-muted-foreground\\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-muted-foreground\\/70::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.first\\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.first\\:mt-3:first-child{margin-top:calc(var(--spacing)*3)}.first\\:mt-4:first-child{margin-top:calc(var(--spacing)*4)}.first\\:rounded-tl-lg:first-child{border-top-left-radius:var(--radius)}.first\\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\\:mb-5:last-child{margin-bottom:calc(var(--spacing)*5)}.last\\:mb-24:last-child{margin-bottom:calc(var(--spacing)*24)}.last\\:rounded-tr-lg:last-child{border-top-right-radius:var(--radius)}.last\\:border-r:last-child{border-right-style:var(--tw-border-style);border-right-width:1px}.empty\\:hidden:empty{display:none}.focus-within\\:border-ring\\/50:focus-within{border-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-ring\\/50:focus-within{border-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-within\\:border-white\\/20:focus-within{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-white\\/20:focus-within{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.focus-within\\:shadow-2xl:focus-within{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:shadow-md:focus-within{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:shadow-black\\/30:focus-within{--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.focus-within\\:shadow-black\\/30:focus-within{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)30%,transparent)var(--tw-shadow-alpha),transparent)}}.focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.focus-within\\:ring-offset-2:focus-within{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-accent:hover{border-color:var(--accent)}.hover\\:border-border\\/60:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\\:border-border\\/60:hover{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.hover\\:border-white\\/15:hover{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/15:hover{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.hover\\:\\!bg-white:hover{background-color:var(--color-white)!important}.hover\\:bg-accent:hover,.hover\\:bg-accent\\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\\:bg-destructive\\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\\:bg-destructive\\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\\:bg-destructive\\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\\:bg-muted-foreground\\/15:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-muted-foreground\\/15:hover{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.hover\\:bg-primary\\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\\:bg-secondary\\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\\:bg-transparent:hover{background-color:#0000}.hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\\:text-destructive:hover{color:var(--destructive)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-75:hover{opacity:.75}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_14px_24px_-14px_rgba\\(37\\,99\\,235\\,0\\.6\\)\\]:hover{--tw-shadow:0 14px 24px -14px var(--tw-shadow-color,#2563eb99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_14px_24px_-16px_rgba\\(220\\,38\\,38\\,0\\.6\\)\\]:hover{--tw-shadow:0 14px 24px -16px var(--tw-shadow-color,#dc262699);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:drop-shadow-2xl:hover{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.focus-visible\\:ring-primary\\/40:focus-visible{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-primary\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--primary)40%,transparent)}}.focus-visible\\:ring-ring:focus-visible,.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:invisible:disabled{visibility:hidden}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-floating\\:absolute[data-floating]{position:absolute}.data-floating\\:rounded-md[data-floating]{border-radius:calc(var(--radius) - 2px)}.data-floating\\:border[data-floating]{border-style:var(--tw-border-style);border-width:1px}.data-floating\\:bg-background[data-floating]{background-color:var(--background)}.data-floating\\:p-1[data-floating]{padding:calc(var(--spacing)*1)}.data-floating\\:shadow-sm[data-floating]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:1px}.data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.data-\\[orientation\\=vertical\\]\\:h-full[data-orientation=vertical]{height:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[state\\=closed\\]\\:scale-0[data-state=closed]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=closed\\]\\:scale-100[data-state=closed]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=closed\\]\\:-rotate-90[data-state=closed]{rotate:-90deg}.data-\\[state\\=closed\\]\\:rotate-0[data-state=closed]{rotate:none}.data-\\[state\\=open\\]\\:scale-0[data-state=open]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=open\\]\\:scale-100[data-state=open]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=open\\]\\:rotate-0[data-state=open]{rotate:none}.data-\\[state\\=open\\]\\:rotate-90[data-state=open]{rotate:90deg}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}@media (min-width:40rem){.sm\\:max-w-3xl{max-width:var(--container-3xl)}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:max-w-md{max-width:var(--container-md)}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:text-left{text-align:left}}@media (min-width:48rem){.md\\:pb-6{padding-bottom:calc(var(--spacing)*6)}}@container (min-width:28rem){.\\@md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\\@md\\:flex-col{flex-direction:column}}.dark\\:border-input:is(.dark *){border-color:var(--input)}.dark\\:border-muted-foreground\\/15:is(.dark *){border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:border-muted-foreground\\/15:is(.dark *){border-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.dark\\:bg-background:is(.dark *){background-color:var(--background)}.dark\\:bg-destructive\\/5:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-destructive\\/5:is(.dark *){background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.dark\\:bg-destructive\\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-destructive\\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\\:bg-input\\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-input\\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\\:bg-muted-foreground\\/20:is(.dark *){background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-muted-foreground\\/20:is(.dark *){background-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.dark\\:stroke-\\[2\\.5px\\]:is(.dark *){stroke-width:2.5px}.dark\\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\\:text-red-200:is(.dark *){color:var(--color-red-200)}@media (hover:hover){.dark\\:hover\\:bg-accent:is(.dark *):hover,.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\\:hover\\:bg-accent\\/60:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-accent\\/60:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\\:hover\\:bg-muted-foreground\\/30:is(.dark *):hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-muted-foreground\\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}}.dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\]\\:text-background svg{color:var(--background)}.\\[\\&_svg\\]\\:text-black svg{color:var(--color-black)}@media (hover:hover){.hover\\:\\[\\&_svg\\]\\:text-destructive:hover svg{color:var(--destructive)}}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&\\:last-child\\>td\\:first-child\\]\\:rounded-bl-lg:last-child>td:first-child{border-bottom-left-radius:var(--radius)}.\\[\\&\\:last-child\\>td\\:last-child\\]\\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:var(--radius)}.\\[\\&\\:nth-child\\(n\\+3\\)\\]\\:hidden:nth-child(n+3){display:none}@container (min-width:28rem){.\\@md\\:\\[\\&\\:nth-child\\(n\\+3\\)\\]\\:block:nth-child(n+3){display:block}}.\\[\\&\\:where\\(\\>\\*\\)\\]\\:col-start-2:where(){grid-column-start:2}.only\\:\\[\\&\\>\\#attachment-tile\\]\\:size-24:only-child>#attachment-tile{width:calc(var(--spacing)*24);height:calc(var(--spacing)*24)}.\\[\\&\\>\\.aui-thread-root\\]\\:bg-inherit>.aui-thread-root{background-color:inherit}.\\[\\&\\>a\\]\\:text-xs>a{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&\\>a\\]\\:no-underline>a{text-decoration-line:none}.\\[\\&\\>button\\]\\:rounded-full>button{border-radius:3.40282e38px}.\\[\\&\\>button\\]\\:bg-foreground\\/60>button{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.\\[\\&\\>button\\]\\:bg-foreground\\/60>button{background-color:color-mix(in oklab,var(--foreground)60%,transparent)}}.\\[\\&\\>button\\]\\:p-1>button{padding:calc(var(--spacing)*1)}.\\[\\&\\>button\\]\\:opacity-100>button{opacity:1}.\\[\\&\\>button\\]\\:\\!ring-0>button{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}@media (hover:hover){.\\[\\&\\>button\\]\\:hover\\:\\[\\&_svg\\]\\:text-destructive>button:hover svg{color:var(--destructive)}}.\\[\\&\\>li\\]\\:mt-1>li{margin-top:calc(var(--spacing)*1)}.\\[\\&\\>span\\]\\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&\\[align\\=center\\]\\]\\:text-center[align=center]{text-align:center}.\\[\\&\\[align\\=right\\]\\]\\:text-right[align=right]{text-align:right}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.85}}@keyframes smooth-slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gradient-shift{0%,to{transform:translate(0%)translateY(0%)}25%{transform:translate(100%)translateY(100%)}50%{transform:translate(100%)translateY(0%)}75%{transform:translate(0%)translateY(100%)}}@keyframes float{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(-30px)translate(20px)}66%{transform:translateY(20px)translate(-20px)}}@keyframes float-delayed{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(30px)translate(-30px)}66%{transform:translateY(-20px)translate(20px)}}.tool-card-transition{transition:all .4s cubic-bezier(.34,1.56,.64,1)}.tool-card-smooth{transition:all .35s cubic-bezier(.4,0,.2,1)}.animate-fadeInUp{opacity:0;animation:.5s ease-out forwards fadeInUp}.animate-gradient-shift{background-size:200% 200%;animation:20s ease-in-out infinite gradient-shift}.animate-float-slow{animation:20s ease-in-out infinite float}.animate-float-delayed{animation:25s ease-in-out 5s infinite float-delayed}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes aui-pulse{50%{opacity:.5}}:where(.aui-md[data-status=running]):empty:after,:where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,:where(.aui-md[data-status=running])>pre:last-child code:after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child):after{--aui-content:\"●\";content:var(--aui-content);margin-left:.25rem;margin-right:.25rem;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;animation:2s cubic-bezier(.4,0,.6,1) infinite aui-pulse}@property --tw-border-spacing-x{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-scale-x{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\"*\";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
7620
|
+
const WEBMCP_STYLES = "/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tool-border-angle:0deg}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-slate-900:oklch(20.8% .042 265.755);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklch,var(--ring),transparent 50%)}}body{background-color:var(--background);color:var(--foreground)}}@layer components{.app-shell{z-index:0;background-color:var(--background);background-image:radial-gradient(80% 60% at -10% -10%,oklch(82% .15 270/.15),#0000),radial-gradient(60% 50% at 110% 10%,oklch(85% .1 220/.12),#0000),radial-gradient(50% 45% at 50% 120%,oklch(95% .02 250/.08),#0000);position:relative}.dark .app-shell{background-image:radial-gradient(80% 60% at -10% -10%,oklch(55% .14 270/.25),#0000),radial-gradient(60% 50% at 110% 15%,oklch(60% .12 220/.22),#0000),radial-gradient(50% 45% at 50% 120%,oklch(35% .04 250/.16),#0000)}.app-shell:before,.app-shell:after{content:\"\";pointer-events:none;filter:blur(32px);opacity:.6;z-index:-1;border-radius:9999px;position:absolute;inset:auto}.app-shell:before{background:radial-gradient(60% 60% at 40% 40%,oklch(80% .12 270/.3),#0000);width:260px;height:260px;top:-60px;left:-80px}.app-shell:after{background:radial-gradient(60% 60% at 60% 60%,oklch(84% .1 220/.25),#0000);width:300px;height:300px;bottom:-80px;right:-60px}.toolbar-surface{border-top:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-surface-top{border-bottom:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface-top{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface-top{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-inner{justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.toolbar-card{background:var(--card);justify-content:space-between;align-items:center;gap:.5rem;display:flex}@supports (color:color-mix(in lab, red, red)){.toolbar-card{background:color-mix(in oklch,var(--card),transparent 60%)}}.toolbar-card{border:1px solid var(--border);border-radius:.75rem;padding:.5rem .75rem}.toolbar-group{align-items:center;gap:.25rem;display:flex}.btn-toolbar-primary{background:linear-gradient(to right,var(--primary),var(--primary));border-radius:.75rem;align-items:center;gap:.5rem;height:2.25rem;padding:0 .75rem;display:flex}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 95%),color-mix(in oklch,var(--primary),transparent 90%))}}.btn-toolbar-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 80%)}}.btn-toolbar-primary{transition:all .2s}.btn-toolbar-primary:hover{background:linear-gradient(to right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary:hover{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,var(--primary),var(--primary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 70%)}}.btn-toolbar-icon-primary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 80%),color-mix(in oklch,var(--primary),transparent 70%))}}.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,var(--secondary),var(--secondary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 90%),color-mix(in oklch,var(--secondary),transparent 80%))}}.btn-toolbar-icon-secondary{border:1px solid var(--secondary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{border:1px solid color-mix(in oklch,var(--secondary),transparent 70%)}}.btn-toolbar-icon-secondary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,var(--secondary),var(--secondary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 80%),color-mix(in oklch,var(--secondary),transparent 70%))}}.badge-compact{height:1.25rem;padding:0 .5rem;font-size:10px}.badge-mini{height:1rem;padding:0 .375rem;font-size:10px}@keyframes shimmer-bg{0%{background-position:-1000px 0}to{background-position:1000px 0}}.shimmer{background:linear-gradient(90deg,#0000,#ffffff1a,#0000) 0 0/1000px 100%;animation:3s linear infinite shimmer-bg}.animate-shimmer{animation:2s linear infinite shimmer}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px rgba(var(--primary),.1)}50%{box-shadow:0 0 30px rgba(var(--primary),.2)}}.pulse-glow{animation:2s ease-in-out infinite pulse-glow}@keyframes gradient-x{0%,to{background-position:0%}50%{background-position:100%}}.animate-gradient-x{animation:8s ease-in-out infinite gradient-x}.gradient-text{background:linear-gradient(to right,var(--foreground),var(--foreground))}@supports (color:color-mix(in lab, red, red)){.gradient-text{background:linear-gradient(to right,var(--foreground),color-mix(in oklch,var(--foreground),transparent 30%))}}.gradient-text{-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.glass{background:color-mix(in oklch,var(--background),transparent 50%)}}.glass{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border)}@supports (color:color-mix(in lab, red, red)){.glass{border:1px solid color-mix(in oklch,var(--border),transparent 50%)}}.tool-card{transition:all .3s ease-out}.tool-card:hover{transform:scale(1.02);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.scrollbar-thin{scrollbar-width:thin}.scrollbar-thin::-webkit-scrollbar{width:6px;height:6px}.scrollbar-thin::-webkit-scrollbar-track{background:0 0}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb{background-color:color-mix(in oklch,var(--primary),transparent 80%)}}.scrollbar-thin::-webkit-scrollbar-thumb{border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch,var(--primary),transparent 70%)}}}@layer utilities{.\\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-\\[1px\\]{inset:-1px}.inset-0{inset:calc(var(--spacing)*0)}.-top-12{top:calc(var(--spacing)*-12)}.top-0{top:calc(var(--spacing)*0)}.top-1\\.5{top:calc(var(--spacing)*1.5)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1\\.5{right:calc(var(--spacing)*1.5)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2,.left-\\[50\\%\\]{left:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.my-auto{margin-block:auto}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-1\\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-14{width:calc(var(--spacing)*14);height:calc(var(--spacing)*14)}.size-\\[34px\\]{width:34px;height:34px}.size-full{width:100%;height:100%}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\\[600px\\]{height:600px}.h-\\[calc\\(100\\%-60px\\)\\]{height:calc(100% - 60px)}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\\[80dvh\\]{max-height:80dvh}.max-h-\\[80vh\\]{max-height:80vh}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-\\[60px\\]{min-height:60px}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-\\[500px\\]{width:500px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-7\\/8{max-width:87.5%}.max-w-16{max-width:calc(var(--spacing)*16)}.max-w-24{max-width:calc(var(--spacing)*24)}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[80px\\]{max-width:80px}.max-w-\\[85\\%\\]{max-width:85%}.max-w-\\[100px\\]{max-width:100px}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-\\[var\\(--thread-max-width\\)\\]{max-width:var(--thread-max-width)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-auto{grid-auto-rows:auto}.grid-cols-\\[minmax\\(72px\\,1fr\\)_auto\\]{grid-template-columns:minmax(72px,1fr) auto}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-center{align-self:center}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[14px\\]{border-radius:14px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.\\!rounded-t-none{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-blue-500\\/40{border-color:#3080ff66}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/40{border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.border-blue-500\\/60{border-color:#3080ff99}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/60{border-color:color-mix(in oklab,var(--color-blue-500)60%,transparent)}}.border-border,.border-border\\/20{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/20{border-color:color-mix(in oklab,var(--border)20%,transparent)}}.border-border\\/40{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/40{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive,.border-destructive\\/60{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/60{border-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.border-foreground\\/20{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\\/20{border-color:color-mix(in oklab,var(--foreground)20%,transparent)}}.border-green-500\\/20{border-color:#00c75833}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/20{border-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.border-green-500\\/40{border-color:#00c75866}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-green-500\\/60{border-color:#00c75899}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/60{border-color:color-mix(in oklab,var(--color-green-500)60%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\\/20{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\\/20{border-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.border-primary\\/60{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\\/60{border-color:color-mix(in oklab,var(--primary)60%,transparent)}}.border-red-500\\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-red-500\\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/40{border-color:color-mix(in oklab,var(--color-red-500)40%,transparent)}}.border-red-500\\/60{border-color:#fb2c3699}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/60{border-color:color-mix(in oklab,var(--color-red-500)60%,transparent)}}.border-transparent{border-color:#0000}.border-white\\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\\[color-mix\\(in_oklab\\,rgb\\(var\\(--background\\)\\)_20\\%\\,transparent\\)\\]{background-color:rgb(var(--background))}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,rgb\\(var\\(--background\\)\\)_20\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,rgb(var(--background))20%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background,.bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/50{background-color:color-mix(in oklab,var(--background)50%,transparent)}}.bg-background\\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/95{background-color:color-mix(in oklab,var(--background)95%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\\/5{background-color:#3080ff0d}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/5{background-color:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.bg-blue-500\\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive,.bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-400\\/60{background-color:#05df7299}@supports (color:color-mix(in lab, red, red)){.bg-green-400\\/60{background-color:color-mix(in oklab,var(--color-green-400)60%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\\/5{background-color:#00c7580d}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/5{background-color:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.bg-green-500\\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/15{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.bg-muted\\/5{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/5{background-color:color-mix(in oklab,var(--muted)5%,transparent)}}.bg-muted\\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover\\/95{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\\/95{background-color:color-mix(in oklab,var(--popover)95%,transparent)}}.bg-primary,.bg-primary\\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.bg-red-500\\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-slate-900\\/95{background-color:#0f172bf2}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\\/95{background-color:color-mix(in oklab,var(--color-slate-900)95%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.fill-foreground{fill:var(--foreground)}.stroke-\\[1\\.5px\\]{stroke-width:1.5px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0\\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.text-\\[17px\\]{font-size:17px}.text-\\[19px\\]{font-size:19px}.text-\\[21px\\]{font-size:21px}.text-\\[25px\\]{font-size:25px}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-blue-400{color:var(--color-blue-400)}.text-blue-600{color:var(--color-blue-600)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-green-400{color:var(--color-green-400)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground,.text-muted-foreground\\/65{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/65{color:color-mix(in oklab,var(--muted-foreground)65%,transparent)}}.text-muted-foreground\\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.text-white\\/20{color:#fff3}@supports (color:color-mix(in lab, red, red)){.text-white\\/20{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.text-white\\/30{color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.text-white\\/30{color:color-mix(in oklab,var(--color-white)30%,transparent)}}.text-white\\/40{color:#fff6}@supports (color:color-mix(in lab, red, red)){.text-white\\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-white\\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(34\\,197\\,94\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#22c55e4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(59\\,130\\,246\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(239\\,68\\,68\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#ef44444d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_12px_24px_-16px_rgba\\(37\\,99\\,235\\,0\\.55\\)\\]{--tw-shadow:0 12px 24px -16px var(--tw-shadow-color,#2563eb8c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_12px_24px_-18px_rgba\\(220\\,38\\,38\\,0\\.55\\)\\]{--tw-shadow:0 12px 24px -18px var(--tw-shadow-color,#dc26268c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\\[box-shadow\\:inset_0_1px_2px_0_rgba\\(255\\,255\\,255\\,0\\.15\\)\\]{box-shadow:inset 0 1px 2px #ffffff26}.shadow-black\\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\\:text-muted-foreground::placeholder,.placeholder\\:text-muted-foreground\\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-muted-foreground\\/70::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.placeholder\\:text-white\\/40::placeholder{color:#fff6}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-white\\/40::placeholder{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.first\\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.first\\:mt-3:first-child{margin-top:calc(var(--spacing)*3)}.first\\:mt-4:first-child{margin-top:calc(var(--spacing)*4)}.first\\:rounded-tl-lg:first-child{border-top-left-radius:var(--radius)}.first\\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\\:mb-5:last-child{margin-bottom:calc(var(--spacing)*5)}.last\\:mb-24:last-child{margin-bottom:calc(var(--spacing)*24)}.last\\:rounded-tr-lg:last-child{border-top-right-radius:var(--radius)}.last\\:border-r:last-child{border-right-style:var(--tw-border-style);border-right-width:1px}.empty\\:hidden:empty{display:none}.focus-within\\:border-ring\\/50:focus-within{border-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-ring\\/50:focus-within{border-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-within\\:border-white\\/20:focus-within{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-white\\/20:focus-within{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.focus-within\\:bg-white\\/15:focus-within{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.focus-within\\:bg-white\\/15:focus-within{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.focus-within\\:shadow-2xl:focus-within{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:shadow-md:focus-within{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:shadow-black\\/30:focus-within{--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.focus-within\\:shadow-black\\/30:focus-within{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)30%,transparent)var(--tw-shadow-alpha),transparent)}}.focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.focus-within\\:ring-offset-2:focus-within{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-accent:hover{border-color:var(--accent)}.hover\\:border-border\\/60:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\\:border-border\\/60:hover{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.hover\\:border-white\\/15:hover{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/15:hover{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.hover\\:\\!bg-white:hover{background-color:var(--color-white)!important}.hover\\:bg-accent:hover,.hover\\:bg-accent\\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\\:bg-destructive\\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\\:bg-destructive\\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\\:bg-destructive\\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\\:bg-muted-foreground\\/15:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-muted-foreground\\/15:hover{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.hover\\:bg-primary\\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\\:bg-red-500\\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-red-500\\/30:hover{background-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.hover\\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\\:bg-secondary\\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\\:bg-transparent:hover{background-color:#0000}.hover\\:bg-white\\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\\:bg-white\\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\\:bg-white\\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\\:text-destructive:hover{color:var(--destructive)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-primary\\/80:hover{color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:text-primary\\/80:hover{color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\\:text-red-200:hover{color:var(--color-red-200)}.hover\\:text-red-300:hover{color:var(--color-red-300)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-white\\/70:hover{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.hover\\:text-white\\/70:hover{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.hover\\:text-white\\/80:hover{color:#fffc}@supports (color:color-mix(in lab, red, red)){.hover\\:text-white\\/80:hover{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-75:hover{opacity:.75}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_14px_24px_-14px_rgba\\(37\\,99\\,235\\,0\\.6\\)\\]:hover{--tw-shadow:0 14px 24px -14px var(--tw-shadow-color,#2563eb99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_14px_24px_-16px_rgba\\(220\\,38\\,38\\,0\\.6\\)\\]:hover{--tw-shadow:0 14px 24px -16px var(--tw-shadow-color,#dc262699);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:drop-shadow-2xl:hover{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.focus-visible\\:ring-primary\\/40:focus-visible{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-primary\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--primary)40%,transparent)}}.focus-visible\\:ring-ring:focus-visible,.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:invisible:disabled{visibility:hidden}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-floating\\:absolute[data-floating]{position:absolute}.data-floating\\:rounded-md[data-floating]{border-radius:calc(var(--radius) - 2px)}.data-floating\\:border[data-floating]{border-style:var(--tw-border-style);border-width:1px}.data-floating\\:bg-background[data-floating]{background-color:var(--background)}.data-floating\\:p-1[data-floating]{padding:calc(var(--spacing)*1)}.data-floating\\:shadow-sm[data-floating]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:1px}.data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.data-\\[orientation\\=vertical\\]\\:h-full[data-orientation=vertical]{height:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[state\\=closed\\]\\:scale-0[data-state=closed]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=closed\\]\\:scale-100[data-state=closed]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=closed\\]\\:-rotate-90[data-state=closed]{rotate:-90deg}.data-\\[state\\=closed\\]\\:rotate-0[data-state=closed]{rotate:none}.data-\\[state\\=open\\]\\:scale-0[data-state=open]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=open\\]\\:scale-100[data-state=open]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=open\\]\\:rotate-0[data-state=open]{rotate:none}.data-\\[state\\=open\\]\\:rotate-90[data-state=open]{rotate:90deg}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}@media (min-width:40rem){.sm\\:max-w-3xl{max-width:var(--container-3xl)}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:max-w-md{max-width:var(--container-md)}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:text-left{text-align:left}}@media (min-width:48rem){.md\\:pb-6{padding-bottom:calc(var(--spacing)*6)}}@container (min-width:28rem){.\\@md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\\@md\\:flex-col{flex-direction:column}}.dark\\:border-input:is(.dark *){border-color:var(--input)}.dark\\:border-muted-foreground\\/15:is(.dark *){border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:border-muted-foreground\\/15:is(.dark *){border-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.dark\\:bg-background:is(.dark *){background-color:var(--background)}.dark\\:bg-destructive\\/5:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-destructive\\/5:is(.dark *){background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.dark\\:bg-destructive\\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-destructive\\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\\:bg-input\\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-input\\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\\:bg-muted-foreground\\/20:is(.dark *){background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-muted-foreground\\/20:is(.dark *){background-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.dark\\:stroke-\\[2\\.5px\\]:is(.dark *){stroke-width:2.5px}.dark\\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\\:text-red-200:is(.dark *){color:var(--color-red-200)}@media (hover:hover){.dark\\:hover\\:bg-accent:is(.dark *):hover,.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\\:hover\\:bg-accent\\/60:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-accent\\/60:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\\:hover\\:bg-muted-foreground\\/30:is(.dark *):hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-muted-foreground\\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}}.dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\]\\:text-background svg{color:var(--background)}.\\[\\&_svg\\]\\:text-black svg{color:var(--color-black)}@media (hover:hover){.hover\\:\\[\\&_svg\\]\\:text-destructive:hover svg{color:var(--destructive)}}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&\\:last-child\\>td\\:first-child\\]\\:rounded-bl-lg:last-child>td:first-child{border-bottom-left-radius:var(--radius)}.\\[\\&\\:last-child\\>td\\:last-child\\]\\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:var(--radius)}.\\[\\&\\:nth-child\\(n\\+3\\)\\]\\:hidden:nth-child(n+3){display:none}@container (min-width:28rem){.\\@md\\:\\[\\&\\:nth-child\\(n\\+3\\)\\]\\:block:nth-child(n+3){display:block}}.\\[\\&\\:where\\(\\>\\*\\)\\]\\:col-start-2:where(){grid-column-start:2}.only\\:\\[\\&\\>\\#attachment-tile\\]\\:size-24:only-child>#attachment-tile{width:calc(var(--spacing)*24);height:calc(var(--spacing)*24)}.\\[\\&\\>\\.aui-thread-root\\]\\:bg-inherit>.aui-thread-root{background-color:inherit}.\\[\\&\\>a\\]\\:text-xs>a{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&\\>a\\]\\:no-underline>a{text-decoration-line:none}.\\[\\&\\>button\\]\\:rounded-full>button{border-radius:3.40282e38px}.\\[\\&\\>button\\]\\:bg-foreground\\/60>button{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.\\[\\&\\>button\\]\\:bg-foreground\\/60>button{background-color:color-mix(in oklab,var(--foreground)60%,transparent)}}.\\[\\&\\>button\\]\\:p-1>button{padding:calc(var(--spacing)*1)}.\\[\\&\\>button\\]\\:opacity-100>button{opacity:1}.\\[\\&\\>button\\]\\:\\!ring-0>button{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}@media (hover:hover){.\\[\\&\\>button\\]\\:hover\\:\\[\\&_svg\\]\\:text-destructive>button:hover svg{color:var(--destructive)}}.\\[\\&\\>li\\]\\:mt-0\\.5>li{margin-top:calc(var(--spacing)*.5)}.\\[\\&\\>li\\]\\:mt-1>li{margin-top:calc(var(--spacing)*1)}.\\[\\&\\>span\\]\\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&\\[align\\=center\\]\\]\\:text-center[align=center]{text-align:center}.\\[\\&\\[align\\=right\\]\\]\\:text-right[align=right]{text-align:right}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.85}}@keyframes smooth-slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gradient-shift{0%,to{transform:translate(0%)translateY(0%)}25%{transform:translate(100%)translateY(100%)}50%{transform:translate(100%)translateY(0%)}75%{transform:translate(0%)translateY(100%)}}@keyframes float{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(-30px)translate(20px)}66%{transform:translateY(20px)translate(-20px)}}@keyframes float-delayed{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(30px)translate(-30px)}66%{transform:translateY(-20px)translate(20px)}}.tool-card-transition{transition:all .4s cubic-bezier(.34,1.56,.64,1)}.tool-card-smooth{transition:all .35s cubic-bezier(.4,0,.2,1)}.animate-fadeInUp{opacity:0;animation:.5s ease-out forwards fadeInUp}.animate-gradient-shift{background-size:200% 200%;animation:20s ease-in-out infinite gradient-shift}.animate-float-slow{animation:20s ease-in-out infinite float}.animate-float-delayed{animation:25s ease-in-out 5s infinite float-delayed}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes tool-border-rotate{0%{--tool-border-angle:0deg}to{--tool-border-angle:360deg}}@property --tool-border-angle{syntax:\"<angle>\";inherits:false;initial-value:0deg}.tool-border-calling{background:conic-gradient(from var(--tool-border-angle),transparent 0deg,transparent 60deg,#3b82f680 90deg,#60a5fab3 120deg,#93c5fd80 150deg,transparent 180deg,transparent 360deg);animation:1.5s linear infinite tool-border-rotate}.tool-border-success{background:#22c55e66;box-shadow:0 0 12px #22c55e4d,inset 0 0 8px #22c55e1a}.tool-border-error{background:#ef444466;box-shadow:0 0 12px #ef44444d,inset 0 0 8px #ef44441a}@keyframes pulse-success{0%,to{box-shadow:0 0 #22c55e66}50%{box-shadow:0 0 0 8px #22c55e00}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.animate-pulse-success{animation:.6s ease-out pulse-success}.animate-shake{animation:.3s ease-out shake}@keyframes aui-pulse{50%{opacity:.5}}:where(.aui-md[data-status=running]):empty:after,:where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,:where(.aui-md[data-status=running])>pre:last-child code:after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child):after{--aui-content:\"●\";content:var(--aui-content);margin-left:.25rem;margin-right:.25rem;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;animation:2s cubic-bezier(.4,0,.6,1) infinite aui-pulse}.glass-pill{-webkit-backdrop-filter:blur(20px)saturate(150%);background:#0f172ad9;border:1px solid #ffffff0f;box-shadow:0 4px 16px #0003,inset 0 .5px #ffffff14}.glass-pill:before{content:\"\";border-radius:inherit;pointer-events:none;z-index:1;background:linear-gradient(#ffffff0a 0%,#0000 40%);position:absolute;inset:0}.glass-pill:after{display:none}.glass-pill-collapsed{-webkit-backdrop-filter:blur(12px);background:#ffffff1f;border:none;box-shadow:0 1px 4px #00000026}.glass-pill-collapsed:before,.glass-pill-collapsed:after{display:none}.glass-pill-hovered{-webkit-backdrop-filter:blur(16px)saturate(140%);background:#0f172acc;border:1px solid #ffffff0f;box-shadow:0 2px 12px #0000002e}.glass-pill-hovered:before,.glass-pill-hovered:after{display:none}@keyframes glass-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.glass-shimmer{background:linear-gradient(90deg,#ffffff14 0%,#ffffff26 50%,#ffffff14 100%) 0 0/200% 100%;animation:4s ease-in-out infinite glass-shimmer}@property --tw-border-spacing-x{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-space-y-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-scale-x{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\"*\";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
4714
7621
|
/**
|
|
4715
7622
|
* Inject the WebMCP styles into the document head.
|
|
4716
7623
|
* This is called automatically when registering the web component.
|
|
@@ -4761,67 +7668,117 @@ function injectStyles() {
|
|
|
4761
7668
|
* EmbeddedAgent React Component
|
|
4762
7669
|
*
|
|
4763
7670
|
* A fully self-contained chat widget with MCP tool support and optional voice mode.
|
|
7671
|
+
* Supports two view modes:
|
|
7672
|
+
* - 'pill': Action-first compact UI (default)
|
|
7673
|
+
* - 'modal': Traditional chat modal
|
|
7674
|
+
*
|
|
4764
7675
|
* Can be used as a React component or converted to a web component.
|
|
4765
7676
|
*/
|
|
4766
7677
|
const EmbeddedAgent = (t0) => {
|
|
4767
|
-
const $ = c(
|
|
4768
|
-
const { appId, apiBase, tokenEndpoint, autoConnectLocal: t1, onToolsChange, onVoiceError, onVoiceConnect, onVoiceDisconnect } = t0;
|
|
7678
|
+
const $ = c(23);
|
|
7679
|
+
const { appId, apiBase, tokenEndpoint, autoConnectLocal: t1, viewMode: t2, onToolsChange, onVoiceError, onVoiceConnect, onVoiceDisconnect } = t0;
|
|
4769
7680
|
const autoConnectLocal = t1 === void 0 ? true : t1;
|
|
7681
|
+
const viewMode = t2 === void 0 ? "pill" : t2;
|
|
4770
7682
|
const chatApi = apiBase ? `${apiBase}/api/chat` : "/api/chat";
|
|
4771
|
-
let
|
|
7683
|
+
let t3;
|
|
4772
7684
|
if ($[0] !== chatApi) {
|
|
4773
|
-
|
|
7685
|
+
t3 = new AssistantChatTransport({ api: chatApi });
|
|
4774
7686
|
$[0] = chatApi;
|
|
4775
|
-
$[1] =
|
|
4776
|
-
} else
|
|
4777
|
-
const transport =
|
|
4778
|
-
let
|
|
7687
|
+
$[1] = t3;
|
|
7688
|
+
} else t3 = $[1];
|
|
7689
|
+
const transport = t3;
|
|
7690
|
+
let t4;
|
|
4779
7691
|
if ($[2] !== transport) {
|
|
4780
|
-
|
|
7692
|
+
t4 = {
|
|
4781
7693
|
transport,
|
|
4782
7694
|
sendAutomaticallyWhen: _temp$2
|
|
4783
7695
|
};
|
|
4784
7696
|
$[2] = transport;
|
|
4785
|
-
$[3] =
|
|
4786
|
-
} else
|
|
4787
|
-
const runtime = useChatRuntime(
|
|
7697
|
+
$[3] = t4;
|
|
7698
|
+
} else t4 = $[3];
|
|
7699
|
+
const runtime = useChatRuntime(t4);
|
|
7700
|
+
const [isHistoryOpen, setIsHistoryOpen] = useState(false);
|
|
7701
|
+
let t5;
|
|
7702
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7703
|
+
t5 = [];
|
|
7704
|
+
$[4] = t5;
|
|
7705
|
+
} else t5 = $[4];
|
|
7706
|
+
const [conversations] = useState(t5);
|
|
7707
|
+
let t6;
|
|
7708
|
+
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7709
|
+
t6 = () => {
|
|
7710
|
+
setIsHistoryOpen(true);
|
|
7711
|
+
};
|
|
7712
|
+
$[5] = t6;
|
|
7713
|
+
} else t6 = $[5];
|
|
7714
|
+
const handleOpenHistory = t6;
|
|
7715
|
+
let t7;
|
|
7716
|
+
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7717
|
+
t7 = () => {
|
|
7718
|
+
setIsHistoryOpen(false);
|
|
7719
|
+
};
|
|
7720
|
+
$[6] = t7;
|
|
7721
|
+
} else t7 = $[6];
|
|
7722
|
+
const handleCloseHistory = t7;
|
|
4788
7723
|
const resolvedTokenEndpoint = tokenEndpoint || (apiBase ? `${apiBase}/api/realtime/session` : void 0);
|
|
4789
|
-
if (appId && typeof window !== "undefined") console.debug("[WebMCP] Initialized with app_id:", appId);
|
|
4790
|
-
let
|
|
4791
|
-
if ($[
|
|
4792
|
-
|
|
7724
|
+
if (appId && typeof window !== "undefined") console.debug("[WebMCP] Initialized with app_id:", appId, "viewMode:", viewMode);
|
|
7725
|
+
let t8;
|
|
7726
|
+
if ($[7] !== conversations || $[8] !== isHistoryOpen || $[9] !== resolvedTokenEndpoint || $[10] !== viewMode) {
|
|
7727
|
+
t8 = () => {
|
|
7728
|
+
if (viewMode === "pill") return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(AgentPill, {
|
|
7729
|
+
position: "bottom-center",
|
|
7730
|
+
onOpenHistory: handleOpenHistory,
|
|
7731
|
+
showVoiceButton: !!resolvedTokenEndpoint
|
|
7732
|
+
}), /* @__PURE__ */ jsx(HistorySidebar, {
|
|
7733
|
+
isOpen: isHistoryOpen,
|
|
7734
|
+
onClose: handleCloseHistory,
|
|
7735
|
+
conversations
|
|
7736
|
+
})] });
|
|
7737
|
+
return /* @__PURE__ */ jsx(AssistantModal, {});
|
|
7738
|
+
};
|
|
7739
|
+
$[7] = conversations;
|
|
7740
|
+
$[8] = isHistoryOpen;
|
|
7741
|
+
$[9] = resolvedTokenEndpoint;
|
|
7742
|
+
$[10] = viewMode;
|
|
7743
|
+
$[11] = t8;
|
|
7744
|
+
} else t8 = $[11];
|
|
7745
|
+
const renderUI = t8;
|
|
7746
|
+
let t9;
|
|
7747
|
+
if ($[12] !== onVoiceConnect || $[13] !== onVoiceDisconnect || $[14] !== onVoiceError || $[15] !== renderUI || $[16] !== resolvedTokenEndpoint || $[17] !== runtime) {
|
|
7748
|
+
t9 = resolvedTokenEndpoint ? /* @__PURE__ */ jsx(VoiceModeProvider, {
|
|
4793
7749
|
tokenEndpoint: resolvedTokenEndpoint,
|
|
4794
7750
|
onError: onVoiceError,
|
|
4795
7751
|
onConnect: onVoiceConnect,
|
|
4796
7752
|
onDisconnect: onVoiceDisconnect,
|
|
4797
7753
|
children: /* @__PURE__ */ jsxs(AssistantRuntimeProvider, {
|
|
4798
7754
|
runtime,
|
|
4799
|
-
children: [/* @__PURE__ */ jsx(MCPToolRegistry, {}),
|
|
7755
|
+
children: [/* @__PURE__ */ jsx(MCPToolRegistry, {}), renderUI()]
|
|
4800
7756
|
})
|
|
4801
7757
|
}) : /* @__PURE__ */ jsxs(AssistantRuntimeProvider, {
|
|
4802
7758
|
runtime,
|
|
4803
|
-
children: [/* @__PURE__ */ jsx(MCPToolRegistry, {}),
|
|
4804
|
-
});
|
|
4805
|
-
$[
|
|
4806
|
-
$[
|
|
4807
|
-
$[
|
|
4808
|
-
$[
|
|
4809
|
-
$[
|
|
4810
|
-
$[
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
|
|
7759
|
+
children: [/* @__PURE__ */ jsx(MCPToolRegistry, {}), renderUI()]
|
|
7760
|
+
});
|
|
7761
|
+
$[12] = onVoiceConnect;
|
|
7762
|
+
$[13] = onVoiceDisconnect;
|
|
7763
|
+
$[14] = onVoiceError;
|
|
7764
|
+
$[15] = renderUI;
|
|
7765
|
+
$[16] = resolvedTokenEndpoint;
|
|
7766
|
+
$[17] = runtime;
|
|
7767
|
+
$[18] = t9;
|
|
7768
|
+
} else t9 = $[18];
|
|
7769
|
+
let t10;
|
|
7770
|
+
if ($[19] !== autoConnectLocal || $[20] !== onToolsChange || $[21] !== t9) {
|
|
7771
|
+
t10 = /* @__PURE__ */ jsx(MCPToolsProvider, {
|
|
4815
7772
|
autoConnectLocal,
|
|
4816
7773
|
onToolsChange,
|
|
4817
|
-
children:
|
|
7774
|
+
children: t9
|
|
4818
7775
|
});
|
|
4819
|
-
$[
|
|
4820
|
-
$[
|
|
4821
|
-
$[
|
|
4822
|
-
$[
|
|
4823
|
-
} else
|
|
4824
|
-
return
|
|
7776
|
+
$[19] = autoConnectLocal;
|
|
7777
|
+
$[20] = onToolsChange;
|
|
7778
|
+
$[21] = t9;
|
|
7779
|
+
$[22] = t10;
|
|
7780
|
+
} else t10 = $[22];
|
|
7781
|
+
return t10;
|
|
4825
7782
|
};
|
|
4826
7783
|
/**
|
|
4827
7784
|
* Web Component Definition
|
|
@@ -4833,7 +7790,8 @@ const WebMCPAgentElement = r2wc(EmbeddedAgent, { props: {
|
|
|
4833
7790
|
appId: "string",
|
|
4834
7791
|
apiBase: "string",
|
|
4835
7792
|
tokenEndpoint: "string",
|
|
4836
|
-
autoConnectLocal: "boolean"
|
|
7793
|
+
autoConnectLocal: "boolean",
|
|
7794
|
+
viewMode: "string"
|
|
4837
7795
|
} });
|
|
4838
7796
|
/**
|
|
4839
7797
|
* Register the custom element
|
|
@@ -7038,5 +9996,5 @@ function useAssistantMCP(options) {
|
|
|
7038
9996
|
}
|
|
7039
9997
|
|
|
7040
9998
|
//#endregion
|
|
7041
|
-
export { AUDIO_FREQUENCY_BINS, AssistantMessage, AssistantModal, Avatar, AvatarFallback, AvatarImage, Badge, Button, ChatRuntimeProvider, Composer, ComposerAddAttachment, ComposerAttachments, DEBUG_LOGGING_ENABLED, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EmbeddedAgent, LiveWaveform, MCPToolRegistry, MCPToolsProvider, MCP_BASE_RECONNECT_DELAY_MS, MCP_MAX_RECONNECT_ATTEMPTS, MCP_MAX_RECONNECT_DELAY_MS, MCP_TAB_CONNECT_DELAY_MS, MarkdownText, OpenAIRealtimeService, REALTIME_DEFAULT_API_URL, REALTIME_DEFAULT_MODEL, REALTIME_DEFAULT_VOICE, RealtimeToolCard, RemoteMCPSettings, SOURCE_LOCAL, SOURCE_REMOTE, ScrollArea, ScrollBar, Separator, Thread, ThreadWithVoice, ToolFallback, Tooltip, TooltipContent, TooltipIconButton, TooltipProvider, TooltipTrigger, UserMessage, UserMessageAttachments, VoiceIndicator, VoiceModeProvider, WebMCPAgentElement, badgeVariants, buttonVariants, calculateReconnectDelay, cn, convertAssistantUIMessage, convertToAssistantUiMessages, createMCPTransport, debugLog, isAssistantTranscriptEventData, isAudioLevelData, isErrorEventData, isSessionStateEventData, isToolCallCompletedEventData, isToolCallStartedEventData, isUserTranscriptEventData, registerWebMCPAgent, shouldFallbackToSSE, useAgentChat, useAssistantMCP, useCloudflareRuntime, useMCPSource, useMCPTools, useOptionalMCPTools, useOptionalVoiceModeContext, useVoiceMode, useVoiceModeContext };
|
|
9999
|
+
export { AUDIO_FREQUENCY_BINS, ActionList, ActionStatusIcon, ActionSummary, AgentPill, AssistantMessage, AssistantModal, Avatar, AvatarFallback, AvatarImage, Badge, Button, ChatRuntimeProvider, Composer, ComposerAddAttachment, ComposerAttachments, CurrentActivity, DEBUG_LOGGING_ENABLED, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EmbeddedAgent, HistorySidebar, IdleIndicator, LiveWaveform, MCPToolRegistry, MCPToolsProvider, MCP_BASE_RECONNECT_DELAY_MS, MCP_MAX_RECONNECT_ATTEMPTS, MCP_MAX_RECONNECT_DELAY_MS, MCP_TAB_CONNECT_DELAY_MS, MarkdownText, MinimalComposer, OpenAIRealtimeService, PillComposer, PillContainer, REALTIME_DEFAULT_API_URL, REALTIME_DEFAULT_MODEL, REALTIME_DEFAULT_VOICE, RealtimeToolCard, RemoteMCPSettings, SOURCE_LOCAL, SOURCE_REMOTE, ScrollArea, ScrollBar, Separator, SummaryBlock, Thread, ThreadWithVoice, ToolFallback, ToolStatusBorder, Tooltip, TooltipContent, TooltipIconButton, TooltipProvider, TooltipTrigger, UserMessage, UserMessageAttachments, VoiceIndicator, VoiceModeProvider, WebMCPAgentElement, WelcomeMessage, badgeVariants, buttonVariants, calculateReconnectDelay, cn, convertAssistantUIMessage, convertToAssistantUiMessages, createMCPTransport, debugLog, humanizeToolName, isAssistantTranscriptEventData, isAudioLevelData, isErrorEventData, isSessionStateEventData, isToolCallCompletedEventData, isToolCallStartedEventData, isUserTranscriptEventData, registerWebMCPAgent, shouldFallbackToSSE, useActionStats, useActions, useAgentChat, useAssistantMCP, useCloudflareRuntime, useCurrentAction, useMCPSource, useMCPTools, useOptionalMCPTools, useOptionalVoiceModeContext, useRecentActions, useVoiceMode, useVoiceModeContext };
|
|
7042
10000
|
//# sourceMappingURL=index.js.map
|