@mcp-b/embedded-agent 1.0.0 → 1.1.0
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.js +1377 -1191
- package/dist/index.js.map +1 -1
- package/dist/styles/globals.css +1 -1
- package/dist/web-component-standalone.iife.js +5 -5
- package/dist/web-component.js +1377 -1191
- package/dist/web-component.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c } from "react/compiler-runtime";
|
|
2
2
|
import r2wc from "@r2wc/react-to-web-component";
|
|
3
|
-
import { AssistantRuntimeProvider, ComposerPrimitive, MessagePrimitive, ThreadPrimitive, useAssistantTool, useComposer, useComposerRuntime, useThread, useThreadRuntime
|
|
4
|
-
import { AlertCircle, AlertTriangle, Camera, Check, CheckCircle2, ChevronDown, ChevronDownIcon, ChevronUpIcon, Copy, FileText, GripHorizontal, Loader2, Mic, MicOff, MousePointer, Navigation, Pause, PenLine, PhoneOff, Search, Send, Shield, ShieldOff, Square, Trash2, Wrench, X } from "lucide-react";
|
|
3
|
+
import { AssistantRuntimeProvider, ComposerPrimitive, MessagePrimitive, ThreadPrimitive, useAssistantTool, useComposer, useComposerRuntime, useThread, useThreadRuntime } from "@assistant-ui/react";
|
|
4
|
+
import { AlertCircle, AlertTriangle, Camera, Check, CheckCircle2, ChevronDown, ChevronDownIcon, ChevronUpIcon, Copy, Expand, FileText, GripHorizontal, Loader2, Mic, MicOff, Minimize, MousePointer, Navigation, Pause, PenLine, PhoneOff, Search, Send, Shield, ShieldOff, Square, Trash2, Wrench, X } from "lucide-react";
|
|
5
5
|
import { AnimatePresence, motion, useDragControls, useReducedMotion } from "motion/react";
|
|
6
6
|
import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
7
7
|
import { clsx } from "clsx";
|
|
@@ -103,8 +103,12 @@ const COMPOSER_MAX_CHARS = 4e3;
|
|
|
103
103
|
/** Border radius values for pill states */
|
|
104
104
|
const PILL_BORDER_RADIUS = {
|
|
105
105
|
pill: "9999px",
|
|
106
|
-
rounded: "
|
|
106
|
+
rounded: "16px",
|
|
107
|
+
inner: "10px",
|
|
108
|
+
small: "6px"
|
|
107
109
|
};
|
|
110
|
+
/** Maximum number of prompt bubbles to show above collapsed pill */
|
|
111
|
+
const MAX_PROMPT_BUBBLES = 3;
|
|
108
112
|
/** Debounce/delay values in milliseconds */
|
|
109
113
|
const UI_TIMING = {
|
|
110
114
|
hoverDebounce: 100,
|
|
@@ -123,6 +127,23 @@ const DRAG_OPACITY = {
|
|
|
123
127
|
dragging: .3,
|
|
124
128
|
normal: 1
|
|
125
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
* Full-screen mode sizing configuration.
|
|
132
|
+
* Uses viewport units for responsive full-screen layout.
|
|
133
|
+
*/
|
|
134
|
+
const FULL_SCREEN_CONFIG = {
|
|
135
|
+
maxWidth: "640px",
|
|
136
|
+
widthPercent: 95,
|
|
137
|
+
heightPercent: 85,
|
|
138
|
+
padding: 16
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Pinch gesture configuration for two-finger expand/collapse.
|
|
142
|
+
*/
|
|
143
|
+
const PINCH_GESTURE_CONFIG = {
|
|
144
|
+
threshold: .3,
|
|
145
|
+
minInitialDistance: 50
|
|
146
|
+
};
|
|
126
147
|
/** ARIA label IDs for accessibility */
|
|
127
148
|
const ARIA_IDS = {
|
|
128
149
|
pillTitle: "agent-pill-title",
|
|
@@ -136,7 +157,9 @@ const ARIA_LABELS = {
|
|
|
136
157
|
endVoiceSession: "End voice session",
|
|
137
158
|
dragHandle: "Drag to reposition",
|
|
138
159
|
sendMessage: "Send message",
|
|
139
|
-
voiceInput: "Start voice input"
|
|
160
|
+
voiceInput: "Start voice input",
|
|
161
|
+
expandFullScreen: "Expand to full screen",
|
|
162
|
+
collapseFullScreen: "Collapse from full screen"
|
|
140
163
|
};
|
|
141
164
|
/** Production API base URL for WebMCP chat and token server */
|
|
142
165
|
const WEBMCP_PRODUCTION_API_BASE = "https://webmcp-agent-playground.alexmnahas.workers.dev";
|
|
@@ -429,12 +452,13 @@ function _temp4$5(t0) {
|
|
|
429
452
|
* Uses compact styling with max-height and scrolling for long responses.
|
|
430
453
|
*/
|
|
431
454
|
const SummaryBlock = (t0) => {
|
|
432
|
-
const $ = c(
|
|
433
|
-
const { summary, isSuccess, isError, actions, className } = t0;
|
|
455
|
+
const $ = c(32);
|
|
456
|
+
const { summary, isSuccess, isError, actions, className, isFullScreen: t1 } = t0;
|
|
457
|
+
const isFullScreen = t1 === void 0 ? false : t1;
|
|
434
458
|
const [copied, setCopied] = useState(false);
|
|
435
|
-
let
|
|
459
|
+
let t2;
|
|
436
460
|
if ($[0] !== summary) {
|
|
437
|
-
|
|
461
|
+
t2 = async () => {
|
|
438
462
|
try {
|
|
439
463
|
await navigator.clipboard.writeText(summary);
|
|
440
464
|
setCopied(true);
|
|
@@ -442,112 +466,124 @@ const SummaryBlock = (t0) => {
|
|
|
442
466
|
} catch {}
|
|
443
467
|
};
|
|
444
468
|
$[0] = summary;
|
|
445
|
-
$[1] =
|
|
446
|
-
} else
|
|
447
|
-
const handleCopy =
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
let t5;
|
|
452
|
-
if ($[2] !== className || $[3] !== t2 || $[4] !== t3 || $[5] !== t4) {
|
|
453
|
-
t5 = cn("rounded-xl p-3 relative group", t2, t3, t4, className);
|
|
469
|
+
$[1] = t2;
|
|
470
|
+
} else t2 = $[1];
|
|
471
|
+
const handleCopy = t2;
|
|
472
|
+
let t3;
|
|
473
|
+
if ($[2] !== className) {
|
|
474
|
+
t3 = cn("rounded-lg p-2 relative group", "bg-white/5", className);
|
|
454
475
|
$[2] = className;
|
|
455
|
-
$[3] =
|
|
456
|
-
|
|
476
|
+
$[3] = t3;
|
|
477
|
+
} else t3 = $[3];
|
|
478
|
+
let t4;
|
|
479
|
+
if ($[4] !== handleCopy) {
|
|
480
|
+
t4 = (e) => {
|
|
481
|
+
e.stopPropagation();
|
|
482
|
+
handleCopy();
|
|
483
|
+
};
|
|
484
|
+
$[4] = handleCopy;
|
|
457
485
|
$[5] = t4;
|
|
486
|
+
} else t4 = $[5];
|
|
487
|
+
let t5;
|
|
488
|
+
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
489
|
+
t5 = cn("absolute top-1.5 right-1.5 z-10", "p-1.5 sm:p-1 rounded", "opacity-50 sm:opacity-0 sm:group-hover:opacity-100", "hover:bg-white/10 active:bg-white/15", "text-white/40 hover:text-white/60", "transition-all duration-150");
|
|
458
490
|
$[6] = t5;
|
|
459
491
|
} else t5 = $[6];
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
492
|
+
const t6 = copied ? "Copied!" : "Copy response";
|
|
493
|
+
let t7;
|
|
494
|
+
if ($[7] !== copied) {
|
|
495
|
+
t7 = copied ? /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5 sm:h-3 sm:w-3 text-white/70" }) : /* @__PURE__ */ jsx(Copy, { className: "h-3.5 w-3.5 sm:h-3 sm:w-3" });
|
|
496
|
+
$[7] = copied;
|
|
497
|
+
$[8] = t7;
|
|
498
|
+
} else t7 = $[8];
|
|
466
499
|
let t8;
|
|
467
|
-
if ($[
|
|
468
|
-
t8 =
|
|
469
|
-
$[8] = copied;
|
|
470
|
-
$[9] = t8;
|
|
471
|
-
} else t8 = $[9];
|
|
472
|
-
let t9;
|
|
473
|
-
if ($[10] !== handleCopy || $[11] !== t7 || $[12] !== t8) {
|
|
474
|
-
t9 = /* @__PURE__ */ jsx("button", {
|
|
500
|
+
if ($[9] !== t4 || $[10] !== t6 || $[11] !== t7) {
|
|
501
|
+
t8 = /* @__PURE__ */ jsx("button", {
|
|
475
502
|
type: "button",
|
|
476
|
-
onClick:
|
|
477
|
-
className:
|
|
478
|
-
"aria-label":
|
|
479
|
-
children:
|
|
503
|
+
onClick: t4,
|
|
504
|
+
className: t5,
|
|
505
|
+
"aria-label": t6,
|
|
506
|
+
children: t7
|
|
480
507
|
});
|
|
481
|
-
$[
|
|
508
|
+
$[9] = t4;
|
|
509
|
+
$[10] = t6;
|
|
482
510
|
$[11] = t7;
|
|
483
511
|
$[12] = t8;
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
className: "flex items-center gap-2 mb-2",
|
|
512
|
+
} else t8 = $[12];
|
|
513
|
+
let t9;
|
|
514
|
+
if ($[13] !== isError || $[14] !== isSuccess) {
|
|
515
|
+
t9 = (isSuccess || isError) && /* @__PURE__ */ jsxs("div", {
|
|
516
|
+
className: "flex items-center gap-1.5 mb-1.5",
|
|
490
517
|
children: [
|
|
491
|
-
isSuccess && /* @__PURE__ */ jsx(CheckCircle2, { className: "h-
|
|
492
|
-
isError && /* @__PURE__ */ jsx(AlertCircle, { className: "h-
|
|
518
|
+
isSuccess && /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3.5 w-3.5 text-white/60" }),
|
|
519
|
+
isError && /* @__PURE__ */ jsx(AlertCircle, { className: "h-3.5 w-3.5 text-white/60" }),
|
|
493
520
|
/* @__PURE__ */ jsx("span", {
|
|
494
|
-
className:
|
|
521
|
+
className: "text-[11px] font-medium text-white/70",
|
|
495
522
|
children: isSuccess ? "Done" : "Error"
|
|
496
523
|
})
|
|
497
524
|
]
|
|
498
525
|
});
|
|
499
|
-
$[
|
|
500
|
-
$[
|
|
501
|
-
$[
|
|
502
|
-
} else
|
|
526
|
+
$[13] = isError;
|
|
527
|
+
$[14] = isSuccess;
|
|
528
|
+
$[15] = t9;
|
|
529
|
+
} else t9 = $[15];
|
|
530
|
+
const t10 = !isFullScreen && "max-h-32 sm:max-h-24";
|
|
503
531
|
let t11;
|
|
504
|
-
if ($[
|
|
505
|
-
t11 =
|
|
532
|
+
if ($[16] !== t10) {
|
|
533
|
+
t11 = cn("overflow-y-auto scrollbar-thin scroll-touch", t10);
|
|
534
|
+
$[16] = t10;
|
|
506
535
|
$[17] = t11;
|
|
507
536
|
} else t11 = $[17];
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
content: summary,
|
|
516
|
-
className: "text-white/90",
|
|
517
|
-
compact: true
|
|
518
|
-
})
|
|
537
|
+
const t12 = !isFullScreen;
|
|
538
|
+
let t13;
|
|
539
|
+
if ($[18] !== summary || $[19] !== t12) {
|
|
540
|
+
t13 = /* @__PURE__ */ jsx(PillMarkdown, {
|
|
541
|
+
content: summary,
|
|
542
|
+
className: "text-white/80",
|
|
543
|
+
compact: t12
|
|
519
544
|
});
|
|
520
545
|
$[18] = summary;
|
|
521
546
|
$[19] = t12;
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
if ($[20] !== actions) {
|
|
525
|
-
t13 = actions && actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
526
|
-
className: "flex flex-wrap gap-2 mt-3 pt-2 border-t border-white/10",
|
|
527
|
-
children: actions.map(_temp2$9)
|
|
528
|
-
});
|
|
529
|
-
$[20] = actions;
|
|
530
|
-
$[21] = t13;
|
|
531
|
-
} else t13 = $[21];
|
|
547
|
+
$[20] = t13;
|
|
548
|
+
} else t13 = $[20];
|
|
532
549
|
let t14;
|
|
533
|
-
if ($[
|
|
534
|
-
t14 = /* @__PURE__ */
|
|
535
|
-
className:
|
|
550
|
+
if ($[21] !== t11 || $[22] !== t13) {
|
|
551
|
+
t14 = /* @__PURE__ */ jsx("div", {
|
|
552
|
+
className: t11,
|
|
553
|
+
children: t13
|
|
554
|
+
});
|
|
555
|
+
$[21] = t11;
|
|
556
|
+
$[22] = t13;
|
|
557
|
+
$[23] = t14;
|
|
558
|
+
} else t14 = $[23];
|
|
559
|
+
let t15;
|
|
560
|
+
if ($[24] !== actions) {
|
|
561
|
+
t15 = actions && actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
562
|
+
className: "flex flex-wrap gap-1.5 mt-2 pt-1.5 border-t border-white/5",
|
|
563
|
+
children: actions.map(_temp$12)
|
|
564
|
+
});
|
|
565
|
+
$[24] = actions;
|
|
566
|
+
$[25] = t15;
|
|
567
|
+
} else t15 = $[25];
|
|
568
|
+
let t16;
|
|
569
|
+
if ($[26] !== t14 || $[27] !== t15 || $[28] !== t3 || $[29] !== t8 || $[30] !== t9) {
|
|
570
|
+
t16 = /* @__PURE__ */ jsxs("div", {
|
|
571
|
+
className: t3,
|
|
536
572
|
children: [
|
|
573
|
+
t8,
|
|
537
574
|
t9,
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
t13
|
|
575
|
+
t14,
|
|
576
|
+
t15
|
|
541
577
|
]
|
|
542
578
|
});
|
|
543
|
-
$[
|
|
544
|
-
$[
|
|
545
|
-
$[
|
|
546
|
-
$[
|
|
547
|
-
$[
|
|
548
|
-
$[
|
|
549
|
-
} else
|
|
550
|
-
return
|
|
579
|
+
$[26] = t14;
|
|
580
|
+
$[27] = t15;
|
|
581
|
+
$[28] = t3;
|
|
582
|
+
$[29] = t8;
|
|
583
|
+
$[30] = t9;
|
|
584
|
+
$[31] = t16;
|
|
585
|
+
} else t16 = $[31];
|
|
586
|
+
return t16;
|
|
551
587
|
};
|
|
552
588
|
/**
|
|
553
589
|
* Hook to get the latest summary from the thread
|
|
@@ -555,7 +591,7 @@ const SummaryBlock = (t0) => {
|
|
|
555
591
|
*/
|
|
556
592
|
function useLatestSummary() {
|
|
557
593
|
const $ = c(2);
|
|
558
|
-
const messages = useThread(
|
|
594
|
+
const messages = useThread(_temp2$9);
|
|
559
595
|
let t0;
|
|
560
596
|
if ($[0] !== messages) {
|
|
561
597
|
bb0: {
|
|
@@ -563,12 +599,12 @@ function useLatestSummary() {
|
|
|
563
599
|
t0 = null;
|
|
564
600
|
break bb0;
|
|
565
601
|
}
|
|
566
|
-
const lastAssistantMessage = [...messages].reverse().find(
|
|
602
|
+
const lastAssistantMessage = [...messages].reverse().find(_temp3$4);
|
|
567
603
|
if (!lastAssistantMessage) {
|
|
568
604
|
t0 = null;
|
|
569
605
|
break bb0;
|
|
570
606
|
}
|
|
571
|
-
const lastText = lastAssistantMessage.content.filter(
|
|
607
|
+
const lastText = lastAssistantMessage.content.filter(_temp4$4).at(-1);
|
|
572
608
|
if (!lastText) {
|
|
573
609
|
t0 = null;
|
|
574
610
|
break bb0;
|
|
@@ -583,13 +619,13 @@ function useLatestSummary() {
|
|
|
583
619
|
/**
|
|
584
620
|
* Welcome message for empty state
|
|
585
621
|
*/
|
|
586
|
-
function
|
|
622
|
+
function _temp4$4(c$1) {
|
|
587
623
|
return c$1.type === "text";
|
|
588
624
|
}
|
|
589
|
-
function
|
|
625
|
+
function _temp3$4(m) {
|
|
590
626
|
return m.role === "assistant";
|
|
591
627
|
}
|
|
592
|
-
function
|
|
628
|
+
function _temp2$9(thread) {
|
|
593
629
|
return thread.messages;
|
|
594
630
|
}
|
|
595
631
|
const WelcomeMessage = (t0) => {
|
|
@@ -629,13 +665,13 @@ const WelcomeMessage = (t0) => {
|
|
|
629
665
|
} else t4 = $[5];
|
|
630
666
|
return t4;
|
|
631
667
|
};
|
|
632
|
-
function _temp$12(
|
|
633
|
-
return e.stopPropagation();
|
|
634
|
-
}
|
|
635
|
-
function _temp2$9(action, i) {
|
|
668
|
+
function _temp$12(action, i) {
|
|
636
669
|
return /* @__PURE__ */ jsx("button", {
|
|
637
|
-
onClick:
|
|
638
|
-
|
|
670
|
+
onClick: (e_0) => {
|
|
671
|
+
e_0.stopPropagation();
|
|
672
|
+
action.onClick();
|
|
673
|
+
},
|
|
674
|
+
className: cn("px-2 py-1 rounded text-[11px] font-medium", "transition-colors duration-150", action.variant === "primary" ? "bg-white/90 text-slate-900 hover:bg-white" : "bg-white/10 text-white/70 hover:bg-white/15"),
|
|
639
675
|
children: action.label
|
|
640
676
|
}, i);
|
|
641
677
|
}
|
|
@@ -688,6 +724,16 @@ function formatArgs(args) {
|
|
|
688
724
|
* Used when user denies a tool execution
|
|
689
725
|
*/
|
|
690
726
|
const TOOL_DENIED_MESSAGE = "Tool execution denied by user";
|
|
727
|
+
/**
|
|
728
|
+
* Format a denial message with a user-provided reason.
|
|
729
|
+
* Used when user wants to tell the agent what to do differently.
|
|
730
|
+
*
|
|
731
|
+
* @param reason - The user's feedback explaining what to do differently
|
|
732
|
+
* @returns Formatted denial message with reason
|
|
733
|
+
*/
|
|
734
|
+
function formatToolDenialWithReason(reason) {
|
|
735
|
+
return `Tool denied: ${reason}`;
|
|
736
|
+
}
|
|
691
737
|
|
|
692
738
|
//#endregion
|
|
693
739
|
//#region src/hooks/useActions.ts
|
|
@@ -3057,10 +3103,12 @@ const VoiceThreadIntegrator = ({ children, sessionId, setSessionId, onConnect, o
|
|
|
3057
3103
|
if (!wasActiveRef.current && isActive && !sessionId) setSessionId(generateSessionId());
|
|
3058
3104
|
if (!wasActiveRef.current && voiceMode.isActive) onConnectRef.current?.();
|
|
3059
3105
|
if (wasActiveRef.current && !isActive) {
|
|
3060
|
-
if (lastAssistantTranscriptRef.current)
|
|
3061
|
-
|
|
3106
|
+
if (lastAssistantTranscriptRef.current) {
|
|
3107
|
+
addAssistantMessage(lastAssistantTranscriptRef.current);
|
|
3108
|
+
lastAssistantTranscriptRef.current = "";
|
|
3109
|
+
}
|
|
3062
3110
|
lastUserTranscriptRef.current = "";
|
|
3063
|
-
|
|
3111
|
+
resolveAllPendingToolCalls(threadRuntime, VOICE_TOOL_RESULT_MESSAGES.sessionEnded);
|
|
3064
3112
|
setSessionId(null);
|
|
3065
3113
|
onDisconnectRef.current?.(0);
|
|
3066
3114
|
}
|
|
@@ -3526,6 +3574,7 @@ const AgentUIProvider = ({ children, defaultOpen = false, defaultMode = "collaps
|
|
|
3526
3574
|
const [position, setPositionState] = useState(DEFAULT_POSITION);
|
|
3527
3575
|
const [hasUnread, setHasUnread] = useState(false);
|
|
3528
3576
|
const [isVoiceActive, setIsVoiceActiveState] = useState(false);
|
|
3577
|
+
const [isFullScreen, setIsFullScreen] = useState(false);
|
|
3529
3578
|
const onOpenChangeRef = useRef(onOpenChange);
|
|
3530
3579
|
const onModeChangeRef = useRef(onModeChange);
|
|
3531
3580
|
onOpenChangeRef.current = onOpenChange;
|
|
@@ -3563,18 +3612,29 @@ const AgentUIProvider = ({ children, defaultOpen = false, defaultMode = "collaps
|
|
|
3563
3612
|
const collapse = useCallback(() => {
|
|
3564
3613
|
setUserModeState("collapsed");
|
|
3565
3614
|
setPositionState(DEFAULT_POSITION);
|
|
3615
|
+
setIsFullScreen(false);
|
|
3566
3616
|
onModeChangeRef.current?.("collapsed");
|
|
3567
3617
|
}, []);
|
|
3568
3618
|
const expand = useCallback(() => {
|
|
3569
3619
|
setUserModeState("composing");
|
|
3570
3620
|
onModeChangeRef.current?.("composing");
|
|
3571
3621
|
}, []);
|
|
3622
|
+
const enterFullScreen = useCallback(() => {
|
|
3623
|
+
setIsFullScreen(true);
|
|
3624
|
+
}, []);
|
|
3625
|
+
const exitFullScreen = useCallback(() => {
|
|
3626
|
+
setIsFullScreen(false);
|
|
3627
|
+
}, []);
|
|
3628
|
+
const toggleFullScreen = useCallback(() => {
|
|
3629
|
+
setIsFullScreen((prev_0) => !prev_0);
|
|
3630
|
+
}, []);
|
|
3572
3631
|
const value = useMemo(() => ({
|
|
3573
3632
|
isOpen,
|
|
3574
3633
|
userMode,
|
|
3575
3634
|
position,
|
|
3576
3635
|
hasUnread,
|
|
3577
3636
|
isVoiceActive,
|
|
3637
|
+
isFullScreen,
|
|
3578
3638
|
setOpen,
|
|
3579
3639
|
toggleOpen,
|
|
3580
3640
|
setUserMode,
|
|
@@ -3584,13 +3644,17 @@ const AgentUIProvider = ({ children, defaultOpen = false, defaultMode = "collaps
|
|
|
3584
3644
|
markUnread,
|
|
3585
3645
|
setVoiceActive,
|
|
3586
3646
|
collapse,
|
|
3587
|
-
expand
|
|
3647
|
+
expand,
|
|
3648
|
+
enterFullScreen,
|
|
3649
|
+
exitFullScreen,
|
|
3650
|
+
toggleFullScreen
|
|
3588
3651
|
}), [
|
|
3589
3652
|
isOpen,
|
|
3590
3653
|
userMode,
|
|
3591
3654
|
position,
|
|
3592
3655
|
hasUnread,
|
|
3593
3656
|
isVoiceActive,
|
|
3657
|
+
isFullScreen,
|
|
3594
3658
|
setOpen,
|
|
3595
3659
|
toggleOpen,
|
|
3596
3660
|
setUserMode,
|
|
@@ -3600,7 +3664,10 @@ const AgentUIProvider = ({ children, defaultOpen = false, defaultMode = "collaps
|
|
|
3600
3664
|
markUnread,
|
|
3601
3665
|
setVoiceActive,
|
|
3602
3666
|
collapse,
|
|
3603
|
-
expand
|
|
3667
|
+
expand,
|
|
3668
|
+
enterFullScreen,
|
|
3669
|
+
exitFullScreen,
|
|
3670
|
+
toggleFullScreen
|
|
3604
3671
|
]);
|
|
3605
3672
|
return /* @__PURE__ */ jsx(AgentUIContext.Provider, {
|
|
3606
3673
|
value,
|
|
@@ -3844,6 +3911,115 @@ function _temp2$6(t) {
|
|
|
3844
3911
|
return t.messages;
|
|
3845
3912
|
}
|
|
3846
3913
|
|
|
3914
|
+
//#endregion
|
|
3915
|
+
//#region src/hooks/usePinchGesture.ts
|
|
3916
|
+
/**
|
|
3917
|
+
* Calculate distance between two touch points
|
|
3918
|
+
*/
|
|
3919
|
+
function getTouchDistance(touch1, touch2) {
|
|
3920
|
+
const dx = touch2.clientX - touch1.clientX;
|
|
3921
|
+
const dy = touch2.clientY - touch1.clientY;
|
|
3922
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
3923
|
+
}
|
|
3924
|
+
/**
|
|
3925
|
+
* Hook for detecting two-finger pinch gestures.
|
|
3926
|
+
*
|
|
3927
|
+
* Implements pinch-to-expand (out) and pinch-to-collapse (in) detection
|
|
3928
|
+
* using native Touch Events for maximum compatibility.
|
|
3929
|
+
*
|
|
3930
|
+
* @example
|
|
3931
|
+
* ```tsx
|
|
3932
|
+
* const { handlers } = usePinchGesture({
|
|
3933
|
+
* onPinchOut: () => enterFullScreen(),
|
|
3934
|
+
* onPinchIn: () => exitFullScreen(),
|
|
3935
|
+
* enabled: isMobile && isExpanded,
|
|
3936
|
+
* })
|
|
3937
|
+
*
|
|
3938
|
+
* return <div {...handlers}>Content</div>
|
|
3939
|
+
* ```
|
|
3940
|
+
*/
|
|
3941
|
+
function usePinchGesture(t0) {
|
|
3942
|
+
const $ = c(14);
|
|
3943
|
+
const { onPinchOut, onPinchIn, enabled: t1, threshold: t2 } = t0;
|
|
3944
|
+
const enabled = t1 === void 0 ? true : t1;
|
|
3945
|
+
const threshold = t2 === void 0 ? PINCH_GESTURE_CONFIG.threshold : t2;
|
|
3946
|
+
let t3;
|
|
3947
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
3948
|
+
t3 = {
|
|
3949
|
+
initialDistance: null,
|
|
3950
|
+
lastDistance: null,
|
|
3951
|
+
isActive: false
|
|
3952
|
+
};
|
|
3953
|
+
$[0] = t3;
|
|
3954
|
+
} else t3 = $[0];
|
|
3955
|
+
const stateRef = useRef(t3);
|
|
3956
|
+
let t4;
|
|
3957
|
+
if ($[1] !== enabled) {
|
|
3958
|
+
t4 = (e) => {
|
|
3959
|
+
if (!enabled) return;
|
|
3960
|
+
if (e.touches.length === 2) {
|
|
3961
|
+
const distance = getTouchDistance(e.touches[0], e.touches[1]);
|
|
3962
|
+
if (distance >= PINCH_GESTURE_CONFIG.minInitialDistance) stateRef.current = {
|
|
3963
|
+
initialDistance: distance,
|
|
3964
|
+
lastDistance: distance,
|
|
3965
|
+
isActive: true
|
|
3966
|
+
};
|
|
3967
|
+
}
|
|
3968
|
+
};
|
|
3969
|
+
$[1] = enabled;
|
|
3970
|
+
$[2] = t4;
|
|
3971
|
+
} else t4 = $[2];
|
|
3972
|
+
const handleTouchStart = t4;
|
|
3973
|
+
let t5;
|
|
3974
|
+
if ($[3] !== enabled) {
|
|
3975
|
+
t5 = (e_0) => {
|
|
3976
|
+
if (!enabled || !stateRef.current.isActive) return;
|
|
3977
|
+
if (e_0.touches.length !== 2) return;
|
|
3978
|
+
const currentDistance = getTouchDistance(e_0.touches[0], e_0.touches[1]);
|
|
3979
|
+
stateRef.current.lastDistance = currentDistance;
|
|
3980
|
+
};
|
|
3981
|
+
$[3] = enabled;
|
|
3982
|
+
$[4] = t5;
|
|
3983
|
+
} else t5 = $[4];
|
|
3984
|
+
const handleTouchMove = t5;
|
|
3985
|
+
let t6;
|
|
3986
|
+
if ($[5] !== enabled || $[6] !== onPinchIn || $[7] !== onPinchOut || $[8] !== threshold) {
|
|
3987
|
+
t6 = (e_1) => {
|
|
3988
|
+
if (!enabled || !stateRef.current.isActive) return;
|
|
3989
|
+
const { initialDistance, lastDistance } = stateRef.current;
|
|
3990
|
+
if (e_1.touches.length < 2 && initialDistance !== null && lastDistance !== null) {
|
|
3991
|
+
const scaleDelta = (lastDistance - initialDistance) / initialDistance;
|
|
3992
|
+
if (scaleDelta > threshold) onPinchOut?.();
|
|
3993
|
+
else if (scaleDelta < -threshold) onPinchIn?.();
|
|
3994
|
+
stateRef.current = {
|
|
3995
|
+
initialDistance: null,
|
|
3996
|
+
lastDistance: null,
|
|
3997
|
+
isActive: false
|
|
3998
|
+
};
|
|
3999
|
+
}
|
|
4000
|
+
};
|
|
4001
|
+
$[5] = enabled;
|
|
4002
|
+
$[6] = onPinchIn;
|
|
4003
|
+
$[7] = onPinchOut;
|
|
4004
|
+
$[8] = threshold;
|
|
4005
|
+
$[9] = t6;
|
|
4006
|
+
} else t6 = $[9];
|
|
4007
|
+
const handleTouchEnd = t6;
|
|
4008
|
+
let t7;
|
|
4009
|
+
if ($[10] !== handleTouchEnd || $[11] !== handleTouchMove || $[12] !== handleTouchStart) {
|
|
4010
|
+
t7 = { handlers: {
|
|
4011
|
+
onTouchStart: handleTouchStart,
|
|
4012
|
+
onTouchMove: handleTouchMove,
|
|
4013
|
+
onTouchEnd: handleTouchEnd
|
|
4014
|
+
} };
|
|
4015
|
+
$[10] = handleTouchEnd;
|
|
4016
|
+
$[11] = handleTouchMove;
|
|
4017
|
+
$[12] = handleTouchStart;
|
|
4018
|
+
$[13] = t7;
|
|
4019
|
+
} else t7 = $[13];
|
|
4020
|
+
return t7;
|
|
4021
|
+
}
|
|
4022
|
+
|
|
3847
4023
|
//#endregion
|
|
3848
4024
|
//#region src/components/pill/ActivityIndicator.tsx
|
|
3849
4025
|
/**
|
|
@@ -4293,27 +4469,40 @@ const MCPToolRegistry = () => {
|
|
|
4293
4469
|
};
|
|
4294
4470
|
|
|
4295
4471
|
//#endregion
|
|
4296
|
-
//#region src/components/pill/
|
|
4472
|
+
//#region src/components/pill/ElicitationButtonBar.tsx
|
|
4297
4473
|
/**
|
|
4298
|
-
*
|
|
4474
|
+
* ElicitationButtonBar Component
|
|
4299
4475
|
*
|
|
4300
|
-
*
|
|
4301
|
-
* Shows the
|
|
4476
|
+
* Renders an approval card above the composer when a tool requires approval.
|
|
4477
|
+
* Shows the tool name, description, and input arguments so users know
|
|
4478
|
+
* exactly what they're approving.
|
|
4302
4479
|
*
|
|
4303
|
-
*
|
|
4304
|
-
*
|
|
4480
|
+
* - Accept: Executes the tool and returns the result
|
|
4481
|
+
* - Deny: Stops the thread entirely (user doesn't want to continue)
|
|
4305
4482
|
*/
|
|
4306
|
-
|
|
4483
|
+
/**
|
|
4484
|
+
* Approval card for tool execution that sits above the composer.
|
|
4485
|
+
* Shows tool name, description, and arguments when a tool requires approval.
|
|
4486
|
+
*
|
|
4487
|
+
* Returns null if there are no pending approvals.
|
|
4488
|
+
*/
|
|
4489
|
+
const ElicitationButtonBar = ({ className }) => {
|
|
4307
4490
|
const [isExecuting, setIsExecuting] = useState(false);
|
|
4308
|
-
const
|
|
4309
|
-
const
|
|
4491
|
+
const pendingToolCalls = usePendingToolCalls();
|
|
4492
|
+
const threadRuntime = useThreadRuntime();
|
|
4493
|
+
const { callTool, tools } = useMCPTools();
|
|
4494
|
+
if (pendingToolCalls.length === 0) return null;
|
|
4495
|
+
const firstTool = pendingToolCalls[0];
|
|
4496
|
+
const humanizedName = humanizeToolName(firstTool.toolName);
|
|
4497
|
+
const toolDescription = tools.find((t) => t.name === firstTool.toolName)?.description;
|
|
4498
|
+
const formattedArgs = Object.keys(firstTool.args).length > 0 ? formatArgs(firstTool.args) : null;
|
|
4310
4499
|
const getPartRuntime = () => {
|
|
4311
|
-
return (
|
|
4500
|
+
return (threadRuntime?.getMessageById(firstTool.messageId))?.getMessagePartByToolCallId(firstTool.toolCallId);
|
|
4312
4501
|
};
|
|
4313
|
-
const
|
|
4502
|
+
const handleAccept = async () => {
|
|
4314
4503
|
setIsExecuting(true);
|
|
4315
4504
|
try {
|
|
4316
|
-
const toolResult = await callTool(
|
|
4505
|
+
const toolResult = await callTool(firstTool.toolName, firstTool.args);
|
|
4317
4506
|
getPartRuntime()?.addToolResult(formatToolResult(toolResult));
|
|
4318
4507
|
} catch (error) {
|
|
4319
4508
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -4323,84 +4512,67 @@ const ApprovalBarItem = ({ tool }) => {
|
|
|
4323
4512
|
}
|
|
4324
4513
|
};
|
|
4325
4514
|
const handleDeny = () => {
|
|
4326
|
-
|
|
4515
|
+
resolveAllPendingToolCalls(threadRuntime, TOOL_DENIED_MESSAGE);
|
|
4516
|
+
threadRuntime.cancelRun();
|
|
4327
4517
|
};
|
|
4328
|
-
if (isExecuting) return /* @__PURE__ */
|
|
4329
|
-
className: "
|
|
4330
|
-
children:
|
|
4331
|
-
"
|
|
4332
|
-
/* @__PURE__ */ jsx(
|
|
4333
|
-
|
|
4334
|
-
] })]
|
|
4335
|
-
});
|
|
4336
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
4337
|
-
className: cn("flex items-center gap-3 rounded-xl px-4 py-3", "border border-amber-500/30 bg-amber-500/10"),
|
|
4338
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
4339
|
-
className: "flex min-w-0 flex-1 items-center gap-2",
|
|
4340
|
-
children: [/* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4 flex-shrink-0 text-amber-500" }), /* @__PURE__ */ jsxs("span", {
|
|
4341
|
-
className: "truncate text-sm text-white/90",
|
|
4518
|
+
if (isExecuting) return /* @__PURE__ */ jsx("div", {
|
|
4519
|
+
className: cn("rounded-xl border border-blue-500/30 bg-blue-500/10 px-3 py-2.5", className),
|
|
4520
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
4521
|
+
className: "flex items-center justify-center gap-2",
|
|
4522
|
+
children: [/* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin text-blue-400" }), /* @__PURE__ */ jsxs("span", {
|
|
4523
|
+
className: "text-sm text-white/80",
|
|
4342
4524
|
children: [
|
|
4525
|
+
"Executing ",
|
|
4343
4526
|
/* @__PURE__ */ jsx("span", {
|
|
4344
|
-
className: "font-medium text-
|
|
4345
|
-
children:
|
|
4527
|
+
className: "font-medium text-blue-400",
|
|
4528
|
+
children: humanizedName
|
|
4346
4529
|
}),
|
|
4347
|
-
"
|
|
4348
|
-
humanizeToolName(tool.toolName),
|
|
4349
|
-
"?"
|
|
4530
|
+
"..."
|
|
4350
4531
|
]
|
|
4351
4532
|
})]
|
|
4352
|
-
})
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4533
|
+
})
|
|
4534
|
+
});
|
|
4535
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
4536
|
+
className: cn("rounded-xl border border-amber-500/30 bg-amber-500/10 px-3 py-2.5", className),
|
|
4537
|
+
children: [
|
|
4538
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4539
|
+
className: "flex items-center gap-2",
|
|
4540
|
+
children: [/* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4 shrink-0 text-amber-500" }), /* @__PURE__ */ jsxs("span", {
|
|
4541
|
+
className: "text-sm text-white/90",
|
|
4542
|
+
children: [
|
|
4543
|
+
"Approve ",
|
|
4544
|
+
/* @__PURE__ */ jsx("span", {
|
|
4545
|
+
className: "font-medium text-amber-400",
|
|
4546
|
+
children: humanizedName
|
|
4547
|
+
}),
|
|
4548
|
+
"?"
|
|
4549
|
+
]
|
|
4550
|
+
})]
|
|
4551
|
+
}),
|
|
4552
|
+
toolDescription && /* @__PURE__ */ jsx("p", {
|
|
4553
|
+
className: "mt-1.5 pl-6 text-xs leading-relaxed text-white/50",
|
|
4554
|
+
children: toolDescription
|
|
4555
|
+
}),
|
|
4556
|
+
formattedArgs && /* @__PURE__ */ jsx("pre", {
|
|
4557
|
+
className: "mt-2 max-h-24 overflow-auto whitespace-pre-wrap rounded-lg bg-white/5 p-2 font-mono text-[11px] leading-relaxed text-white/60",
|
|
4558
|
+
children: formattedArgs
|
|
4559
|
+
}),
|
|
4560
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4561
|
+
className: "mt-2.5 flex items-center gap-2",
|
|
4562
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
4563
|
+
type: "button",
|
|
4564
|
+
onClick: handleDeny,
|
|
4565
|
+
className: cn("flex flex-1 items-center justify-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium", "border border-white/20 text-white/70", "transition-colors duration-150", "hover:border-red-500/50 hover:bg-red-500/10 hover:text-red-400", "active:scale-[0.98]"),
|
|
4566
|
+
children: [/* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5" }), "Deny"]
|
|
4567
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
4568
|
+
type: "button",
|
|
4569
|
+
onClick: handleAccept,
|
|
4570
|
+
className: cn("flex flex-1 items-center justify-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium", "border border-amber-500/50 bg-amber-500/20 text-amber-400", "transition-colors duration-150", "hover:border-amber-500 hover:bg-amber-500/30", "active:scale-[0.98]"),
|
|
4571
|
+
children: [/* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5" }), "Approve"]
|
|
4572
|
+
})]
|
|
4573
|
+
})
|
|
4574
|
+
]
|
|
4366
4575
|
});
|
|
4367
|
-
};
|
|
4368
|
-
/**
|
|
4369
|
-
* Approval bar that replaces the composer when a tool needs approval.
|
|
4370
|
-
* Shows the tool name with Approve/Deny buttons in a compact format.
|
|
4371
|
-
*
|
|
4372
|
-
* Uses usePendingToolCalls hook to derive state from thread.
|
|
4373
|
-
* Returns null if there are no pending approvals.
|
|
4374
|
-
*/
|
|
4375
|
-
const PillApprovalBar = (t0) => {
|
|
4376
|
-
const $ = c(7);
|
|
4377
|
-
const { className } = t0;
|
|
4378
|
-
const pendingToolCalls = usePendingToolCalls();
|
|
4379
|
-
if (pendingToolCalls.length === 0) return null;
|
|
4380
|
-
const firstTool = pendingToolCalls[0];
|
|
4381
|
-
let t1;
|
|
4382
|
-
if ($[0] !== className) {
|
|
4383
|
-
t1 = cn("", className);
|
|
4384
|
-
$[0] = className;
|
|
4385
|
-
$[1] = t1;
|
|
4386
|
-
} else t1 = $[1];
|
|
4387
|
-
let t2;
|
|
4388
|
-
if ($[2] !== firstTool) {
|
|
4389
|
-
t2 = /* @__PURE__ */ jsx(ApprovalBarItem, { tool: firstTool });
|
|
4390
|
-
$[2] = firstTool;
|
|
4391
|
-
$[3] = t2;
|
|
4392
|
-
} else t2 = $[3];
|
|
4393
|
-
let t3;
|
|
4394
|
-
if ($[4] !== t1 || $[5] !== t2) {
|
|
4395
|
-
t3 = /* @__PURE__ */ jsx("div", {
|
|
4396
|
-
className: t1,
|
|
4397
|
-
children: t2
|
|
4398
|
-
});
|
|
4399
|
-
$[4] = t1;
|
|
4400
|
-
$[5] = t2;
|
|
4401
|
-
$[6] = t3;
|
|
4402
|
-
} else t3 = $[6];
|
|
4403
|
-
return t3;
|
|
4404
4576
|
};
|
|
4405
4577
|
|
|
4406
4578
|
//#endregion
|
|
@@ -4439,145 +4611,184 @@ const CharacterCount = () => {
|
|
|
4439
4611
|
* Features auto-growing textarea and character count.
|
|
4440
4612
|
*/
|
|
4441
4613
|
const PillComposer = (t0) => {
|
|
4442
|
-
const $ = c(
|
|
4443
|
-
const { placeholder: t1, showVoiceButton: t2, isVoiceActive: t3, onVoiceToggle, showCharCount: t4, className } = t0;
|
|
4614
|
+
const $ = c(35);
|
|
4615
|
+
const { placeholder: t1, showVoiceButton: t2, isVoiceActive: t3, onVoiceToggle, showCharCount: t4, className, isEliciting: t5, onElicitationSubmit } = t0;
|
|
4444
4616
|
const placeholder = t1 === void 0 ? "Ask something..." : t1;
|
|
4445
4617
|
const showVoiceButton = t2 === void 0 ? false : t2;
|
|
4446
4618
|
const isVoiceActive = t3 === void 0 ? false : t3;
|
|
4447
4619
|
const showCharCount = t4 === void 0 ? true : t4;
|
|
4620
|
+
const isEliciting = t5 === void 0 ? false : t5;
|
|
4448
4621
|
const { isMobile } = useMobileDetect();
|
|
4449
4622
|
const inputRef = useRef(null);
|
|
4450
|
-
|
|
4623
|
+
const composerRuntime = useComposerRuntime();
|
|
4624
|
+
const effectivePlaceholder = isEliciting ? "Tell Char what to do differently" : placeholder;
|
|
4625
|
+
let t6;
|
|
4451
4626
|
if ($[0] !== isMobile) {
|
|
4452
|
-
|
|
4627
|
+
t6 = () => {
|
|
4453
4628
|
if (isMobile && inputRef.current) inputRef.current.blur();
|
|
4454
4629
|
};
|
|
4455
4630
|
$[0] = isMobile;
|
|
4456
|
-
$[1] =
|
|
4457
|
-
} else
|
|
4458
|
-
const handleSubmit =
|
|
4459
|
-
let t6;
|
|
4460
|
-
if ($[2] !== className) {
|
|
4461
|
-
t6 = cn("flex items-end gap-2", "rounded-2xl", "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);
|
|
4462
|
-
$[2] = className;
|
|
4463
|
-
$[3] = t6;
|
|
4464
|
-
} else t6 = $[3];
|
|
4631
|
+
$[1] = t6;
|
|
4632
|
+
} else t6 = $[1];
|
|
4633
|
+
const handleSubmit = t6;
|
|
4465
4634
|
let t7;
|
|
4635
|
+
if ($[2] !== composerRuntime || $[3] !== isMobile || $[4] !== onElicitationSubmit) {
|
|
4636
|
+
t7 = () => {
|
|
4637
|
+
const text = composerRuntime.getState().text.trim();
|
|
4638
|
+
if (text && onElicitationSubmit) {
|
|
4639
|
+
onElicitationSubmit(text);
|
|
4640
|
+
composerRuntime.setText("");
|
|
4641
|
+
if (isMobile && inputRef.current) inputRef.current.blur();
|
|
4642
|
+
}
|
|
4643
|
+
};
|
|
4644
|
+
$[2] = composerRuntime;
|
|
4645
|
+
$[3] = isMobile;
|
|
4646
|
+
$[4] = onElicitationSubmit;
|
|
4647
|
+
$[5] = t7;
|
|
4648
|
+
} else t7 = $[5];
|
|
4649
|
+
const handleElicitationSubmit = t7;
|
|
4466
4650
|
let t8;
|
|
4467
|
-
if ($[
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4651
|
+
if ($[6] !== handleElicitationSubmit || $[7] !== isEliciting) {
|
|
4652
|
+
t8 = (e) => {
|
|
4653
|
+
if (isEliciting && e.key === "Enter" && !e.shiftKey) {
|
|
4654
|
+
e.preventDefault();
|
|
4655
|
+
handleElicitationSubmit();
|
|
4656
|
+
}
|
|
4657
|
+
};
|
|
4658
|
+
$[6] = handleElicitationSubmit;
|
|
4659
|
+
$[7] = isEliciting;
|
|
4660
|
+
$[8] = t8;
|
|
4661
|
+
} else t8 = $[8];
|
|
4662
|
+
const handleKeyDown = t8;
|
|
4663
|
+
let t9;
|
|
4664
|
+
if ($[9] !== className) {
|
|
4665
|
+
t9 = cn("flex items-end gap-1.5", "rounded-xl", "bg-white/8 border border-white/8", "px-2 py-1", "focus-within:border-white/15 focus-within:bg-white/10", "transition-colors duration-150", className);
|
|
4666
|
+
$[9] = className;
|
|
4667
|
+
$[10] = t9;
|
|
4668
|
+
} else t9 = $[10];
|
|
4669
|
+
let t10;
|
|
4670
|
+
let t11;
|
|
4671
|
+
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
4672
|
+
t10 = cn("flex-1 min-w-0", "bg-transparent", "text-sm leading-[21px] text-white placeholder:text-white/40", "outline-none", "resize-none", "overflow-y-auto scroll-touch");
|
|
4673
|
+
t11 = { touchAction: "pan-y" };
|
|
4674
|
+
$[11] = t10;
|
|
4675
|
+
$[12] = t11;
|
|
4472
4676
|
} else {
|
|
4473
|
-
|
|
4474
|
-
|
|
4677
|
+
t10 = $[11];
|
|
4678
|
+
t11 = $[12];
|
|
4475
4679
|
}
|
|
4476
|
-
const
|
|
4477
|
-
let
|
|
4478
|
-
if ($[
|
|
4479
|
-
|
|
4680
|
+
const t12 = !isMobile;
|
|
4681
|
+
let t13;
|
|
4682
|
+
if ($[13] !== effectivePlaceholder || $[14] !== handleKeyDown || $[15] !== t12) {
|
|
4683
|
+
t13 = /* @__PURE__ */ jsx(ComposerPrimitive.Input, {
|
|
4480
4684
|
ref: inputRef,
|
|
4481
|
-
placeholder,
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
$[
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4685
|
+
placeholder: effectivePlaceholder,
|
|
4686
|
+
minRows: 1,
|
|
4687
|
+
maxRows: 6,
|
|
4688
|
+
className: t10,
|
|
4689
|
+
style: t11,
|
|
4690
|
+
autoFocus: t12,
|
|
4691
|
+
onPointerDownCapture: _temp2$4,
|
|
4692
|
+
onKeyDown: handleKeyDown
|
|
4693
|
+
});
|
|
4694
|
+
$[13] = effectivePlaceholder;
|
|
4695
|
+
$[14] = handleKeyDown;
|
|
4696
|
+
$[15] = t12;
|
|
4697
|
+
$[16] = t13;
|
|
4698
|
+
} else t13 = $[16];
|
|
4699
|
+
let t14;
|
|
4700
|
+
if ($[17] !== showCharCount) {
|
|
4701
|
+
t14 = showCharCount && /* @__PURE__ */ jsx(CharacterCount, {});
|
|
4702
|
+
$[17] = showCharCount;
|
|
4703
|
+
$[18] = t14;
|
|
4704
|
+
} else t14 = $[18];
|
|
4705
|
+
let t15;
|
|
4706
|
+
if ($[19] !== isVoiceActive || $[20] !== onVoiceToggle || $[21] !== showVoiceButton) {
|
|
4707
|
+
t15 = showVoiceButton && onVoiceToggle && /* @__PURE__ */ jsx("button", {
|
|
4501
4708
|
type: "button",
|
|
4502
4709
|
onClick: onVoiceToggle,
|
|
4503
|
-
className: cn("flex-shrink-0", "p-2
|
|
4710
|
+
className: cn("flex-shrink-0", "p-2 sm:p-1.5 rounded-full", "transition-colors duration-150", isVoiceActive ? "bg-white/20 text-white" : "hover:bg-white/10 text-white/50 hover:text-white/80"),
|
|
4504
4711
|
"aria-label": isVoiceActive ? "Stop voice input" : "Start voice input",
|
|
4505
|
-
children: /* @__PURE__ */ jsx(Mic, { className: "h-5 w-5 sm:h-4 sm:w-4" })
|
|
4712
|
+
children: /* @__PURE__ */ jsx(Mic, { className: "h-4.5 w-4.5 sm:h-4 sm:w-4" })
|
|
4506
4713
|
});
|
|
4507
|
-
$[
|
|
4508
|
-
$[
|
|
4509
|
-
$[
|
|
4510
|
-
$[
|
|
4511
|
-
} else
|
|
4512
|
-
let
|
|
4513
|
-
if ($[
|
|
4514
|
-
|
|
4515
|
-
$[15] = t13;
|
|
4516
|
-
} else t13 = $[15];
|
|
4517
|
-
let t14;
|
|
4518
|
-
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
|
4519
|
-
t14 = /* @__PURE__ */ jsx(ThreadPrimitive.If, {
|
|
4714
|
+
$[19] = isVoiceActive;
|
|
4715
|
+
$[20] = onVoiceToggle;
|
|
4716
|
+
$[21] = showVoiceButton;
|
|
4717
|
+
$[22] = t15;
|
|
4718
|
+
} else t15 = $[22];
|
|
4719
|
+
let t16;
|
|
4720
|
+
if ($[23] !== handleElicitationSubmit || $[24] !== isEliciting) {
|
|
4721
|
+
t16 = /* @__PURE__ */ jsx(ThreadPrimitive.If, {
|
|
4520
4722
|
running: false,
|
|
4521
|
-
children: /* @__PURE__ */ jsx(
|
|
4723
|
+
children: isEliciting ? /* @__PURE__ */ jsx("button", {
|
|
4724
|
+
type: "button",
|
|
4725
|
+
onClick: handleElicitationSubmit,
|
|
4726
|
+
className: cn("flex-shrink-0", "p-2 sm:p-1.5 rounded-full", "bg-white/90 text-slate-900", "hover:bg-white", "disabled:opacity-40 disabled:cursor-not-allowed", "transition-colors duration-150"),
|
|
4727
|
+
"aria-label": "Send feedback",
|
|
4728
|
+
children: /* @__PURE__ */ jsx(Send, { className: "h-4.5 w-4.5 sm:h-4 sm:w-4" })
|
|
4729
|
+
}) : /* @__PURE__ */ jsx(ComposerPrimitive.Send, {
|
|
4522
4730
|
asChild: true,
|
|
4523
4731
|
children: /* @__PURE__ */ jsx("button", {
|
|
4524
4732
|
type: "submit",
|
|
4525
|
-
className:
|
|
4733
|
+
className: cn("flex-shrink-0", "p-2 sm:p-1.5 rounded-full", "bg-white/90 text-slate-900", "hover:bg-white", "disabled:opacity-40 disabled:cursor-not-allowed", "transition-colors duration-150"),
|
|
4526
4734
|
"aria-label": "Send message",
|
|
4527
|
-
children: /* @__PURE__ */ jsx(Send, { className: "h-5 w-5 sm:h-4 sm:w-4" })
|
|
4735
|
+
children: /* @__PURE__ */ jsx(Send, { className: "h-4.5 w-4.5 sm:h-4 sm:w-4" })
|
|
4528
4736
|
})
|
|
4529
4737
|
})
|
|
4530
4738
|
});
|
|
4531
|
-
$[
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4539
|
-
|
|
4540
|
-
|
|
4739
|
+
$[23] = handleElicitationSubmit;
|
|
4740
|
+
$[24] = isEliciting;
|
|
4741
|
+
$[25] = t16;
|
|
4742
|
+
} else t16 = $[25];
|
|
4743
|
+
let t17;
|
|
4744
|
+
if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
|
|
4745
|
+
t17 = cn("flex-shrink-0", "p-2 sm:p-1.5 rounded-full", "bg-white/20 text-white", "hover:bg-white/30", "transition-colors duration-150");
|
|
4746
|
+
$[26] = t17;
|
|
4747
|
+
} else t17 = $[26];
|
|
4748
|
+
let t18;
|
|
4749
|
+
if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
|
|
4750
|
+
t18 = /* @__PURE__ */ jsx(ThreadPrimitive.If, {
|
|
4541
4751
|
running: true,
|
|
4542
4752
|
children: /* @__PURE__ */ jsx(ComposerPrimitive.Cancel, {
|
|
4543
4753
|
asChild: true,
|
|
4544
4754
|
children: /* @__PURE__ */ jsx("button", {
|
|
4545
4755
|
type: "button",
|
|
4546
|
-
className:
|
|
4756
|
+
className: t17,
|
|
4547
4757
|
"aria-label": "Stop generating",
|
|
4548
|
-
children: /* @__PURE__ */ jsx(Square, { className: "h-4
|
|
4758
|
+
children: /* @__PURE__ */ jsx(Square, { className: "h-4 w-4 sm:h-3.5 sm:w-3.5" })
|
|
4549
4759
|
})
|
|
4550
4760
|
})
|
|
4551
4761
|
});
|
|
4552
|
-
$[
|
|
4553
|
-
} else
|
|
4554
|
-
let
|
|
4555
|
-
if ($[
|
|
4556
|
-
|
|
4557
|
-
className:
|
|
4762
|
+
$[27] = t18;
|
|
4763
|
+
} else t18 = $[27];
|
|
4764
|
+
let t19;
|
|
4765
|
+
if ($[28] !== handleSubmit || $[29] !== t13 || $[30] !== t14 || $[31] !== t15 || $[32] !== t16 || $[33] !== t9) {
|
|
4766
|
+
t19 = /* @__PURE__ */ jsxs(ComposerPrimitive.Root, {
|
|
4767
|
+
className: t9,
|
|
4558
4768
|
onSubmit: handleSubmit,
|
|
4559
4769
|
children: [
|
|
4560
|
-
|
|
4561
|
-
t11,
|
|
4562
|
-
t12,
|
|
4770
|
+
t13,
|
|
4563
4771
|
t14,
|
|
4564
|
-
|
|
4772
|
+
t15,
|
|
4773
|
+
t16,
|
|
4774
|
+
t18
|
|
4565
4775
|
]
|
|
4566
4776
|
});
|
|
4567
|
-
$[
|
|
4568
|
-
$[
|
|
4569
|
-
$[
|
|
4570
|
-
$[
|
|
4571
|
-
$[
|
|
4572
|
-
$[
|
|
4573
|
-
|
|
4574
|
-
|
|
4777
|
+
$[28] = handleSubmit;
|
|
4778
|
+
$[29] = t13;
|
|
4779
|
+
$[30] = t14;
|
|
4780
|
+
$[31] = t15;
|
|
4781
|
+
$[32] = t16;
|
|
4782
|
+
$[33] = t9;
|
|
4783
|
+
$[34] = t19;
|
|
4784
|
+
} else t19 = $[34];
|
|
4785
|
+
return t19;
|
|
4575
4786
|
};
|
|
4576
4787
|
function _temp$6(c$1) {
|
|
4577
4788
|
return c$1.text;
|
|
4578
4789
|
}
|
|
4579
|
-
function _temp2$4(
|
|
4580
|
-
return
|
|
4790
|
+
function _temp2$4(e_0) {
|
|
4791
|
+
return e_0.stopPropagation();
|
|
4581
4792
|
}
|
|
4582
4793
|
|
|
4583
4794
|
//#endregion
|
|
@@ -4822,9 +5033,19 @@ const sizeSpring = {
|
|
|
4822
5033
|
damping: 35,
|
|
4823
5034
|
mass: .8
|
|
4824
5035
|
};
|
|
5036
|
+
const fullScreenTween = {
|
|
5037
|
+
type: "tween",
|
|
5038
|
+
duration: .35,
|
|
5039
|
+
ease: [
|
|
5040
|
+
.4,
|
|
5041
|
+
0,
|
|
5042
|
+
.2,
|
|
5043
|
+
1
|
|
5044
|
+
]
|
|
5045
|
+
};
|
|
4825
5046
|
const reducedMotionTransition = { duration: 0 };
|
|
4826
5047
|
const sizes = PILL_CONTAINER_SIZES;
|
|
4827
|
-
const containerVariants = {
|
|
5048
|
+
const containerVariants$1 = {
|
|
4828
5049
|
collapsed: {
|
|
4829
5050
|
width: clampSize(sizes.collapsed.width),
|
|
4830
5051
|
height: clampSize(sizes.collapsed.height),
|
|
@@ -4834,28 +5055,34 @@ const containerVariants = {
|
|
|
4834
5055
|
hovered: {
|
|
4835
5056
|
width: clampSize(sizes.hovered.width),
|
|
4836
5057
|
height: clampSize(sizes.hovered.height),
|
|
4837
|
-
padding: "0px
|
|
5058
|
+
padding: "0px 10px",
|
|
4838
5059
|
borderRadius: PILL_BORDER_RADIUS.pill
|
|
4839
5060
|
},
|
|
4840
5061
|
composing: {
|
|
4841
5062
|
width: clampSize(sizes.composing.width),
|
|
4842
5063
|
height: "auto",
|
|
4843
|
-
padding: "
|
|
5064
|
+
padding: "8px 10px",
|
|
4844
5065
|
borderRadius: PILL_BORDER_RADIUS.rounded
|
|
4845
5066
|
},
|
|
4846
5067
|
active: {
|
|
4847
5068
|
width: clampSize(sizes.active.width),
|
|
4848
5069
|
height: "auto",
|
|
4849
|
-
padding: "
|
|
5070
|
+
padding: "8px 10px",
|
|
4850
5071
|
borderRadius: PILL_BORDER_RADIUS.rounded
|
|
4851
5072
|
},
|
|
4852
5073
|
expanded: {
|
|
4853
5074
|
width: clampSize(sizes.expanded.width),
|
|
4854
5075
|
height: "auto",
|
|
4855
|
-
padding: "
|
|
5076
|
+
padding: "10px 10px",
|
|
4856
5077
|
borderRadius: PILL_BORDER_RADIUS.rounded
|
|
4857
5078
|
}
|
|
4858
5079
|
};
|
|
5080
|
+
const fullScreenVariant = {
|
|
5081
|
+
width: `min(${FULL_SCREEN_CONFIG.widthPercent}vw, ${FULL_SCREEN_CONFIG.maxWidth})`,
|
|
5082
|
+
height: `${FULL_SCREEN_CONFIG.heightPercent}vh`,
|
|
5083
|
+
padding: `${FULL_SCREEN_CONFIG.padding}px`,
|
|
5084
|
+
borderRadius: PILL_BORDER_RADIUS.rounded
|
|
5085
|
+
};
|
|
4859
5086
|
const contentVariants = {
|
|
4860
5087
|
hidden: { opacity: 0 },
|
|
4861
5088
|
visible: {
|
|
@@ -4906,349 +5133,180 @@ const barVariants = {
|
|
|
4906
5133
|
* - active: Agent is working
|
|
4907
5134
|
* - expanded: Full panel with summary/forms
|
|
4908
5135
|
*/
|
|
4909
|
-
const PillContainer = (
|
|
4910
|
-
const $ = c(83);
|
|
4911
|
-
const { mode, children, onModeChange, className } = t0;
|
|
5136
|
+
const PillContainer = ({ mode, children, onModeChange, isFullScreen = false, className }) => {
|
|
4912
5137
|
const [isHovered, setIsHovered] = useState(false);
|
|
4913
5138
|
const hoverTimeoutRef = useRef(null);
|
|
4914
5139
|
const prefersReducedMotion = useReducedMotion();
|
|
5140
|
+
const wasFullScreenRef = useRef(isFullScreen);
|
|
5141
|
+
const isTransitioningFullScreen = isFullScreen !== wasFullScreenRef.current;
|
|
5142
|
+
useEffect(() => {
|
|
5143
|
+
wasFullScreenRef.current = isFullScreen;
|
|
5144
|
+
}, [isFullScreen]);
|
|
4915
5145
|
const { isMobile } = useMobileDetect();
|
|
4916
5146
|
const isDialogActive = mode === "composing" || mode === "active" || mode === "expanded";
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
5147
|
+
const { containerRef: focusTrapRef, storeTrigger } = useFocusTrap({
|
|
5148
|
+
isActive: isDialogActive,
|
|
5149
|
+
onEscape: () => {
|
|
4920
5150
|
if (mode !== "active") onModeChange?.("collapsed");
|
|
4921
|
-
}
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
}
|
|
4926
|
-
let t2;
|
|
4927
|
-
if ($[3] !== isDialogActive || $[4] !== isMobile || $[5] !== t1) {
|
|
4928
|
-
t2 = {
|
|
4929
|
-
isActive: isDialogActive,
|
|
4930
|
-
onEscape: t1,
|
|
4931
|
-
autoFocus: true,
|
|
4932
|
-
returnFocus: true,
|
|
4933
|
-
skipInputFocusReturn: isMobile
|
|
4934
|
-
};
|
|
4935
|
-
$[3] = isDialogActive;
|
|
4936
|
-
$[4] = isMobile;
|
|
4937
|
-
$[5] = t1;
|
|
4938
|
-
$[6] = t2;
|
|
4939
|
-
} else t2 = $[6];
|
|
4940
|
-
const { containerRef: focusTrapRef, storeTrigger } = useFocusTrap(t2);
|
|
5151
|
+
},
|
|
5152
|
+
autoFocus: true,
|
|
5153
|
+
returnFocus: true,
|
|
5154
|
+
skipInputFocusReturn: isMobile
|
|
5155
|
+
});
|
|
4941
5156
|
const prevModeRef = useRef(mode);
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
4945
|
-
|
|
4946
|
-
if ((prevModeRef.current === "collapsed" || prevModeRef.current === "hovered") && (mode === "composing" || mode === "active" || mode === "expanded")) storeTrigger();
|
|
4947
|
-
prevModeRef.current = mode;
|
|
4948
|
-
};
|
|
4949
|
-
t4 = [mode, storeTrigger];
|
|
4950
|
-
$[7] = mode;
|
|
4951
|
-
$[8] = storeTrigger;
|
|
4952
|
-
$[9] = t3;
|
|
4953
|
-
$[10] = t4;
|
|
4954
|
-
} else {
|
|
4955
|
-
t3 = $[9];
|
|
4956
|
-
t4 = $[10];
|
|
4957
|
-
}
|
|
4958
|
-
useEffect(t3, t4);
|
|
5157
|
+
useEffect(() => {
|
|
5158
|
+
if ((prevModeRef.current === "collapsed" || prevModeRef.current === "hovered") && (mode === "composing" || mode === "active" || mode === "expanded")) storeTrigger();
|
|
5159
|
+
prevModeRef.current = mode;
|
|
5160
|
+
}, [mode, storeTrigger]);
|
|
4959
5161
|
useAriaHidden(isDialogActive, focusTrapRef);
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
5162
|
+
const handleMouseEnter = useCallback(() => {
|
|
5163
|
+
if (isMobile) return;
|
|
5164
|
+
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5165
|
+
hoverTimeoutRef.current = setTimeout(() => {
|
|
5166
|
+
setIsHovered(true);
|
|
5167
|
+
if (mode === "collapsed") onModeChange?.("hovered");
|
|
5168
|
+
}, UI_TIMING.hoverDebounce);
|
|
5169
|
+
}, [
|
|
5170
|
+
mode,
|
|
5171
|
+
onModeChange,
|
|
5172
|
+
isMobile
|
|
5173
|
+
]);
|
|
5174
|
+
const handleMouseLeave = useCallback(() => {
|
|
5175
|
+
if (isMobile) return;
|
|
5176
|
+
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5177
|
+
setIsHovered(false);
|
|
5178
|
+
if (mode === "hovered") hoverTimeoutRef.current = setTimeout(() => {
|
|
5179
|
+
onModeChange?.("collapsed");
|
|
5180
|
+
}, UI_TIMING.collapseDelay);
|
|
5181
|
+
}, [
|
|
5182
|
+
mode,
|
|
5183
|
+
onModeChange,
|
|
5184
|
+
isMobile
|
|
5185
|
+
]);
|
|
5186
|
+
const handleClick = useCallback(() => {
|
|
5187
|
+
if (mode === "collapsed" || mode === "hovered") onModeChange?.("composing");
|
|
5188
|
+
}, [mode, onModeChange]);
|
|
5189
|
+
const handleFocus = useCallback(() => {
|
|
5190
|
+
if (mode === "collapsed" && !isMobile) onModeChange?.("hovered");
|
|
5191
|
+
}, [
|
|
5192
|
+
mode,
|
|
5193
|
+
onModeChange,
|
|
5194
|
+
isMobile
|
|
5195
|
+
]);
|
|
5196
|
+
const handleBlur = useCallback(() => {
|
|
5197
|
+
if (mode === "hovered" && !isMobile) onModeChange?.("collapsed");
|
|
5198
|
+
}, [
|
|
5199
|
+
mode,
|
|
5200
|
+
onModeChange,
|
|
5201
|
+
isMobile
|
|
5202
|
+
]);
|
|
5203
|
+
useEffect(() => {
|
|
5204
|
+
const handleKeyDown = (e) => {
|
|
5205
|
+
const isShortcut = (e.ctrlKey || e.metaKey) && e.shiftKey && e.key.toLowerCase() === "k";
|
|
5206
|
+
const isEscape = e.key === "Escape";
|
|
5207
|
+
if (isShortcut) {
|
|
5208
|
+
e.preventDefault();
|
|
5209
|
+
if (mode === "collapsed") onModeChange?.("composing");
|
|
5210
|
+
else if (mode === "composing" || mode === "hovered") onModeChange?.("collapsed");
|
|
5211
|
+
}
|
|
5212
|
+
if (isEscape && (mode === "composing" || mode === "expanded" || mode === "hovered")) {
|
|
5213
|
+
e.preventDefault();
|
|
4983
5214
|
onModeChange?.("collapsed");
|
|
4984
|
-
}
|
|
4985
|
-
};
|
|
4986
|
-
$[15] = isMobile;
|
|
4987
|
-
$[16] = mode;
|
|
4988
|
-
$[17] = onModeChange;
|
|
4989
|
-
$[18] = t6;
|
|
4990
|
-
} else t6 = $[18];
|
|
4991
|
-
const handleMouseLeave = t6;
|
|
4992
|
-
let t7;
|
|
4993
|
-
if ($[19] !== mode || $[20] !== onModeChange) {
|
|
4994
|
-
t7 = () => {
|
|
4995
|
-
if (mode === "collapsed" || mode === "hovered") onModeChange?.("composing");
|
|
4996
|
-
};
|
|
4997
|
-
$[19] = mode;
|
|
4998
|
-
$[20] = onModeChange;
|
|
4999
|
-
$[21] = t7;
|
|
5000
|
-
} else t7 = $[21];
|
|
5001
|
-
const handleClick = t7;
|
|
5002
|
-
let t8;
|
|
5003
|
-
if ($[22] !== isMobile || $[23] !== mode || $[24] !== onModeChange) {
|
|
5004
|
-
t8 = () => {
|
|
5005
|
-
if (mode === "collapsed" && !isMobile) onModeChange?.("hovered");
|
|
5006
|
-
};
|
|
5007
|
-
$[22] = isMobile;
|
|
5008
|
-
$[23] = mode;
|
|
5009
|
-
$[24] = onModeChange;
|
|
5010
|
-
$[25] = t8;
|
|
5011
|
-
} else t8 = $[25];
|
|
5012
|
-
const handleFocus = t8;
|
|
5013
|
-
let t9;
|
|
5014
|
-
if ($[26] !== isMobile || $[27] !== mode || $[28] !== onModeChange) {
|
|
5015
|
-
t9 = () => {
|
|
5016
|
-
if (mode === "hovered" && !isMobile) onModeChange?.("collapsed");
|
|
5017
|
-
};
|
|
5018
|
-
$[26] = isMobile;
|
|
5019
|
-
$[27] = mode;
|
|
5020
|
-
$[28] = onModeChange;
|
|
5021
|
-
$[29] = t9;
|
|
5022
|
-
} else t9 = $[29];
|
|
5023
|
-
const handleBlur = t9;
|
|
5024
|
-
let t10;
|
|
5025
|
-
let t11;
|
|
5026
|
-
if ($[30] !== mode || $[31] !== onModeChange) {
|
|
5027
|
-
t10 = () => {
|
|
5028
|
-
const handleKeyDown = (e) => {
|
|
5029
|
-
const isShortcut = (e.ctrlKey || e.metaKey) && e.shiftKey && e.key.toLowerCase() === "k";
|
|
5030
|
-
const isEscape = e.key === "Escape";
|
|
5031
|
-
if (isShortcut) {
|
|
5032
|
-
e.preventDefault();
|
|
5033
|
-
if (mode === "collapsed") onModeChange?.("composing");
|
|
5034
|
-
else if (mode === "composing" || mode === "hovered") onModeChange?.("collapsed");
|
|
5035
|
-
}
|
|
5036
|
-
if (isEscape && (mode === "composing" || mode === "expanded" || mode === "hovered")) {
|
|
5037
|
-
e.preventDefault();
|
|
5038
|
-
onModeChange?.("collapsed");
|
|
5039
|
-
}
|
|
5040
|
-
};
|
|
5041
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
5042
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
5215
|
+
}
|
|
5043
5216
|
};
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
} else {
|
|
5050
|
-
t10 = $[32];
|
|
5051
|
-
t11 = $[33];
|
|
5052
|
-
}
|
|
5053
|
-
useEffect(t10, t11);
|
|
5054
|
-
let t12;
|
|
5055
|
-
let t13;
|
|
5056
|
-
if ($[34] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5057
|
-
t12 = () => () => {
|
|
5217
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
5218
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
5219
|
+
}, [mode, onModeChange]);
|
|
5220
|
+
useEffect(() => {
|
|
5221
|
+
return () => {
|
|
5058
5222
|
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5059
5223
|
};
|
|
5060
|
-
|
|
5061
|
-
$[34] = t12;
|
|
5062
|
-
$[35] = t13;
|
|
5063
|
-
} else {
|
|
5064
|
-
t12 = $[34];
|
|
5065
|
-
t13 = $[35];
|
|
5066
|
-
}
|
|
5067
|
-
useEffect(t12, t13);
|
|
5224
|
+
}, []);
|
|
5068
5225
|
const showContent = mode !== "collapsed" && mode !== "hovered";
|
|
5069
|
-
const currentVariant = containerVariants[mode];
|
|
5226
|
+
const currentVariant = isFullScreen ? fullScreenVariant : containerVariants$1[mode];
|
|
5070
5227
|
const isDialogMode = mode === "composing" || mode === "active" || mode === "expanded";
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
|
|
5075
|
-
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
const t16 = mode === "collapsed" && "glass-pill-collapsed";
|
|
5082
|
-
const t17 = mode === "hovered" && "glass-pill-hovered";
|
|
5083
|
-
const t18 = (mode === "composing" || mode === "expanded") && "glass-pill";
|
|
5084
|
-
const t19 = mode === "active" && "glass-pill glass-active";
|
|
5085
|
-
let t20;
|
|
5086
|
-
if ($[38] !== className || $[39] !== t15 || $[40] !== t16 || $[41] !== t17 || $[42] !== t18 || $[43] !== t19) {
|
|
5087
|
-
t20 = cn("relative overflow-hidden", t15, "focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent", t16, t17, t18, t19, className);
|
|
5088
|
-
$[38] = className;
|
|
5089
|
-
$[39] = t15;
|
|
5090
|
-
$[40] = t16;
|
|
5091
|
-
$[41] = t17;
|
|
5092
|
-
$[42] = t18;
|
|
5093
|
-
$[43] = t19;
|
|
5094
|
-
$[44] = t20;
|
|
5095
|
-
} else t20 = $[44];
|
|
5096
|
-
const glassClassName = t20;
|
|
5097
|
-
const transition = prefersReducedMotion ? reducedMotionTransition : sizeSpring;
|
|
5098
|
-
const t21 = !prefersReducedMotion;
|
|
5099
|
-
let t22;
|
|
5100
|
-
if ($[45] !== currentVariant.borderRadius || $[46] !== currentVariant.height || $[47] !== currentVariant.padding || $[48] !== currentVariant.width) {
|
|
5101
|
-
t22 = {
|
|
5228
|
+
const setContainerRef = useCallback((node) => {
|
|
5229
|
+
if (focusTrapRef) focusTrapRef.current = node;
|
|
5230
|
+
}, [focusTrapRef]);
|
|
5231
|
+
const glassClassName = cn("relative", isFullScreen ? "overflow-y-auto scrollbar-thin scroll-touch" : "overflow-hidden", !prefersReducedMotion && "will-change-transform", "focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent", mode === "collapsed" && "glass-pill-collapsed", mode === "hovered" && "glass-pill-hovered", (mode === "composing" || mode === "expanded") && "glass-pill", mode === "active" && "glass-pill glass-active", className);
|
|
5232
|
+
const transition = prefersReducedMotion ? reducedMotionTransition : isTransitioningFullScreen || isFullScreen ? fullScreenTween : sizeSpring;
|
|
5233
|
+
return /* @__PURE__ */ jsxs(motion.div, {
|
|
5234
|
+
ref: setContainerRef,
|
|
5235
|
+
className: glassClassName,
|
|
5236
|
+
initial: false,
|
|
5237
|
+
animate: {
|
|
5102
5238
|
width: currentVariant.width,
|
|
5103
5239
|
height: currentVariant.height,
|
|
5104
5240
|
padding: currentVariant.padding,
|
|
5105
5241
|
borderRadius: currentVariant.borderRadius
|
|
5106
|
-
}
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
5140
|
-
|
|
5141
|
-
|
|
5142
|
-
|
|
5143
|
-
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
|
|
5152
|
-
|
|
5153
|
-
|
|
5154
|
-
exit: "exit",
|
|
5155
|
-
children: /* @__PURE__ */ jsxs("span", {
|
|
5156
|
-
className: "text-xs text-white/70",
|
|
5157
|
-
children: [
|
|
5158
|
-
"Click or",
|
|
5159
|
-
" ",
|
|
5160
|
-
/* @__PURE__ */ jsx("kbd", {
|
|
5161
|
-
className: "rounded bg-white/10 px-1.5 py-0.5 font-mono text-[10px]",
|
|
5162
|
-
children: "⌘⇧K"
|
|
5242
|
+
},
|
|
5243
|
+
transition,
|
|
5244
|
+
onMouseEnter: handleMouseEnter,
|
|
5245
|
+
onMouseLeave: handleMouseLeave,
|
|
5246
|
+
onClick: handleClick,
|
|
5247
|
+
onFocus: handleFocus,
|
|
5248
|
+
onBlur: handleBlur,
|
|
5249
|
+
role: isDialogMode ? "dialog" : "button",
|
|
5250
|
+
tabIndex: isDialogMode ? -1 : 0,
|
|
5251
|
+
"aria-modal": isDialogMode ? true : void 0,
|
|
5252
|
+
"aria-labelledby": isDialogMode ? ARIA_IDS.pillTitle : void 0,
|
|
5253
|
+
"aria-label": !isDialogMode ? ARIA_LABELS.openAssistant : void 0,
|
|
5254
|
+
children: [
|
|
5255
|
+
/* @__PURE__ */ jsx(AnimatePresence, {
|
|
5256
|
+
mode: "wait",
|
|
5257
|
+
children: mode === "collapsed" && /* @__PURE__ */ jsx(motion.div, {
|
|
5258
|
+
className: "absolute inset-0",
|
|
5259
|
+
variants: barVariants,
|
|
5260
|
+
initial: "idle",
|
|
5261
|
+
animate: isHovered ? "hover" : "idle",
|
|
5262
|
+
exit: {
|
|
5263
|
+
opacity: 0,
|
|
5264
|
+
transition: { duration: .1 }
|
|
5265
|
+
},
|
|
5266
|
+
style: {
|
|
5267
|
+
background: "linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent)",
|
|
5268
|
+
backgroundSize: "200% 100%"
|
|
5269
|
+
}
|
|
5270
|
+
}, "collapsed-bar")
|
|
5271
|
+
}),
|
|
5272
|
+
/* @__PURE__ */ jsx(AnimatePresence, {
|
|
5273
|
+
mode: "wait",
|
|
5274
|
+
children: mode === "hovered" && /* @__PURE__ */ jsx(motion.div, {
|
|
5275
|
+
className: "relative z-10 flex h-full w-full items-center justify-center",
|
|
5276
|
+
variants: hintVariants,
|
|
5277
|
+
initial: "hidden",
|
|
5278
|
+
animate: "visible",
|
|
5279
|
+
exit: "exit",
|
|
5280
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
5281
|
+
className: "text-xs text-white/70",
|
|
5282
|
+
children: [
|
|
5283
|
+
"Click or",
|
|
5284
|
+
" ",
|
|
5285
|
+
/* @__PURE__ */ jsx("kbd", {
|
|
5286
|
+
className: "rounded bg-white/10 px-1.5 py-0.5 font-mono text-[10px]",
|
|
5287
|
+
children: "⌘⇧K"
|
|
5288
|
+
})
|
|
5289
|
+
]
|
|
5163
5290
|
})
|
|
5164
|
-
|
|
5291
|
+
}, "hover-hint")
|
|
5292
|
+
}),
|
|
5293
|
+
/* @__PURE__ */ jsx(AnimatePresence, {
|
|
5294
|
+
mode: "wait",
|
|
5295
|
+
children: showContent && /* @__PURE__ */ jsxs(motion.div, {
|
|
5296
|
+
className: "relative z-10 flex flex-col gap-1.5",
|
|
5297
|
+
variants: contentVariants,
|
|
5298
|
+
initial: "hidden",
|
|
5299
|
+
animate: "visible",
|
|
5300
|
+
exit: "exit",
|
|
5301
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
5302
|
+
id: ARIA_IDS.pillTitle,
|
|
5303
|
+
className: "sr-only",
|
|
5304
|
+
children: "AI Assistant"
|
|
5305
|
+
}), children]
|
|
5306
|
+
}, "content")
|
|
5165
5307
|
})
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
$[56] = t30;
|
|
5169
|
-
} else t30 = $[56];
|
|
5170
|
-
let t31;
|
|
5171
|
-
if ($[57] !== t30) {
|
|
5172
|
-
t31 = /* @__PURE__ */ jsx(AnimatePresence, {
|
|
5173
|
-
mode: "wait",
|
|
5174
|
-
children: t30
|
|
5175
|
-
});
|
|
5176
|
-
$[57] = t30;
|
|
5177
|
-
$[58] = t31;
|
|
5178
|
-
} else t31 = $[58];
|
|
5179
|
-
let t32;
|
|
5180
|
-
if ($[59] !== children || $[60] !== showContent) {
|
|
5181
|
-
t32 = showContent && /* @__PURE__ */ jsxs(motion.div, {
|
|
5182
|
-
className: "relative z-10 flex flex-col gap-2",
|
|
5183
|
-
variants: contentVariants,
|
|
5184
|
-
initial: "hidden",
|
|
5185
|
-
animate: "visible",
|
|
5186
|
-
exit: "exit",
|
|
5187
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
5188
|
-
id: ARIA_IDS.pillTitle,
|
|
5189
|
-
className: "sr-only",
|
|
5190
|
-
children: "AI Assistant"
|
|
5191
|
-
}), children]
|
|
5192
|
-
}, "content");
|
|
5193
|
-
$[59] = children;
|
|
5194
|
-
$[60] = showContent;
|
|
5195
|
-
$[61] = t32;
|
|
5196
|
-
} else t32 = $[61];
|
|
5197
|
-
let t33;
|
|
5198
|
-
if ($[62] !== t32) {
|
|
5199
|
-
t33 = /* @__PURE__ */ jsx(AnimatePresence, {
|
|
5200
|
-
mode: "wait",
|
|
5201
|
-
children: t32
|
|
5202
|
-
});
|
|
5203
|
-
$[62] = t32;
|
|
5204
|
-
$[63] = t33;
|
|
5205
|
-
} else t33 = $[63];
|
|
5206
|
-
let t34;
|
|
5207
|
-
if ($[64] !== glassClassName || $[65] !== handleBlur || $[66] !== handleClick || $[67] !== handleFocus || $[68] !== handleMouseEnter || $[69] !== handleMouseLeave || $[70] !== setContainerRef || $[71] !== t21 || $[72] !== t22 || $[73] !== t23 || $[74] !== t24 || $[75] !== t25 || $[76] !== t26 || $[77] !== t27 || $[78] !== t29 || $[79] !== t31 || $[80] !== t33 || $[81] !== transition) {
|
|
5208
|
-
t34 = /* @__PURE__ */ jsxs(motion.div, {
|
|
5209
|
-
ref: setContainerRef,
|
|
5210
|
-
layout: t21,
|
|
5211
|
-
className: glassClassName,
|
|
5212
|
-
initial: false,
|
|
5213
|
-
animate: t22,
|
|
5214
|
-
transition,
|
|
5215
|
-
onMouseEnter: handleMouseEnter,
|
|
5216
|
-
onMouseLeave: handleMouseLeave,
|
|
5217
|
-
onClick: handleClick,
|
|
5218
|
-
onFocus: handleFocus,
|
|
5219
|
-
onBlur: handleBlur,
|
|
5220
|
-
role: t23,
|
|
5221
|
-
tabIndex: t24,
|
|
5222
|
-
"aria-modal": t25,
|
|
5223
|
-
"aria-labelledby": t26,
|
|
5224
|
-
"aria-label": t27,
|
|
5225
|
-
children: [
|
|
5226
|
-
t29,
|
|
5227
|
-
t31,
|
|
5228
|
-
t33
|
|
5229
|
-
]
|
|
5230
|
-
});
|
|
5231
|
-
$[64] = glassClassName;
|
|
5232
|
-
$[65] = handleBlur;
|
|
5233
|
-
$[66] = handleClick;
|
|
5234
|
-
$[67] = handleFocus;
|
|
5235
|
-
$[68] = handleMouseEnter;
|
|
5236
|
-
$[69] = handleMouseLeave;
|
|
5237
|
-
$[70] = setContainerRef;
|
|
5238
|
-
$[71] = t21;
|
|
5239
|
-
$[72] = t22;
|
|
5240
|
-
$[73] = t23;
|
|
5241
|
-
$[74] = t24;
|
|
5242
|
-
$[75] = t25;
|
|
5243
|
-
$[76] = t26;
|
|
5244
|
-
$[77] = t27;
|
|
5245
|
-
$[78] = t29;
|
|
5246
|
-
$[79] = t31;
|
|
5247
|
-
$[80] = t33;
|
|
5248
|
-
$[81] = transition;
|
|
5249
|
-
$[82] = t34;
|
|
5250
|
-
} else t34 = $[82];
|
|
5251
|
-
return t34;
|
|
5308
|
+
]
|
|
5309
|
+
});
|
|
5252
5310
|
};
|
|
5253
5311
|
|
|
5254
5312
|
//#endregion
|
|
@@ -5374,7 +5432,7 @@ const RunningToolDisplay = (t0) => {
|
|
|
5374
5432
|
const ToolIcon = t1;
|
|
5375
5433
|
let t2;
|
|
5376
5434
|
if ($[2] !== ToolIcon) {
|
|
5377
|
-
t2 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-
|
|
5435
|
+
t2 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-3.5 w-3.5 animate-pulse text-white/50" });
|
|
5378
5436
|
$[2] = ToolIcon;
|
|
5379
5437
|
$[3] = t2;
|
|
5380
5438
|
} else t2 = $[3];
|
|
@@ -5386,18 +5444,17 @@ const RunningToolDisplay = (t0) => {
|
|
|
5386
5444
|
} else t3 = $[5];
|
|
5387
5445
|
let t4;
|
|
5388
5446
|
if ($[6] !== t3) {
|
|
5389
|
-
t4 = /* @__PURE__ */
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
] });
|
|
5447
|
+
t4 = /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx("strong", {
|
|
5448
|
+
className: "text-white/90",
|
|
5449
|
+
children: t3
|
|
5450
|
+
}) });
|
|
5394
5451
|
$[6] = t3;
|
|
5395
5452
|
$[7] = t4;
|
|
5396
5453
|
} else t4 = $[7];
|
|
5397
5454
|
let t5;
|
|
5398
5455
|
if ($[8] !== t2 || $[9] !== t4) {
|
|
5399
5456
|
t5 = /* @__PURE__ */ jsxs("div", {
|
|
5400
|
-
className: "my-
|
|
5457
|
+
className: "my-1 flex items-center gap-1.5 rounded-lg bg-white/5 px-2 py-1.5 text-sm text-white/70",
|
|
5401
5458
|
children: [t2, t4]
|
|
5402
5459
|
});
|
|
5403
5460
|
$[8] = t2;
|
|
@@ -5411,7 +5468,7 @@ const RunningToolDisplay = (t0) => {
|
|
|
5411
5468
|
* Used when a tool has no execute function and requires user approval.
|
|
5412
5469
|
*/
|
|
5413
5470
|
const ApprovalDialog = (t0) => {
|
|
5414
|
-
const $ = c(
|
|
5471
|
+
const $ = c(54);
|
|
5415
5472
|
const { toolName, toolDescription, inputArgs, onApprove, onDeny, isExecuting } = t0;
|
|
5416
5473
|
const [isHovered, setIsHovered] = useState(null);
|
|
5417
5474
|
let t1;
|
|
@@ -5424,7 +5481,7 @@ const ApprovalDialog = (t0) => {
|
|
|
5424
5481
|
if (isExecuting) {
|
|
5425
5482
|
let t2$1;
|
|
5426
5483
|
if ($[2] !== ToolIcon) {
|
|
5427
|
-
t2$1 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-
|
|
5484
|
+
t2$1 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-3.5 w-3.5 animate-pulse text-white/50" });
|
|
5428
5485
|
$[2] = ToolIcon;
|
|
5429
5486
|
$[3] = t2$1;
|
|
5430
5487
|
} else t2$1 = $[3];
|
|
@@ -5436,18 +5493,17 @@ const ApprovalDialog = (t0) => {
|
|
|
5436
5493
|
} else t3$1 = $[5];
|
|
5437
5494
|
let t4$1;
|
|
5438
5495
|
if ($[6] !== t3$1) {
|
|
5439
|
-
t4$1 = /* @__PURE__ */
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
] });
|
|
5496
|
+
t4$1 = /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx("strong", {
|
|
5497
|
+
className: "text-white/90",
|
|
5498
|
+
children: t3$1
|
|
5499
|
+
}) });
|
|
5444
5500
|
$[6] = t3$1;
|
|
5445
5501
|
$[7] = t4$1;
|
|
5446
5502
|
} else t4$1 = $[7];
|
|
5447
5503
|
let t5$1;
|
|
5448
5504
|
if ($[8] !== t2$1 || $[9] !== t4$1) {
|
|
5449
5505
|
t5$1 = /* @__PURE__ */ jsxs("div", {
|
|
5450
|
-
className: "my-
|
|
5506
|
+
className: "my-1 flex items-center gap-1.5 rounded-lg bg-white/5 px-2 py-1.5 text-sm text-white/70",
|
|
5451
5507
|
children: [t2$1, t4$1]
|
|
5452
5508
|
});
|
|
5453
5509
|
$[8] = t2$1;
|
|
@@ -5458,18 +5514,18 @@ const ApprovalDialog = (t0) => {
|
|
|
5458
5514
|
}
|
|
5459
5515
|
let t2;
|
|
5460
5516
|
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5461
|
-
t2 = cn("my-
|
|
5517
|
+
t2 = cn("my-1 overflow-hidden rounded-lg", "bg-white/5");
|
|
5462
5518
|
$[11] = t2;
|
|
5463
5519
|
} else t2 = $[11];
|
|
5464
5520
|
let t3;
|
|
5465
5521
|
if ($[12] !== ToolIcon) {
|
|
5466
|
-
t3 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-
|
|
5522
|
+
t3 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-3.5 w-3.5 text-white/70" });
|
|
5467
5523
|
$[12] = ToolIcon;
|
|
5468
5524
|
$[13] = t3;
|
|
5469
5525
|
} else t3 = $[13];
|
|
5470
5526
|
let t4;
|
|
5471
5527
|
if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5472
|
-
t4 = /* @__PURE__ */ jsx(AlertTriangle, { className: "absolute -bottom-0.5 -right-0.5 h-2
|
|
5528
|
+
t4 = /* @__PURE__ */ jsx(AlertTriangle, { className: "absolute -bottom-0.5 -right-0.5 h-2 w-2 text-white/70" });
|
|
5473
5529
|
$[14] = t4;
|
|
5474
5530
|
} else t4 = $[14];
|
|
5475
5531
|
let t5;
|
|
@@ -5482,181 +5538,161 @@ const ApprovalDialog = (t0) => {
|
|
|
5482
5538
|
$[16] = t5;
|
|
5483
5539
|
} else t5 = $[16];
|
|
5484
5540
|
let t6;
|
|
5485
|
-
if ($[17]
|
|
5486
|
-
t6 =
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
$[17] = t6;
|
|
5491
|
-
} else t6 = $[17];
|
|
5541
|
+
if ($[17] !== toolName) {
|
|
5542
|
+
t6 = humanizeToolName(toolName);
|
|
5543
|
+
$[17] = toolName;
|
|
5544
|
+
$[18] = t6;
|
|
5545
|
+
} else t6 = $[18];
|
|
5492
5546
|
let t7;
|
|
5493
|
-
if ($[
|
|
5494
|
-
t7 = /* @__PURE__ */
|
|
5495
|
-
className: "
|
|
5496
|
-
children:
|
|
5547
|
+
if ($[19] !== t6) {
|
|
5548
|
+
t7 = /* @__PURE__ */ jsx("span", {
|
|
5549
|
+
className: "text-xs font-medium text-white/90",
|
|
5550
|
+
children: t6
|
|
5497
5551
|
});
|
|
5498
|
-
$[
|
|
5499
|
-
$[
|
|
5500
|
-
} else t7 = $[
|
|
5552
|
+
$[19] = t6;
|
|
5553
|
+
$[20] = t7;
|
|
5554
|
+
} else t7 = $[20];
|
|
5501
5555
|
let t8;
|
|
5502
|
-
if ($[
|
|
5503
|
-
t8 =
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
} else t8 = $[21];
|
|
5507
|
-
let t9;
|
|
5508
|
-
if ($[22] !== t8) {
|
|
5509
|
-
t9 = /* @__PURE__ */ jsx("div", {
|
|
5510
|
-
className: "text-sm font-medium text-white/90",
|
|
5511
|
-
children: t8
|
|
5556
|
+
if ($[21] !== t5 || $[22] !== t7) {
|
|
5557
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
5558
|
+
className: "flex items-center gap-1.5 px-2 py-1.5 border-b border-white/5",
|
|
5559
|
+
children: [t5, t7]
|
|
5512
5560
|
});
|
|
5513
|
-
$[
|
|
5514
|
-
$[
|
|
5515
|
-
|
|
5516
|
-
|
|
5561
|
+
$[21] = t5;
|
|
5562
|
+
$[22] = t7;
|
|
5563
|
+
$[23] = t8;
|
|
5564
|
+
} else t8 = $[23];
|
|
5565
|
+
let t9;
|
|
5517
5566
|
if ($[24] !== toolDescription) {
|
|
5518
|
-
|
|
5519
|
-
className: "
|
|
5567
|
+
t9 = toolDescription && /* @__PURE__ */ jsx("div", {
|
|
5568
|
+
className: "mb-2 text-xs text-white/50",
|
|
5520
5569
|
children: toolDescription
|
|
5521
5570
|
});
|
|
5522
5571
|
$[24] = toolDescription;
|
|
5523
|
-
$[25] =
|
|
5524
|
-
} else
|
|
5525
|
-
let
|
|
5526
|
-
if ($[26] !==
|
|
5527
|
-
|
|
5528
|
-
className: "mb-
|
|
5529
|
-
children:
|
|
5530
|
-
|
|
5531
|
-
$[26] = t10;
|
|
5532
|
-
$[27] = t9;
|
|
5533
|
-
$[28] = t11;
|
|
5534
|
-
} else t11 = $[28];
|
|
5535
|
-
let t12;
|
|
5536
|
-
if ($[29] !== inputArgs) {
|
|
5537
|
-
t12 = inputArgs && Object.keys(inputArgs).length > 0 && /* @__PURE__ */ jsxs("div", {
|
|
5538
|
-
className: "mb-3 rounded bg-zinc-800/50 p-2",
|
|
5539
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
5540
|
-
className: "mb-1 text-xs font-medium uppercase tracking-wide text-white/40 sm:text-[10px]",
|
|
5541
|
-
children: "Arguments"
|
|
5542
|
-
}), /* @__PURE__ */ jsx("pre", {
|
|
5543
|
-
className: "whitespace-pre-wrap text-xs text-white/70",
|
|
5572
|
+
$[25] = t9;
|
|
5573
|
+
} else t9 = $[25];
|
|
5574
|
+
let t10;
|
|
5575
|
+
if ($[26] !== inputArgs) {
|
|
5576
|
+
t10 = inputArgs && Object.keys(inputArgs).length > 0 && /* @__PURE__ */ jsx("div", {
|
|
5577
|
+
className: "mb-2 rounded bg-white/5 p-1.5",
|
|
5578
|
+
children: /* @__PURE__ */ jsx("pre", {
|
|
5579
|
+
className: "whitespace-pre-wrap text-[11px] text-white/60",
|
|
5544
5580
|
children: formatArgs(inputArgs)
|
|
5545
|
-
})
|
|
5581
|
+
})
|
|
5546
5582
|
});
|
|
5547
|
-
$[
|
|
5548
|
-
$[
|
|
5549
|
-
} else
|
|
5550
|
-
let
|
|
5551
|
-
let
|
|
5552
|
-
if ($[
|
|
5553
|
-
|
|
5554
|
-
|
|
5555
|
-
$[
|
|
5556
|
-
$[
|
|
5583
|
+
$[26] = inputArgs;
|
|
5584
|
+
$[27] = t10;
|
|
5585
|
+
} else t10 = $[27];
|
|
5586
|
+
let t11;
|
|
5587
|
+
let t12;
|
|
5588
|
+
if ($[28] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5589
|
+
t11 = () => setIsHovered("deny");
|
|
5590
|
+
t12 = () => setIsHovered(null);
|
|
5591
|
+
$[28] = t11;
|
|
5592
|
+
$[29] = t12;
|
|
5557
5593
|
} else {
|
|
5558
|
-
|
|
5559
|
-
|
|
5594
|
+
t11 = $[28];
|
|
5595
|
+
t12 = $[29];
|
|
5560
5596
|
}
|
|
5561
|
-
const
|
|
5597
|
+
const t13 = isHovered === "deny" ? "bg-white/10 text-white/80" : "hover:bg-white/5";
|
|
5598
|
+
let t14;
|
|
5599
|
+
if ($[30] !== t13) {
|
|
5600
|
+
t14 = cn("flex items-center gap-1 rounded px-2.5 py-1.5 text-xs font-medium sm:px-2 sm:py-1", "border border-white/10 text-white/60", "transition-colors duration-150", t13);
|
|
5601
|
+
$[30] = t13;
|
|
5602
|
+
$[31] = t14;
|
|
5603
|
+
} else t14 = $[31];
|
|
5604
|
+
let t15;
|
|
5605
|
+
if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5606
|
+
t15 = /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5 sm:h-3 sm:w-3" });
|
|
5607
|
+
$[32] = t15;
|
|
5608
|
+
} else t15 = $[32];
|
|
5562
5609
|
let t16;
|
|
5563
|
-
if ($[33] !==
|
|
5564
|
-
t16 =
|
|
5565
|
-
$[33] = t15;
|
|
5566
|
-
$[34] = t16;
|
|
5567
|
-
} else t16 = $[34];
|
|
5568
|
-
let t17;
|
|
5569
|
-
if ($[35] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5570
|
-
t17 = /* @__PURE__ */ jsx(X, { className: "h-4 w-4 sm:h-3.5 sm:w-3.5" });
|
|
5571
|
-
$[35] = t17;
|
|
5572
|
-
} else t17 = $[35];
|
|
5573
|
-
let t18;
|
|
5574
|
-
if ($[36] !== onDeny || $[37] !== t16) {
|
|
5575
|
-
t18 = /* @__PURE__ */ jsxs("button", {
|
|
5610
|
+
if ($[33] !== onDeny || $[34] !== t14) {
|
|
5611
|
+
t16 = /* @__PURE__ */ jsxs("button", {
|
|
5576
5612
|
type: "button",
|
|
5577
5613
|
onClick: onDeny,
|
|
5578
|
-
onMouseEnter:
|
|
5579
|
-
onMouseLeave:
|
|
5580
|
-
className:
|
|
5581
|
-
children: [
|
|
5614
|
+
onMouseEnter: t11,
|
|
5615
|
+
onMouseLeave: t12,
|
|
5616
|
+
className: t14,
|
|
5617
|
+
children: [t15, "Deny"]
|
|
5582
5618
|
});
|
|
5583
|
-
$[
|
|
5584
|
-
$[
|
|
5585
|
-
$[
|
|
5586
|
-
} else
|
|
5587
|
-
let
|
|
5588
|
-
let
|
|
5589
|
-
if ($[
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
$[
|
|
5593
|
-
$[
|
|
5619
|
+
$[33] = onDeny;
|
|
5620
|
+
$[34] = t14;
|
|
5621
|
+
$[35] = t16;
|
|
5622
|
+
} else t16 = $[35];
|
|
5623
|
+
let t17;
|
|
5624
|
+
let t18;
|
|
5625
|
+
if ($[36] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5626
|
+
t17 = () => setIsHovered("approve");
|
|
5627
|
+
t18 = () => setIsHovered(null);
|
|
5628
|
+
$[36] = t17;
|
|
5629
|
+
$[37] = t18;
|
|
5594
5630
|
} else {
|
|
5595
|
-
|
|
5596
|
-
|
|
5631
|
+
t17 = $[36];
|
|
5632
|
+
t18 = $[37];
|
|
5597
5633
|
}
|
|
5598
|
-
const
|
|
5634
|
+
const t19 = isHovered === "approve" ? "bg-white" : "hover:bg-white/95";
|
|
5635
|
+
let t20;
|
|
5636
|
+
if ($[38] !== t19) {
|
|
5637
|
+
t20 = cn("flex items-center gap-1 rounded px-2.5 py-1.5 text-xs font-medium sm:px-2 sm:py-1", "bg-white/90 text-slate-900", "transition-colors duration-150", t19);
|
|
5638
|
+
$[38] = t19;
|
|
5639
|
+
$[39] = t20;
|
|
5640
|
+
} else t20 = $[39];
|
|
5641
|
+
let t21;
|
|
5642
|
+
if ($[40] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5643
|
+
t21 = /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5 sm:h-3 sm:w-3" });
|
|
5644
|
+
$[40] = t21;
|
|
5645
|
+
} else t21 = $[40];
|
|
5599
5646
|
let t22;
|
|
5600
|
-
if ($[41] !==
|
|
5601
|
-
t22 =
|
|
5602
|
-
$[41] = t21;
|
|
5603
|
-
$[42] = t22;
|
|
5604
|
-
} else t22 = $[42];
|
|
5605
|
-
let t23;
|
|
5606
|
-
if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5607
|
-
t23 = /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 sm:h-3.5 sm:w-3.5" });
|
|
5608
|
-
$[43] = t23;
|
|
5609
|
-
} else t23 = $[43];
|
|
5610
|
-
let t24;
|
|
5611
|
-
if ($[44] !== onApprove || $[45] !== t22) {
|
|
5612
|
-
t24 = /* @__PURE__ */ jsxs("button", {
|
|
5647
|
+
if ($[41] !== onApprove || $[42] !== t20) {
|
|
5648
|
+
t22 = /* @__PURE__ */ jsxs("button", {
|
|
5613
5649
|
type: "button",
|
|
5614
5650
|
onClick: onApprove,
|
|
5615
|
-
onMouseEnter:
|
|
5616
|
-
onMouseLeave:
|
|
5617
|
-
className:
|
|
5618
|
-
children: [
|
|
5651
|
+
onMouseEnter: t17,
|
|
5652
|
+
onMouseLeave: t18,
|
|
5653
|
+
className: t20,
|
|
5654
|
+
children: [t21, "OK"]
|
|
5619
5655
|
});
|
|
5620
|
-
$[
|
|
5621
|
-
$[
|
|
5622
|
-
$[
|
|
5623
|
-
} else
|
|
5624
|
-
let
|
|
5625
|
-
if ($[
|
|
5626
|
-
|
|
5627
|
-
className: "flex justify-end gap-
|
|
5628
|
-
children: [
|
|
5656
|
+
$[41] = onApprove;
|
|
5657
|
+
$[42] = t20;
|
|
5658
|
+
$[43] = t22;
|
|
5659
|
+
} else t22 = $[43];
|
|
5660
|
+
let t23;
|
|
5661
|
+
if ($[44] !== t16 || $[45] !== t22) {
|
|
5662
|
+
t23 = /* @__PURE__ */ jsxs("div", {
|
|
5663
|
+
className: "flex justify-end gap-1.5",
|
|
5664
|
+
children: [t16, t22]
|
|
5629
5665
|
});
|
|
5630
|
-
$[
|
|
5631
|
-
$[
|
|
5632
|
-
$[
|
|
5633
|
-
} else
|
|
5634
|
-
let
|
|
5635
|
-
if ($[
|
|
5636
|
-
|
|
5637
|
-
className: "px-
|
|
5666
|
+
$[44] = t16;
|
|
5667
|
+
$[45] = t22;
|
|
5668
|
+
$[46] = t23;
|
|
5669
|
+
} else t23 = $[46];
|
|
5670
|
+
let t24;
|
|
5671
|
+
if ($[47] !== t10 || $[48] !== t23 || $[49] !== t9) {
|
|
5672
|
+
t24 = /* @__PURE__ */ jsxs("div", {
|
|
5673
|
+
className: "px-2 py-2",
|
|
5638
5674
|
children: [
|
|
5639
|
-
|
|
5640
|
-
|
|
5641
|
-
|
|
5675
|
+
t9,
|
|
5676
|
+
t10,
|
|
5677
|
+
t23
|
|
5642
5678
|
]
|
|
5643
5679
|
});
|
|
5644
|
-
$[
|
|
5645
|
-
$[
|
|
5646
|
-
$[
|
|
5647
|
-
$[
|
|
5648
|
-
} else
|
|
5649
|
-
let
|
|
5650
|
-
if ($[
|
|
5651
|
-
|
|
5680
|
+
$[47] = t10;
|
|
5681
|
+
$[48] = t23;
|
|
5682
|
+
$[49] = t9;
|
|
5683
|
+
$[50] = t24;
|
|
5684
|
+
} else t24 = $[50];
|
|
5685
|
+
let t25;
|
|
5686
|
+
if ($[51] !== t24 || $[52] !== t8) {
|
|
5687
|
+
t25 = /* @__PURE__ */ jsxs("div", {
|
|
5652
5688
|
className: t2,
|
|
5653
|
-
children: [
|
|
5689
|
+
children: [t8, t24]
|
|
5654
5690
|
});
|
|
5655
|
-
$[
|
|
5656
|
-
$[
|
|
5657
|
-
$[
|
|
5658
|
-
} else
|
|
5659
|
-
return
|
|
5691
|
+
$[51] = t24;
|
|
5692
|
+
$[52] = t8;
|
|
5693
|
+
$[53] = t25;
|
|
5694
|
+
} else t25 = $[53];
|
|
5695
|
+
return t25;
|
|
5660
5696
|
};
|
|
5661
5697
|
/**
|
|
5662
5698
|
* Completed tool display - success state with collapsible details
|
|
@@ -5680,13 +5716,13 @@ const CompletedToolDisplay = (t0) => {
|
|
|
5680
5716
|
} else t2 = $[3];
|
|
5681
5717
|
let t3;
|
|
5682
5718
|
if ($[4] !== ToolIcon) {
|
|
5683
|
-
t3 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-
|
|
5719
|
+
t3 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-3.5 w-3.5 text-white/50" });
|
|
5684
5720
|
$[4] = ToolIcon;
|
|
5685
5721
|
$[5] = t3;
|
|
5686
5722
|
} else t3 = $[5];
|
|
5687
5723
|
let t4;
|
|
5688
5724
|
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5689
|
-
t4 = /* @__PURE__ */ jsx(Check, { className: "absolute -bottom-0.5 -right-0.5 h-2
|
|
5725
|
+
t4 = /* @__PURE__ */ jsx(Check, { className: "absolute -bottom-0.5 -right-0.5 h-2 w-2 text-white/50" });
|
|
5690
5726
|
$[6] = t4;
|
|
5691
5727
|
} else t4 = $[6];
|
|
5692
5728
|
let t5;
|
|
@@ -5707,7 +5743,7 @@ const CompletedToolDisplay = (t0) => {
|
|
|
5707
5743
|
let t7;
|
|
5708
5744
|
if ($[11] !== t6) {
|
|
5709
5745
|
t7 = /* @__PURE__ */ jsx("span", {
|
|
5710
|
-
className: "flex-grow text-
|
|
5746
|
+
className: "flex-grow text-xs font-medium text-white/80",
|
|
5711
5747
|
children: t6
|
|
5712
5748
|
});
|
|
5713
5749
|
$[11] = t6;
|
|
@@ -5718,9 +5754,9 @@ const CompletedToolDisplay = (t0) => {
|
|
|
5718
5754
|
t8 = /* @__PURE__ */ jsx(Button, {
|
|
5719
5755
|
variant: "ghost",
|
|
5720
5756
|
size: "sm",
|
|
5721
|
-
className: "h-
|
|
5757
|
+
className: "h-5 w-5 p-0",
|
|
5722
5758
|
asChild: true,
|
|
5723
|
-
children: /* @__PURE__ */ jsx("span", { children: isExpanded ? /* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-3
|
|
5759
|
+
children: /* @__PURE__ */ jsx("span", { children: isExpanded ? /* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-3 w-3 text-white/40" }) : /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3 w-3 text-white/40" }) })
|
|
5724
5760
|
});
|
|
5725
5761
|
$[13] = isExpanded;
|
|
5726
5762
|
$[14] = t8;
|
|
@@ -5730,7 +5766,7 @@ const CompletedToolDisplay = (t0) => {
|
|
|
5730
5766
|
t9 = /* @__PURE__ */ jsxs("button", {
|
|
5731
5767
|
type: "button",
|
|
5732
5768
|
onClick: t2,
|
|
5733
|
-
className: "flex w-full items-center gap-
|
|
5769
|
+
className: "flex w-full items-center gap-1.5 px-2 py-1.5 text-left transition-colors hover:bg-white/5",
|
|
5734
5770
|
children: [
|
|
5735
5771
|
t5,
|
|
5736
5772
|
t7,
|
|
@@ -5746,21 +5782,21 @@ const CompletedToolDisplay = (t0) => {
|
|
|
5746
5782
|
let t10;
|
|
5747
5783
|
if ($[20] !== argsText || $[21] !== isExpanded || $[22] !== result) {
|
|
5748
5784
|
t10 = isExpanded && /* @__PURE__ */ jsxs("div", {
|
|
5749
|
-
className: "border-t border-
|
|
5785
|
+
className: "border-t border-white/5 px-2 py-1.5",
|
|
5750
5786
|
children: [argsText && /* @__PURE__ */ jsxs("div", {
|
|
5751
|
-
className: "mb-
|
|
5787
|
+
className: "mb-1.5",
|
|
5752
5788
|
children: [/* @__PURE__ */ jsx("div", {
|
|
5753
|
-
className: "mb-
|
|
5789
|
+
className: "mb-0.5 text-[10px] font-medium uppercase tracking-wide text-white/40",
|
|
5754
5790
|
children: "Input"
|
|
5755
5791
|
}), /* @__PURE__ */ jsx("pre", {
|
|
5756
|
-
className: "max-h-
|
|
5792
|
+
className: "max-h-24 overflow-auto whitespace-pre-wrap rounded bg-white/5 p-1.5 font-mono text-[11px] text-white/60",
|
|
5757
5793
|
children: argsText
|
|
5758
5794
|
})]
|
|
5759
5795
|
}), result !== void 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
5760
|
-
className: "mb-
|
|
5796
|
+
className: "mb-0.5 text-[10px] font-medium uppercase tracking-wide text-white/40",
|
|
5761
5797
|
children: "Output"
|
|
5762
5798
|
}), /* @__PURE__ */ jsx("pre", {
|
|
5763
|
-
className: "max-h-
|
|
5799
|
+
className: "max-h-32 overflow-auto whitespace-pre-wrap rounded bg-white/5 p-1.5 font-mono text-[11px] text-white/60",
|
|
5764
5800
|
children: typeof result === "string" ? result : JSON.stringify(result, null, 2)
|
|
5765
5801
|
})] })]
|
|
5766
5802
|
});
|
|
@@ -5772,7 +5808,7 @@ const CompletedToolDisplay = (t0) => {
|
|
|
5772
5808
|
let t11;
|
|
5773
5809
|
if ($[24] !== t10 || $[25] !== t9) {
|
|
5774
5810
|
t11 = /* @__PURE__ */ jsxs("div", {
|
|
5775
|
-
className: "my-
|
|
5811
|
+
className: "my-1 overflow-hidden rounded-lg bg-white/5",
|
|
5776
5812
|
children: [t9, t10]
|
|
5777
5813
|
});
|
|
5778
5814
|
$[24] = t10;
|
|
@@ -5796,13 +5832,13 @@ const ErrorToolDisplay = (t0) => {
|
|
|
5796
5832
|
const ToolIcon = t1;
|
|
5797
5833
|
let t2;
|
|
5798
5834
|
if ($[2] !== ToolIcon) {
|
|
5799
|
-
t2 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-
|
|
5835
|
+
t2 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-3.5 w-3.5 text-white/50" });
|
|
5800
5836
|
$[2] = ToolIcon;
|
|
5801
5837
|
$[3] = t2;
|
|
5802
5838
|
} else t2 = $[3];
|
|
5803
5839
|
let t3;
|
|
5804
5840
|
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5805
|
-
t3 = /* @__PURE__ */ jsx(AlertCircle, { className: "absolute -bottom-0.5 -right-0.5 h-2
|
|
5841
|
+
t3 = /* @__PURE__ */ jsx(AlertCircle, { className: "absolute -bottom-0.5 -right-0.5 h-2 w-2 text-white/50" });
|
|
5806
5842
|
$[4] = t3;
|
|
5807
5843
|
} else t3 = $[4];
|
|
5808
5844
|
let t4;
|
|
@@ -5823,7 +5859,7 @@ const ErrorToolDisplay = (t0) => {
|
|
|
5823
5859
|
let t6;
|
|
5824
5860
|
if ($[9] !== t5) {
|
|
5825
5861
|
t6 = /* @__PURE__ */ jsxs("span", {
|
|
5826
|
-
className: "text-
|
|
5862
|
+
className: "text-xs font-medium text-white/70",
|
|
5827
5863
|
children: [t5, " failed"]
|
|
5828
5864
|
});
|
|
5829
5865
|
$[9] = t5;
|
|
@@ -5832,7 +5868,7 @@ const ErrorToolDisplay = (t0) => {
|
|
|
5832
5868
|
let t7;
|
|
5833
5869
|
if ($[11] !== t4 || $[12] !== t6) {
|
|
5834
5870
|
t7 = /* @__PURE__ */ jsxs("div", {
|
|
5835
|
-
className: "flex items-center gap-
|
|
5871
|
+
className: "flex items-center gap-1.5 px-2 py-1.5",
|
|
5836
5872
|
children: [t4, t6]
|
|
5837
5873
|
});
|
|
5838
5874
|
$[11] = t4;
|
|
@@ -5842,9 +5878,9 @@ const ErrorToolDisplay = (t0) => {
|
|
|
5842
5878
|
let t8;
|
|
5843
5879
|
if ($[14] !== error) {
|
|
5844
5880
|
t8 = error && /* @__PURE__ */ jsx("div", {
|
|
5845
|
-
className: "border-t border-
|
|
5881
|
+
className: "border-t border-white/5 px-2 py-1.5",
|
|
5846
5882
|
children: /* @__PURE__ */ jsx("pre", {
|
|
5847
|
-
className: "whitespace-pre-wrap font-mono text-
|
|
5883
|
+
className: "whitespace-pre-wrap font-mono text-[11px] text-white/50",
|
|
5848
5884
|
children: error
|
|
5849
5885
|
})
|
|
5850
5886
|
});
|
|
@@ -5854,7 +5890,7 @@ const ErrorToolDisplay = (t0) => {
|
|
|
5854
5890
|
let t9;
|
|
5855
5891
|
if ($[16] !== t7 || $[17] !== t8) {
|
|
5856
5892
|
t9 = /* @__PURE__ */ jsxs("div", {
|
|
5857
|
-
className: "my-
|
|
5893
|
+
className: "my-1 overflow-hidden rounded-lg bg-white/5",
|
|
5858
5894
|
children: [t7, t8]
|
|
5859
5895
|
});
|
|
5860
5896
|
$[16] = t7;
|
|
@@ -5878,13 +5914,13 @@ const DeniedToolDisplay = (t0) => {
|
|
|
5878
5914
|
const ToolIcon = t1;
|
|
5879
5915
|
let t2;
|
|
5880
5916
|
if ($[2] !== ToolIcon) {
|
|
5881
|
-
t2 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-
|
|
5917
|
+
t2 = /* @__PURE__ */ jsx(ToolIcon, { className: "h-3.5 w-3.5 text-white/40" });
|
|
5882
5918
|
$[2] = ToolIcon;
|
|
5883
5919
|
$[3] = t2;
|
|
5884
5920
|
} else t2 = $[3];
|
|
5885
5921
|
let t3;
|
|
5886
5922
|
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
5887
|
-
t3 = /* @__PURE__ */ jsx(X, { className: "absolute -bottom-0.5 -right-0.5 h-2
|
|
5923
|
+
t3 = /* @__PURE__ */ jsx(X, { className: "absolute -bottom-0.5 -right-0.5 h-2 w-2 text-white/40" });
|
|
5888
5924
|
$[4] = t3;
|
|
5889
5925
|
} else t3 = $[4];
|
|
5890
5926
|
let t4;
|
|
@@ -5904,14 +5940,17 @@ const DeniedToolDisplay = (t0) => {
|
|
|
5904
5940
|
} else t5 = $[8];
|
|
5905
5941
|
let t6;
|
|
5906
5942
|
if ($[9] !== t5) {
|
|
5907
|
-
t6 = /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx("strong", {
|
|
5943
|
+
t6 = /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx("strong", {
|
|
5944
|
+
className: "text-white/70",
|
|
5945
|
+
children: t5
|
|
5946
|
+
}), " denied"] });
|
|
5908
5947
|
$[9] = t5;
|
|
5909
5948
|
$[10] = t6;
|
|
5910
5949
|
} else t6 = $[10];
|
|
5911
5950
|
let t7;
|
|
5912
5951
|
if ($[11] !== t4 || $[12] !== t6) {
|
|
5913
5952
|
t7 = /* @__PURE__ */ jsxs("div", {
|
|
5914
|
-
className: "my-
|
|
5953
|
+
className: "my-1 flex items-center gap-1.5 rounded-lg bg-white/5 px-2 py-1.5 text-xs text-white/60",
|
|
5915
5954
|
children: [t4, t6]
|
|
5916
5955
|
});
|
|
5917
5956
|
$[11] = t4;
|
|
@@ -6055,124 +6094,113 @@ function _temp2$2() {
|
|
|
6055
6094
|
* Auto-expands when approval is needed for a destructive tool.
|
|
6056
6095
|
*/
|
|
6057
6096
|
const PillToolsSection = (t0) => {
|
|
6058
|
-
const $ = c(
|
|
6059
|
-
const { defaultCollapsed: t1, className } = t0;
|
|
6060
|
-
const
|
|
6097
|
+
const $ = c(52);
|
|
6098
|
+
const { defaultCollapsed: t1, className, isFullScreen: t2 } = t0;
|
|
6099
|
+
const defaultCollapsed = t1 === void 0 ? false : t1;
|
|
6100
|
+
const isFullScreen = t2 === void 0 ? false : t2;
|
|
6101
|
+
const [isCollapsed, setIsCollapsed] = useState(isFullScreen ? false : defaultCollapsed);
|
|
6061
6102
|
const actions = useActions();
|
|
6062
|
-
let
|
|
6103
|
+
let t3;
|
|
6063
6104
|
if ($[0] !== actions) {
|
|
6064
|
-
|
|
6105
|
+
t3 = actions.filter(_temp$3);
|
|
6065
6106
|
$[0] = actions;
|
|
6066
|
-
$[1] =
|
|
6067
|
-
} else
|
|
6068
|
-
const completedCount =
|
|
6069
|
-
let
|
|
6107
|
+
$[1] = t3;
|
|
6108
|
+
} else t3 = $[1];
|
|
6109
|
+
const completedCount = t3.length;
|
|
6110
|
+
let t4;
|
|
6070
6111
|
if ($[2] !== actions) {
|
|
6071
|
-
|
|
6112
|
+
t4 = actions.filter(_temp2$1);
|
|
6072
6113
|
$[2] = actions;
|
|
6073
|
-
$[3] =
|
|
6074
|
-
} else
|
|
6075
|
-
const runningCount =
|
|
6076
|
-
let
|
|
6114
|
+
$[3] = t4;
|
|
6115
|
+
} else t4 = $[3];
|
|
6116
|
+
const runningCount = t4.length;
|
|
6117
|
+
let t5;
|
|
6077
6118
|
if ($[4] !== actions) {
|
|
6078
|
-
|
|
6119
|
+
t5 = actions.filter(_temp3$1);
|
|
6079
6120
|
$[4] = actions;
|
|
6080
|
-
$[5] =
|
|
6081
|
-
} else
|
|
6082
|
-
const pendingCount =
|
|
6121
|
+
$[5] = t5;
|
|
6122
|
+
} else t5 = $[5];
|
|
6123
|
+
const pendingCount = t5.length;
|
|
6083
6124
|
const totalCount = actions.length;
|
|
6084
|
-
let t5;
|
|
6085
6125
|
let t6;
|
|
6126
|
+
let t7;
|
|
6086
6127
|
if ($[6] !== isCollapsed || $[7] !== pendingCount) {
|
|
6087
|
-
|
|
6128
|
+
t6 = () => {
|
|
6088
6129
|
if (pendingCount > 0 && isCollapsed) setIsCollapsed(false);
|
|
6089
6130
|
};
|
|
6090
|
-
|
|
6131
|
+
t7 = [pendingCount, isCollapsed];
|
|
6091
6132
|
$[6] = isCollapsed;
|
|
6092
6133
|
$[7] = pendingCount;
|
|
6093
|
-
$[8] =
|
|
6094
|
-
$[9] =
|
|
6134
|
+
$[8] = t6;
|
|
6135
|
+
$[9] = t7;
|
|
6095
6136
|
} else {
|
|
6096
|
-
|
|
6097
|
-
|
|
6137
|
+
t6 = $[8];
|
|
6138
|
+
t7 = $[9];
|
|
6098
6139
|
}
|
|
6099
|
-
useEffect(
|
|
6140
|
+
useEffect(t6, t7);
|
|
6100
6141
|
if (actions.length === 0) return null;
|
|
6101
|
-
|
|
6102
|
-
let t7;
|
|
6142
|
+
let t8;
|
|
6103
6143
|
if ($[10] !== className) {
|
|
6104
|
-
|
|
6144
|
+
t8 = cn("mt-1.5", className);
|
|
6105
6145
|
$[10] = className;
|
|
6106
|
-
$[11] =
|
|
6107
|
-
} else
|
|
6108
|
-
let
|
|
6146
|
+
$[11] = t8;
|
|
6147
|
+
} else t8 = $[11];
|
|
6148
|
+
let t9;
|
|
6109
6149
|
if ($[12] !== isCollapsed) {
|
|
6110
|
-
|
|
6150
|
+
t9 = () => setIsCollapsed(!isCollapsed);
|
|
6111
6151
|
$[12] = isCollapsed;
|
|
6112
|
-
$[13] =
|
|
6113
|
-
} else
|
|
6114
|
-
const t9 = hasPendingApproval ? "bg-amber-500/10 hover:bg-amber-500/20 border border-amber-500/30" : "bg-white/5 hover:bg-white/10";
|
|
6152
|
+
$[13] = t9;
|
|
6153
|
+
} else t9 = $[13];
|
|
6115
6154
|
let t10;
|
|
6116
|
-
if ($[14]
|
|
6117
|
-
t10 = cn("flex w-full items-center justify-between", "
|
|
6118
|
-
$[14] =
|
|
6119
|
-
|
|
6120
|
-
} else t10 = $[15];
|
|
6155
|
+
if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6156
|
+
t10 = cn("flex w-full items-center justify-between", "px-1 py-1", "transition-colors duration-150", "hover:bg-white/5 rounded");
|
|
6157
|
+
$[14] = t10;
|
|
6158
|
+
} else t10 = $[14];
|
|
6121
6159
|
const t11 = !isCollapsed;
|
|
6122
6160
|
let t12;
|
|
6123
|
-
if ($[
|
|
6161
|
+
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6124
6162
|
t12 = /* @__PURE__ */ jsx("span", {
|
|
6125
|
-
className: "text-xs font-medium text-white/
|
|
6163
|
+
className: "text-xs font-medium text-white/70",
|
|
6126
6164
|
children: "Tools"
|
|
6127
6165
|
});
|
|
6128
|
-
$[
|
|
6129
|
-
} else t12 = $[
|
|
6166
|
+
$[15] = t12;
|
|
6167
|
+
} else t12 = $[15];
|
|
6130
6168
|
let t13;
|
|
6131
|
-
if ($[
|
|
6169
|
+
if ($[16] !== completedCount || $[17] !== totalCount) {
|
|
6132
6170
|
t13 = /* @__PURE__ */ jsxs("span", {
|
|
6133
|
-
className: "text-
|
|
6171
|
+
className: "text-[11px] text-white/40",
|
|
6134
6172
|
children: [
|
|
6135
|
-
"(",
|
|
6136
6173
|
completedCount,
|
|
6137
6174
|
"/",
|
|
6138
|
-
totalCount
|
|
6139
|
-
")"
|
|
6175
|
+
totalCount
|
|
6140
6176
|
]
|
|
6141
6177
|
});
|
|
6142
|
-
$[
|
|
6143
|
-
$[
|
|
6144
|
-
$[
|
|
6145
|
-
} else t13 = $[
|
|
6178
|
+
$[16] = completedCount;
|
|
6179
|
+
$[17] = totalCount;
|
|
6180
|
+
$[18] = t13;
|
|
6181
|
+
} else t13 = $[18];
|
|
6146
6182
|
let t14;
|
|
6147
|
-
if ($[
|
|
6183
|
+
if ($[19] !== pendingCount) {
|
|
6148
6184
|
t14 = pendingCount > 0 && /* @__PURE__ */ jsxs("span", {
|
|
6149
|
-
className: "flex items-center gap-1 text-
|
|
6150
|
-
children: [
|
|
6151
|
-
/* @__PURE__ */ jsx(AlertTriangle, { className: "h-3 w-3" }),
|
|
6152
|
-
pendingCount,
|
|
6153
|
-
" pending"
|
|
6154
|
-
]
|
|
6185
|
+
className: "flex items-center gap-1 text-[11px] font-medium text-white/90",
|
|
6186
|
+
children: [/* @__PURE__ */ jsx(AlertTriangle, { className: "h-3 w-3" }), pendingCount]
|
|
6155
6187
|
});
|
|
6156
|
-
$[
|
|
6157
|
-
$[
|
|
6158
|
-
} else t14 = $[
|
|
6188
|
+
$[19] = pendingCount;
|
|
6189
|
+
$[20] = t14;
|
|
6190
|
+
} else t14 = $[20];
|
|
6159
6191
|
let t15;
|
|
6160
|
-
if ($[
|
|
6192
|
+
if ($[21] !== runningCount) {
|
|
6161
6193
|
t15 = runningCount > 0 && /* @__PURE__ */ jsxs("span", {
|
|
6162
|
-
className: "flex items-center gap-1 text-
|
|
6163
|
-
children: [
|
|
6164
|
-
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 animate-pulse rounded-full bg-blue-400" }),
|
|
6165
|
-
runningCount,
|
|
6166
|
-
" running"
|
|
6167
|
-
]
|
|
6194
|
+
className: "flex items-center gap-1 text-[11px] text-white/60",
|
|
6195
|
+
children: [/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 animate-pulse rounded-full bg-white/60" }), runningCount]
|
|
6168
6196
|
});
|
|
6169
|
-
$[
|
|
6170
|
-
$[
|
|
6171
|
-
} else t15 = $[
|
|
6197
|
+
$[21] = runningCount;
|
|
6198
|
+
$[22] = t15;
|
|
6199
|
+
} else t15 = $[22];
|
|
6172
6200
|
let t16;
|
|
6173
|
-
if ($[
|
|
6201
|
+
if ($[23] !== t13 || $[24] !== t14 || $[25] !== t15) {
|
|
6174
6202
|
t16 = /* @__PURE__ */ jsxs("div", {
|
|
6175
|
-
className: "flex items-center gap-
|
|
6203
|
+
className: "flex items-center gap-1.5",
|
|
6176
6204
|
children: [
|
|
6177
6205
|
t12,
|
|
6178
6206
|
t13,
|
|
@@ -6180,90 +6208,101 @@ const PillToolsSection = (t0) => {
|
|
|
6180
6208
|
t15
|
|
6181
6209
|
]
|
|
6182
6210
|
});
|
|
6183
|
-
$[
|
|
6184
|
-
$[
|
|
6185
|
-
$[
|
|
6186
|
-
$[
|
|
6187
|
-
} else t16 = $[
|
|
6188
|
-
const t17 =
|
|
6189
|
-
|
|
6211
|
+
$[23] = t13;
|
|
6212
|
+
$[24] = t14;
|
|
6213
|
+
$[25] = t15;
|
|
6214
|
+
$[26] = t16;
|
|
6215
|
+
} else t16 = $[26];
|
|
6216
|
+
const t17 = !isCollapsed && "rotate-180";
|
|
6217
|
+
let t18;
|
|
6218
|
+
if ($[27] !== t17) {
|
|
6219
|
+
t18 = cn("h-3.5 w-3.5 transition-transform duration-200 text-white/40", t17);
|
|
6220
|
+
$[27] = t17;
|
|
6221
|
+
$[28] = t18;
|
|
6222
|
+
} else t18 = $[28];
|
|
6190
6223
|
let t19;
|
|
6191
|
-
if ($[
|
|
6192
|
-
t19 =
|
|
6193
|
-
$[28] = t17;
|
|
6224
|
+
if ($[29] !== t18) {
|
|
6225
|
+
t19 = /* @__PURE__ */ jsx(ChevronDown, { className: t18 });
|
|
6194
6226
|
$[29] = t18;
|
|
6195
6227
|
$[30] = t19;
|
|
6196
6228
|
} else t19 = $[30];
|
|
6197
6229
|
let t20;
|
|
6198
|
-
if ($[31] !== t19) {
|
|
6199
|
-
t20 = /* @__PURE__ */
|
|
6200
|
-
$[31] = t19;
|
|
6201
|
-
$[32] = t20;
|
|
6202
|
-
} else t20 = $[32];
|
|
6203
|
-
let t21;
|
|
6204
|
-
if ($[33] !== t10 || $[34] !== t11 || $[35] !== t16 || $[36] !== t20 || $[37] !== t8) {
|
|
6205
|
-
t21 = /* @__PURE__ */ jsxs("button", {
|
|
6230
|
+
if ($[31] !== t11 || $[32] !== t16 || $[33] !== t19 || $[34] !== t9) {
|
|
6231
|
+
t20 = /* @__PURE__ */ jsxs("button", {
|
|
6206
6232
|
type: "button",
|
|
6207
|
-
onClick:
|
|
6233
|
+
onClick: t9,
|
|
6208
6234
|
className: t10,
|
|
6209
6235
|
"aria-expanded": t11,
|
|
6210
|
-
children: [t16,
|
|
6236
|
+
children: [t16, t19]
|
|
6211
6237
|
});
|
|
6212
|
-
$[
|
|
6213
|
-
$[
|
|
6214
|
-
$[
|
|
6215
|
-
$[
|
|
6216
|
-
$[
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
$[
|
|
6224
|
-
|
|
6225
|
-
|
|
6238
|
+
$[31] = t11;
|
|
6239
|
+
$[32] = t16;
|
|
6240
|
+
$[33] = t19;
|
|
6241
|
+
$[34] = t9;
|
|
6242
|
+
$[35] = t20;
|
|
6243
|
+
} else t20 = $[35];
|
|
6244
|
+
const t21 = isCollapsed ? "grid-rows-[0fr]" : "grid-rows-[1fr]";
|
|
6245
|
+
let t22;
|
|
6246
|
+
if ($[36] !== t21) {
|
|
6247
|
+
t22 = cn("grid transition-[grid-template-rows] duration-300 ease-out", t21);
|
|
6248
|
+
$[36] = t21;
|
|
6249
|
+
$[37] = t22;
|
|
6250
|
+
} else t22 = $[37];
|
|
6251
|
+
const t23 = isFullScreen ? "max-h-[30vh]" : "max-h-40 sm:max-h-32";
|
|
6226
6252
|
let t24;
|
|
6227
|
-
if ($[
|
|
6228
|
-
t24 =
|
|
6229
|
-
$[
|
|
6230
|
-
|
|
6253
|
+
if ($[38] !== t23) {
|
|
6254
|
+
t24 = cn("mt-1 overflow-y-auto scrollbar-thin scroll-touch", t23);
|
|
6255
|
+
$[38] = t23;
|
|
6256
|
+
$[39] = t24;
|
|
6257
|
+
} else t24 = $[39];
|
|
6231
6258
|
let t25;
|
|
6232
|
-
if ($[
|
|
6233
|
-
t25 =
|
|
6259
|
+
if ($[40] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6260
|
+
t25 = { touchAction: "pan-y" };
|
|
6261
|
+
$[40] = t25;
|
|
6262
|
+
} else t25 = $[40];
|
|
6263
|
+
let t26;
|
|
6264
|
+
if ($[41] === Symbol.for("react.memo_cache_sentinel")) {
|
|
6265
|
+
t26 = /* @__PURE__ */ jsx(PillMessageContent, {});
|
|
6266
|
+
$[41] = t26;
|
|
6267
|
+
} else t26 = $[41];
|
|
6268
|
+
let t27;
|
|
6269
|
+
if ($[42] !== t24) {
|
|
6270
|
+
t27 = /* @__PURE__ */ jsx("div", {
|
|
6234
6271
|
className: "overflow-hidden",
|
|
6235
6272
|
children: /* @__PURE__ */ jsx("div", {
|
|
6236
|
-
className:
|
|
6237
|
-
style:
|
|
6273
|
+
className: t24,
|
|
6274
|
+
style: t25,
|
|
6238
6275
|
onPointerDownCapture: _temp4$1,
|
|
6239
|
-
children:
|
|
6276
|
+
children: t26
|
|
6240
6277
|
})
|
|
6241
6278
|
});
|
|
6242
|
-
$[42] =
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
6279
|
+
$[42] = t24;
|
|
6280
|
+
$[43] = t27;
|
|
6281
|
+
} else t27 = $[43];
|
|
6282
|
+
let t28;
|
|
6283
|
+
if ($[44] !== isCollapsed || $[45] !== t22 || $[46] !== t27) {
|
|
6284
|
+
t28 = /* @__PURE__ */ jsx("div", {
|
|
6285
|
+
className: t22,
|
|
6248
6286
|
"aria-hidden": isCollapsed,
|
|
6249
|
-
children:
|
|
6287
|
+
children: t27
|
|
6250
6288
|
});
|
|
6251
|
-
$[
|
|
6252
|
-
$[
|
|
6253
|
-
$[
|
|
6254
|
-
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6262
|
-
$[
|
|
6263
|
-
$[
|
|
6264
|
-
$[
|
|
6265
|
-
|
|
6266
|
-
|
|
6289
|
+
$[44] = isCollapsed;
|
|
6290
|
+
$[45] = t22;
|
|
6291
|
+
$[46] = t27;
|
|
6292
|
+
$[47] = t28;
|
|
6293
|
+
} else t28 = $[47];
|
|
6294
|
+
let t29;
|
|
6295
|
+
if ($[48] !== t20 || $[49] !== t28 || $[50] !== t8) {
|
|
6296
|
+
t29 = /* @__PURE__ */ jsxs("div", {
|
|
6297
|
+
className: t8,
|
|
6298
|
+
children: [t20, t28]
|
|
6299
|
+
});
|
|
6300
|
+
$[48] = t20;
|
|
6301
|
+
$[49] = t28;
|
|
6302
|
+
$[50] = t8;
|
|
6303
|
+
$[51] = t29;
|
|
6304
|
+
} else t29 = $[51];
|
|
6305
|
+
return t29;
|
|
6267
6306
|
};
|
|
6268
6307
|
function _temp$3(a) {
|
|
6269
6308
|
return a.status === "success";
|
|
@@ -7502,146 +7541,241 @@ function useVoiceBorderStatus() {
|
|
|
7502
7541
|
/**
|
|
7503
7542
|
* PromptBadge
|
|
7504
7543
|
*
|
|
7505
|
-
*
|
|
7506
|
-
* Shows
|
|
7544
|
+
* Intercom-style floating prompt bubbles that appear above the collapsed pill.
|
|
7545
|
+
* Shows up to MAX_PROMPT_BUBBLES in a triangular layout with staggered animations.
|
|
7546
|
+
*
|
|
7547
|
+
* Accessibility:
|
|
7548
|
+
* - Focus-visible rings for keyboard navigation
|
|
7549
|
+
* - Screen reader live region announces suggestions
|
|
7550
|
+
* - Touch-friendly dismiss targets on mobile
|
|
7507
7551
|
*/
|
|
7552
|
+
/** Container animation variants for staggered children */
|
|
7553
|
+
const containerVariants = {
|
|
7554
|
+
hidden: { opacity: 0 },
|
|
7555
|
+
visible: {
|
|
7556
|
+
opacity: 1,
|
|
7557
|
+
transition: {
|
|
7558
|
+
staggerChildren: .08,
|
|
7559
|
+
delayChildren: .05
|
|
7560
|
+
}
|
|
7561
|
+
},
|
|
7562
|
+
exit: {
|
|
7563
|
+
opacity: 0,
|
|
7564
|
+
transition: {
|
|
7565
|
+
staggerChildren: .03,
|
|
7566
|
+
staggerDirection: -1
|
|
7567
|
+
}
|
|
7568
|
+
}
|
|
7569
|
+
};
|
|
7570
|
+
/** Individual bubble animation variants */
|
|
7571
|
+
const bubbleVariants = {
|
|
7572
|
+
hidden: {
|
|
7573
|
+
opacity: 0,
|
|
7574
|
+
y: 10,
|
|
7575
|
+
scale: .9
|
|
7576
|
+
},
|
|
7577
|
+
visible: {
|
|
7578
|
+
opacity: 1,
|
|
7579
|
+
y: 0,
|
|
7580
|
+
scale: 1,
|
|
7581
|
+
transition: {
|
|
7582
|
+
type: "spring",
|
|
7583
|
+
stiffness: 400,
|
|
7584
|
+
damping: 25
|
|
7585
|
+
}
|
|
7586
|
+
},
|
|
7587
|
+
exit: {
|
|
7588
|
+
opacity: 0,
|
|
7589
|
+
y: 5,
|
|
7590
|
+
scale: .95,
|
|
7591
|
+
transition: { duration: .1 }
|
|
7592
|
+
}
|
|
7593
|
+
};
|
|
7594
|
+
/** Bubble button styles */
|
|
7595
|
+
const bubbleStyles = cn("flex items-center px-3 py-1.5", "bg-white dark:bg-zinc-800", "rounded-full", "shadow-lg shadow-black/10 dark:shadow-black/30", "border border-zinc-200/80 dark:border-zinc-700/80", "text-sm text-zinc-700 dark:text-zinc-200", "hover:bg-zinc-50 dark:hover:bg-zinc-700", "transition-colors duration-100", "whitespace-nowrap", "focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-1");
|
|
7596
|
+
/** Dismiss badge base styles (shared between mobile and desktop) */
|
|
7597
|
+
const dismissBadgeBaseStyles = cn("absolute -top-1.5 -right-1.5", "flex items-center justify-center", "rounded-full", "bg-zinc-100 dark:bg-zinc-700", "border border-zinc-200 dark:border-zinc-600", "text-zinc-400 dark:text-zinc-400", "hover:bg-zinc-200 dark:hover:bg-zinc-600", "hover:text-zinc-600 dark:hover:text-zinc-200", "shadow-sm", "transition-all duration-150", "focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500");
|
|
7508
7598
|
/**
|
|
7509
|
-
* Floating
|
|
7599
|
+
* Floating prompt bubbles above the pill.
|
|
7510
7600
|
* Positioned absolutely above parent - parent should be relative.
|
|
7511
7601
|
*/
|
|
7512
7602
|
const PromptBadge = (t0) => {
|
|
7513
|
-
const $ = c(
|
|
7603
|
+
const $ = c(45);
|
|
7514
7604
|
const { prompts, onSelect, className } = t0;
|
|
7515
|
-
const [
|
|
7605
|
+
const [isDismissed, setIsDismissed] = useState(false);
|
|
7606
|
+
const { isMobile } = useMobileDetect();
|
|
7516
7607
|
let t1;
|
|
7517
7608
|
if ($[0] !== onSelect) {
|
|
7518
7609
|
t1 = (prompt) => {
|
|
7519
|
-
setIsExpanded(false);
|
|
7520
7610
|
onSelect(prompt);
|
|
7521
7611
|
};
|
|
7522
7612
|
$[0] = onSelect;
|
|
7523
7613
|
$[1] = t1;
|
|
7524
7614
|
} else t1 = $[1];
|
|
7525
7615
|
const handleSelect = t1;
|
|
7526
|
-
if (prompts.length === 0) return null;
|
|
7527
|
-
const firstPrompt = prompts[0];
|
|
7528
|
-
const hasMore = prompts.length > 1;
|
|
7529
7616
|
let t2;
|
|
7530
|
-
if ($[2]
|
|
7531
|
-
t2 =
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
|
|
7617
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7618
|
+
t2 = (e) => {
|
|
7619
|
+
e.stopPropagation();
|
|
7620
|
+
setIsDismissed(true);
|
|
7621
|
+
};
|
|
7622
|
+
$[2] = t2;
|
|
7623
|
+
} else t2 = $[2];
|
|
7624
|
+
const handleDismiss = t2;
|
|
7625
|
+
if (prompts.length === 0 || isDismissed) return null;
|
|
7626
|
+
let T0;
|
|
7627
|
+
let T1;
|
|
7628
|
+
let t10;
|
|
7629
|
+
let t11;
|
|
7630
|
+
let t12;
|
|
7631
|
+
let t13;
|
|
7632
|
+
let t14;
|
|
7535
7633
|
let t3;
|
|
7536
|
-
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7537
|
-
t3 = () => setIsExpanded(false);
|
|
7538
|
-
$[4] = t3;
|
|
7539
|
-
} else t3 = $[4];
|
|
7540
7634
|
let t4;
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
|
|
7592
|
-
|
|
7593
|
-
|
|
7594
|
-
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
className: "py-1 max-h-[280px] sm:max-h-[200px] overflow-y-auto scrollbar-thin scroll-touch",
|
|
7602
|
-
children: prompts.map((prompt_0) => /* @__PURE__ */ jsx("button", {
|
|
7603
|
-
type: "button",
|
|
7604
|
-
onClick: () => handleSelect(prompt_0),
|
|
7605
|
-
className: cn("w-full px-3 py-2 text-left", "hover:bg-zinc-50 dark:hover:bg-zinc-700/50", "transition-colors duration-100", "group"),
|
|
7606
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
7607
|
-
className: "flex items-start gap-2",
|
|
7608
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
7609
|
-
className: "text-zinc-400 dark:text-zinc-500 text-sm mt-0.5",
|
|
7610
|
-
children: "💬"
|
|
7611
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
7612
|
-
className: "flex-1 min-w-0",
|
|
7613
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
7614
|
-
className: cn("text-sm font-medium truncate", "text-zinc-700 dark:text-zinc-200", "group-hover:text-zinc-900 dark:group-hover:text-white"),
|
|
7615
|
-
children: prompt_0.name
|
|
7616
|
-
}), prompt_0.description && /* @__PURE__ */ jsx("div", {
|
|
7617
|
-
className: "text-xs text-zinc-500 dark:text-zinc-400 truncate mt-0.5",
|
|
7618
|
-
children: prompt_0.description
|
|
7619
|
-
})]
|
|
7620
|
-
})]
|
|
7621
|
-
})
|
|
7622
|
-
}, prompt_0.name))
|
|
7635
|
+
let t5;
|
|
7636
|
+
let t6;
|
|
7637
|
+
let t7;
|
|
7638
|
+
let t8;
|
|
7639
|
+
let t9;
|
|
7640
|
+
if ($[3] !== className || $[4] !== handleSelect || $[5] !== isMobile || $[6] !== prompts) {
|
|
7641
|
+
const visiblePrompts = prompts.slice(0, MAX_PROMPT_BUBBLES);
|
|
7642
|
+
const t15$1 = isMobile ? "w-6 h-6" : "w-4 h-4";
|
|
7643
|
+
const t16$1 = isMobile ? "opacity-100 scale-100" : "opacity-0 group-hover:opacity-100 scale-75 group-hover:scale-100";
|
|
7644
|
+
let t17$1;
|
|
7645
|
+
if ($[21] !== t15$1 || $[22] !== t16$1) {
|
|
7646
|
+
t17$1 = cn(dismissBadgeBaseStyles, t15$1, t16$1);
|
|
7647
|
+
$[21] = t15$1;
|
|
7648
|
+
$[22] = t16$1;
|
|
7649
|
+
$[23] = t17$1;
|
|
7650
|
+
} else t17$1 = $[23];
|
|
7651
|
+
const dismissBadgeStyles = t17$1;
|
|
7652
|
+
if ($[24] !== className) {
|
|
7653
|
+
t13 = cn("absolute bottom-full left-1/2 -translate-x-1/2 mb-3 z-20", className);
|
|
7654
|
+
$[24] = className;
|
|
7655
|
+
$[25] = t13;
|
|
7656
|
+
} else t13 = $[25];
|
|
7657
|
+
t14 = /* @__PURE__ */ jsxs("div", {
|
|
7658
|
+
role: "status",
|
|
7659
|
+
"aria-live": "polite",
|
|
7660
|
+
className: "sr-only",
|
|
7661
|
+
children: [
|
|
7662
|
+
visiblePrompts.length,
|
|
7663
|
+
" suggestion",
|
|
7664
|
+
visiblePrompts.length !== 1 ? "s" : "",
|
|
7665
|
+
" available"
|
|
7666
|
+
]
|
|
7667
|
+
});
|
|
7668
|
+
T1 = AnimatePresence;
|
|
7669
|
+
t12 = "wait";
|
|
7670
|
+
T0 = motion.div;
|
|
7671
|
+
t3 = "bubbles";
|
|
7672
|
+
t4 = containerVariants;
|
|
7673
|
+
t5 = "hidden";
|
|
7674
|
+
t6 = "visible";
|
|
7675
|
+
t7 = "exit";
|
|
7676
|
+
t8 = "flex items-end gap-2";
|
|
7677
|
+
t9 = "group";
|
|
7678
|
+
t10 = "Suggested prompts";
|
|
7679
|
+
t11 = visiblePrompts.map((prompt_0, index) => {
|
|
7680
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
7681
|
+
className: cn("group relative", visiblePrompts.length === 3 && index === 1 && "mb-3"),
|
|
7682
|
+
children: [/* @__PURE__ */ jsx(motion.button, {
|
|
7683
|
+
type: "button",
|
|
7684
|
+
variants: bubbleVariants,
|
|
7685
|
+
onClick: () => handleSelect(prompt_0),
|
|
7686
|
+
className: bubbleStyles,
|
|
7687
|
+
title: prompt_0.description || prompt_0.name,
|
|
7688
|
+
children: /* @__PURE__ */ jsx("span", { children: prompt_0.name })
|
|
7689
|
+
}), /* @__PURE__ */ jsx("button", {
|
|
7690
|
+
type: "button",
|
|
7691
|
+
onClick: handleDismiss,
|
|
7692
|
+
className: dismissBadgeStyles,
|
|
7693
|
+
"aria-label": "Dismiss suggestions",
|
|
7694
|
+
children: /* @__PURE__ */ jsx(X, { size: isMobile ? 12 : 10 })
|
|
7623
7695
|
})]
|
|
7624
|
-
},
|
|
7696
|
+
}, prompt_0.name);
|
|
7625
7697
|
});
|
|
7626
|
-
$[
|
|
7627
|
-
$[
|
|
7628
|
-
$[
|
|
7629
|
-
$[
|
|
7630
|
-
$[
|
|
7631
|
-
$[
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7638
|
-
|
|
7698
|
+
$[3] = className;
|
|
7699
|
+
$[4] = handleSelect;
|
|
7700
|
+
$[5] = isMobile;
|
|
7701
|
+
$[6] = prompts;
|
|
7702
|
+
$[7] = T0;
|
|
7703
|
+
$[8] = T1;
|
|
7704
|
+
$[9] = t10;
|
|
7705
|
+
$[10] = t11;
|
|
7706
|
+
$[11] = t12;
|
|
7707
|
+
$[12] = t13;
|
|
7708
|
+
$[13] = t14;
|
|
7709
|
+
$[14] = t3;
|
|
7710
|
+
$[15] = t4;
|
|
7711
|
+
$[16] = t5;
|
|
7712
|
+
$[17] = t6;
|
|
7713
|
+
$[18] = t7;
|
|
7714
|
+
$[19] = t8;
|
|
7715
|
+
$[20] = t9;
|
|
7716
|
+
} else {
|
|
7717
|
+
T0 = $[7];
|
|
7718
|
+
T1 = $[8];
|
|
7719
|
+
t10 = $[9];
|
|
7720
|
+
t11 = $[10];
|
|
7721
|
+
t12 = $[11];
|
|
7722
|
+
t13 = $[12];
|
|
7723
|
+
t14 = $[13];
|
|
7724
|
+
t3 = $[14];
|
|
7725
|
+
t4 = $[15];
|
|
7726
|
+
t5 = $[16];
|
|
7727
|
+
t6 = $[17];
|
|
7728
|
+
t7 = $[18];
|
|
7729
|
+
t8 = $[19];
|
|
7730
|
+
t9 = $[20];
|
|
7731
|
+
}
|
|
7732
|
+
let t15;
|
|
7733
|
+
if ($[26] !== T0 || $[27] !== t10 || $[28] !== t11 || $[29] !== t3 || $[30] !== t4 || $[31] !== t5 || $[32] !== t6 || $[33] !== t7 || $[34] !== t8 || $[35] !== t9) {
|
|
7734
|
+
t15 = /* @__PURE__ */ jsx(T0, {
|
|
7735
|
+
variants: t4,
|
|
7736
|
+
initial: t5,
|
|
7737
|
+
animate: t6,
|
|
7738
|
+
exit: t7,
|
|
7739
|
+
className: t8,
|
|
7740
|
+
role: t9,
|
|
7741
|
+
"aria-label": t10,
|
|
7742
|
+
children: t11
|
|
7743
|
+
}, t3);
|
|
7744
|
+
$[26] = T0;
|
|
7745
|
+
$[27] = t10;
|
|
7746
|
+
$[28] = t11;
|
|
7747
|
+
$[29] = t3;
|
|
7748
|
+
$[30] = t4;
|
|
7749
|
+
$[31] = t5;
|
|
7750
|
+
$[32] = t6;
|
|
7751
|
+
$[33] = t7;
|
|
7752
|
+
$[34] = t8;
|
|
7753
|
+
$[35] = t9;
|
|
7754
|
+
$[36] = t15;
|
|
7755
|
+
} else t15 = $[36];
|
|
7756
|
+
let t16;
|
|
7757
|
+
if ($[37] !== T1 || $[38] !== t12 || $[39] !== t15) {
|
|
7758
|
+
t16 = /* @__PURE__ */ jsx(T1, {
|
|
7759
|
+
mode: t12,
|
|
7760
|
+
children: t15
|
|
7639
7761
|
});
|
|
7640
|
-
$[
|
|
7641
|
-
$[
|
|
7642
|
-
$[
|
|
7643
|
-
|
|
7644
|
-
|
|
7762
|
+
$[37] = T1;
|
|
7763
|
+
$[38] = t12;
|
|
7764
|
+
$[39] = t15;
|
|
7765
|
+
$[40] = t16;
|
|
7766
|
+
} else t16 = $[40];
|
|
7767
|
+
let t17;
|
|
7768
|
+
if ($[41] !== t13 || $[42] !== t14 || $[43] !== t16) {
|
|
7769
|
+
t17 = /* @__PURE__ */ jsxs("div", {
|
|
7770
|
+
className: t13,
|
|
7771
|
+
children: [t14, t16]
|
|
7772
|
+
});
|
|
7773
|
+
$[41] = t13;
|
|
7774
|
+
$[42] = t14;
|
|
7775
|
+
$[43] = t16;
|
|
7776
|
+
$[44] = t17;
|
|
7777
|
+
} else t17 = $[44];
|
|
7778
|
+
return t17;
|
|
7645
7779
|
};
|
|
7646
7780
|
|
|
7647
7781
|
//#endregion
|
|
@@ -7657,7 +7791,7 @@ const PromptBadge = (t0) => {
|
|
|
7657
7791
|
* Horizontally scrollable list of compact prompt chips.
|
|
7658
7792
|
*/
|
|
7659
7793
|
const PromptSuggestions = (t0) => {
|
|
7660
|
-
const $ = c(
|
|
7794
|
+
const $ = c(19);
|
|
7661
7795
|
const { prompts, onSelect, className } = t0;
|
|
7662
7796
|
const scrollRef = useRef(null);
|
|
7663
7797
|
let t1;
|
|
@@ -7701,32 +7835,21 @@ const PromptSuggestions = (t0) => {
|
|
|
7701
7835
|
$[6] = t5;
|
|
7702
7836
|
} else t5 = $[6];
|
|
7703
7837
|
let t6;
|
|
7838
|
+
let t7;
|
|
7704
7839
|
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7705
|
-
t6 =
|
|
7706
|
-
|
|
7707
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
7708
|
-
className: "text-xs text-white/40",
|
|
7709
|
-
children: "Suggestions"
|
|
7710
|
-
})
|
|
7711
|
-
});
|
|
7840
|
+
t6 = cn("flex gap-2 overflow-x-auto scrollbar-hide", "pb-1 -mb-1");
|
|
7841
|
+
t7 = { touchAction: "pan-x" };
|
|
7712
7842
|
$[7] = t6;
|
|
7713
|
-
} else t6 = $[7];
|
|
7714
|
-
let t7;
|
|
7715
|
-
let t8;
|
|
7716
|
-
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7717
|
-
t7 = cn("flex gap-2 overflow-x-auto scrollbar-hide", "pb-1 -mb-1");
|
|
7718
|
-
t8 = { touchAction: "pan-x" };
|
|
7719
7843
|
$[8] = t7;
|
|
7720
|
-
$[9] = t8;
|
|
7721
7844
|
} else {
|
|
7845
|
+
t6 = $[7];
|
|
7722
7846
|
t7 = $[8];
|
|
7723
|
-
t8 = $[9];
|
|
7724
7847
|
}
|
|
7725
|
-
let
|
|
7726
|
-
if ($[
|
|
7727
|
-
let
|
|
7728
|
-
if ($[
|
|
7729
|
-
|
|
7848
|
+
let t8;
|
|
7849
|
+
if ($[9] !== handleClick || $[10] !== prompts) {
|
|
7850
|
+
let t9$1;
|
|
7851
|
+
if ($[12] !== handleClick) {
|
|
7852
|
+
t9$1 = (prompt_0, index) => /* @__PURE__ */ jsx(motion.button, {
|
|
7730
7853
|
type: "button",
|
|
7731
7854
|
initial: {
|
|
7732
7855
|
opacity: 0,
|
|
@@ -7749,51 +7872,45 @@ const PromptSuggestions = (t0) => {
|
|
|
7749
7872
|
onClick: () => handleClick(prompt_0),
|
|
7750
7873
|
className: cn("flex-shrink-0", "px-2.5 py-1 rounded-full", "bg-white/10 hover:bg-white/20", "text-white/80 hover:text-white", "text-xs font-medium", "border border-white/10 hover:border-white/20", "transition-all duration-150", "cursor-pointer", "whitespace-nowrap"),
|
|
7751
7874
|
title: prompt_0.description || prompt_0.name,
|
|
7752
|
-
children:
|
|
7753
|
-
className: "flex items-center gap-1",
|
|
7754
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
7755
|
-
className: "opacity-60",
|
|
7756
|
-
children: "💬"
|
|
7757
|
-
}), prompt_0.name]
|
|
7758
|
-
})
|
|
7875
|
+
children: prompt_0.name
|
|
7759
7876
|
}, prompt_0.name);
|
|
7760
|
-
$[
|
|
7761
|
-
$[
|
|
7762
|
-
} else
|
|
7763
|
-
|
|
7764
|
-
$[
|
|
7765
|
-
$[
|
|
7766
|
-
$[
|
|
7767
|
-
} else
|
|
7768
|
-
let
|
|
7769
|
-
if ($[
|
|
7770
|
-
|
|
7877
|
+
$[12] = handleClick;
|
|
7878
|
+
$[13] = t9$1;
|
|
7879
|
+
} else t9$1 = $[13];
|
|
7880
|
+
t8 = prompts.map(t9$1);
|
|
7881
|
+
$[9] = handleClick;
|
|
7882
|
+
$[10] = prompts;
|
|
7883
|
+
$[11] = t8;
|
|
7884
|
+
} else t8 = $[11];
|
|
7885
|
+
let t9;
|
|
7886
|
+
if ($[14] !== t8) {
|
|
7887
|
+
t9 = /* @__PURE__ */ jsx("div", {
|
|
7771
7888
|
ref: scrollRef,
|
|
7772
|
-
className:
|
|
7773
|
-
style:
|
|
7889
|
+
className: t6,
|
|
7890
|
+
style: t7,
|
|
7774
7891
|
onPointerDownCapture: _temp$2,
|
|
7775
7892
|
children: /* @__PURE__ */ jsx(AnimatePresence, {
|
|
7776
7893
|
mode: "popLayout",
|
|
7777
|
-
children:
|
|
7894
|
+
children: t8
|
|
7778
7895
|
})
|
|
7779
7896
|
});
|
|
7897
|
+
$[14] = t8;
|
|
7780
7898
|
$[15] = t9;
|
|
7781
|
-
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
t11 = /* @__PURE__ */ jsxs(motion.div, {
|
|
7899
|
+
} else t9 = $[15];
|
|
7900
|
+
let t10;
|
|
7901
|
+
if ($[16] !== t5 || $[17] !== t9) {
|
|
7902
|
+
t10 = /* @__PURE__ */ jsx(motion.div, {
|
|
7786
7903
|
initial: t2,
|
|
7787
7904
|
animate: t3,
|
|
7788
7905
|
exit: t4,
|
|
7789
7906
|
className: t5,
|
|
7790
|
-
children:
|
|
7907
|
+
children: t9
|
|
7791
7908
|
});
|
|
7792
|
-
$[
|
|
7793
|
-
$[
|
|
7794
|
-
$[
|
|
7795
|
-
} else
|
|
7796
|
-
return
|
|
7909
|
+
$[16] = t5;
|
|
7910
|
+
$[17] = t9;
|
|
7911
|
+
$[18] = t10;
|
|
7912
|
+
} else t10 = $[18];
|
|
7913
|
+
return t10;
|
|
7797
7914
|
};
|
|
7798
7915
|
function _temp$2(e) {
|
|
7799
7916
|
return e.stopPropagation();
|
|
@@ -7864,68 +7981,65 @@ function _temp$1(thread) {
|
|
|
7864
7981
|
* Shows a typing cursor and scrolls to keep latest content visible.
|
|
7865
7982
|
*/
|
|
7866
7983
|
const StreamingResponse = (t0) => {
|
|
7867
|
-
const $ = c(
|
|
7868
|
-
const { maxHeight: t1, className } = t0;
|
|
7984
|
+
const $ = c(15);
|
|
7985
|
+
const { maxHeight: t1, className, isFullScreen: t2 } = t0;
|
|
7869
7986
|
const maxHeight = t1 === void 0 ? "8rem" : t1;
|
|
7987
|
+
const isFullScreen = t2 === void 0 ? false : t2;
|
|
7870
7988
|
const streamingText = useStreamingText();
|
|
7871
7989
|
if (!streamingText) return null;
|
|
7872
|
-
let
|
|
7990
|
+
let t3;
|
|
7873
7991
|
if ($[0] !== className) {
|
|
7874
|
-
|
|
7992
|
+
t3 = cn("rounded-lg bg-white/5 border border-white/10 p-3", "overflow-y-auto scrollbar-thin scroll-touch", "mb-1.5", className);
|
|
7875
7993
|
$[0] = className;
|
|
7876
|
-
$[1] =
|
|
7877
|
-
} else
|
|
7878
|
-
let t3;
|
|
7879
|
-
if ($[2] !== maxHeight) {
|
|
7880
|
-
t3 = {
|
|
7881
|
-
maxHeight,
|
|
7882
|
-
touchAction: "pan-y"
|
|
7883
|
-
};
|
|
7884
|
-
$[2] = maxHeight;
|
|
7885
|
-
$[3] = t3;
|
|
7886
|
-
} else t3 = $[3];
|
|
7994
|
+
$[1] = t3;
|
|
7995
|
+
} else t3 = $[1];
|
|
7887
7996
|
let t4;
|
|
7888
|
-
if ($[
|
|
7889
|
-
t4 =
|
|
7997
|
+
if ($[2] !== isFullScreen || $[3] !== maxHeight) {
|
|
7998
|
+
t4 = isFullScreen ? void 0 : { maxHeight };
|
|
7999
|
+
$[2] = isFullScreen;
|
|
8000
|
+
$[3] = maxHeight;
|
|
8001
|
+
$[4] = t4;
|
|
8002
|
+
} else t4 = $[4];
|
|
8003
|
+
const t5 = !isFullScreen;
|
|
8004
|
+
let t6;
|
|
8005
|
+
if ($[5] !== streamingText || $[6] !== t5) {
|
|
8006
|
+
t6 = /* @__PURE__ */ jsx(PillMarkdown, {
|
|
7890
8007
|
content: streamingText,
|
|
7891
8008
|
className: "text-white/90",
|
|
7892
|
-
compact:
|
|
8009
|
+
compact: t5
|
|
7893
8010
|
});
|
|
7894
|
-
$[
|
|
7895
|
-
$[5] = t4;
|
|
7896
|
-
} else t4 = $[5];
|
|
7897
|
-
let t5;
|
|
7898
|
-
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7899
|
-
t5 = /* @__PURE__ */ jsx("span", { className: "inline-block w-0.5 h-4 bg-blue-400 ml-0.5 animate-pulse align-middle" });
|
|
8011
|
+
$[5] = streamingText;
|
|
7900
8012
|
$[6] = t5;
|
|
7901
|
-
|
|
7902
|
-
|
|
7903
|
-
|
|
7904
|
-
|
|
8013
|
+
$[7] = t6;
|
|
8014
|
+
} else t6 = $[7];
|
|
8015
|
+
let t7;
|
|
8016
|
+
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
8017
|
+
t7 = /* @__PURE__ */ jsx("span", { className: "inline-block w-0.5 h-4 bg-blue-400 ml-0.5 animate-pulse align-middle" });
|
|
8018
|
+
$[8] = t7;
|
|
8019
|
+
} else t7 = $[8];
|
|
8020
|
+
let t8;
|
|
8021
|
+
if ($[9] !== t6) {
|
|
8022
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
7905
8023
|
className: "relative",
|
|
7906
|
-
children: [
|
|
8024
|
+
children: [t6, t7]
|
|
7907
8025
|
});
|
|
7908
|
-
$[
|
|
7909
|
-
$[
|
|
7910
|
-
} else
|
|
7911
|
-
let
|
|
7912
|
-
if ($[
|
|
7913
|
-
|
|
7914
|
-
className:
|
|
7915
|
-
style:
|
|
7916
|
-
|
|
7917
|
-
children: t6
|
|
8026
|
+
$[9] = t6;
|
|
8027
|
+
$[10] = t8;
|
|
8028
|
+
} else t8 = $[10];
|
|
8029
|
+
let t9;
|
|
8030
|
+
if ($[11] !== t3 || $[12] !== t4 || $[13] !== t8) {
|
|
8031
|
+
t9 = /* @__PURE__ */ jsx("div", {
|
|
8032
|
+
className: t3,
|
|
8033
|
+
style: t4,
|
|
8034
|
+
children: t8
|
|
7918
8035
|
});
|
|
7919
|
-
$[
|
|
7920
|
-
$[
|
|
7921
|
-
$[
|
|
7922
|
-
$[
|
|
7923
|
-
} else
|
|
7924
|
-
return
|
|
8036
|
+
$[11] = t3;
|
|
8037
|
+
$[12] = t4;
|
|
8038
|
+
$[13] = t8;
|
|
8039
|
+
$[14] = t9;
|
|
8040
|
+
} else t9 = $[14];
|
|
8041
|
+
return t9;
|
|
7925
8042
|
};
|
|
7926
|
-
function _temp5(e) {
|
|
7927
|
-
return e.stopPropagation();
|
|
7928
|
-
}
|
|
7929
8043
|
|
|
7930
8044
|
//#endregion
|
|
7931
8045
|
//#region src/components/pill/ToolStatusBorder.tsx
|
|
@@ -8096,6 +8210,8 @@ function useToolBorderStatus(hasRunningAction, lastActionStatus) {
|
|
|
8096
8210
|
const AgentPill = ({ position = "bottom-center", showVoiceButton = false, isVoiceActive = false, onVoiceToggle, autoCollapse = true, className }) => {
|
|
8097
8211
|
const { messages, isRunning, hasMessages, currentAction, lastCompletedAction, summary, voice, tools, isVoiceActive: agentVoiceActive } = useAgent();
|
|
8098
8212
|
const hasPendingApproval = useHasPendingToolCalls();
|
|
8213
|
+
const pendingToolCalls = usePendingToolCalls();
|
|
8214
|
+
const threadRuntime = useThreadRuntime();
|
|
8099
8215
|
const agentUI = useOptionalAgentUI();
|
|
8100
8216
|
const userMode = agentUI?.userMode ?? "collapsed";
|
|
8101
8217
|
const setUserMode = agentUI?.setUserMode ?? (() => {});
|
|
@@ -8108,6 +8224,9 @@ const AgentPill = ({ position = "bottom-center", showVoiceButton = false, isVoic
|
|
|
8108
8224
|
};
|
|
8109
8225
|
const setDragPosition = agentUI?.setPosition ?? (() => {});
|
|
8110
8226
|
const resetPosition = agentUI?.resetPosition ?? (() => {});
|
|
8227
|
+
const isFullScreen = agentUI?.isFullScreen ?? false;
|
|
8228
|
+
const enterFullScreen = agentUI?.enterFullScreen ?? (() => {});
|
|
8229
|
+
const exitFullScreen = agentUI?.exitFullScreen ?? (() => {});
|
|
8111
8230
|
const dragControls = useDragControls();
|
|
8112
8231
|
const constraintsRef = useRef(null);
|
|
8113
8232
|
const autoCollapseTimeoutRef = useRef(null);
|
|
@@ -8228,15 +8347,52 @@ const AgentPill = ({ position = "bottom-center", showVoiceButton = false, isVoic
|
|
|
8228
8347
|
}
|
|
8229
8348
|
}
|
|
8230
8349
|
} catch (err) {
|
|
8231
|
-
|
|
8350
|
+
debugLog("AgentPill", "Failed to get prompt", err);
|
|
8232
8351
|
}
|
|
8233
8352
|
}, [
|
|
8234
8353
|
getPrompt,
|
|
8235
8354
|
composerRuntime,
|
|
8236
8355
|
setUserMode
|
|
8237
8356
|
]);
|
|
8357
|
+
const handleElicitationDeny = useCallback((reason) => {
|
|
8358
|
+
if (pendingToolCalls.length > 0) {
|
|
8359
|
+
const firstTool = pendingToolCalls[0];
|
|
8360
|
+
const message = formatToolDenialWithReason(reason);
|
|
8361
|
+
resolvePendingToolCall(threadRuntime, firstTool.messageId, firstTool.toolCallId, message);
|
|
8362
|
+
}
|
|
8363
|
+
}, [pendingToolCalls, threadRuntime]);
|
|
8238
8364
|
const borderRadius = mode === "collapsed" || mode === "hovered" ? PILL_BORDER_RADIUS.pill : PILL_BORDER_RADIUS.rounded;
|
|
8239
8365
|
const isExpanded_0 = mode === "composing" || mode === "active" || mode === "expanded";
|
|
8366
|
+
const { handlers: pinchHandlers } = usePinchGesture({
|
|
8367
|
+
onPinchOut: () => {
|
|
8368
|
+
if (isExpanded_0 && !isFullScreen && !isVoiceModeActive) enterFullScreen();
|
|
8369
|
+
},
|
|
8370
|
+
onPinchIn: () => {
|
|
8371
|
+
if (isFullScreen) exitFullScreen();
|
|
8372
|
+
},
|
|
8373
|
+
enabled: isMobile && (isExpanded_0 || isFullScreen)
|
|
8374
|
+
});
|
|
8375
|
+
const [isComposerReady, setComposerReady] = useState(false);
|
|
8376
|
+
useEffect(() => {
|
|
8377
|
+
if (isExpanded_0) {
|
|
8378
|
+
const timer = setTimeout(() => setComposerReady(true), 200);
|
|
8379
|
+
return () => {
|
|
8380
|
+
clearTimeout(timer);
|
|
8381
|
+
setComposerReady(false);
|
|
8382
|
+
};
|
|
8383
|
+
} else setComposerReady(false);
|
|
8384
|
+
}, [isExpanded_0]);
|
|
8385
|
+
useEffect(() => {
|
|
8386
|
+
if (!isFullScreen) return;
|
|
8387
|
+
const handleKeyDown = (e) => {
|
|
8388
|
+
if (e.key === "Escape") {
|
|
8389
|
+
e.preventDefault();
|
|
8390
|
+
exitFullScreen();
|
|
8391
|
+
}
|
|
8392
|
+
};
|
|
8393
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
8394
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
8395
|
+
}, [isFullScreen, exitFullScreen]);
|
|
8240
8396
|
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
8241
8397
|
ref: constraintsRef,
|
|
8242
8398
|
className: "fixed inset-0 pointer-events-none"
|
|
@@ -8264,7 +8420,8 @@ const AgentPill = ({ position = "bottom-center", showVoiceButton = false, isVoic
|
|
|
8264
8420
|
damping: 30
|
|
8265
8421
|
},
|
|
8266
8422
|
className: cn("relative", isExpanded_0 && "cursor-grab active:cursor-grabbing"),
|
|
8267
|
-
style: { touchAction: isExpanded_0 ? "none" : "auto" },
|
|
8423
|
+
style: { touchAction: isExpanded_0 || isFullScreen ? "none" : "auto" },
|
|
8424
|
+
...pinchHandlers,
|
|
8268
8425
|
children: [
|
|
8269
8426
|
mode === "collapsed" && prompts.length > 0 && /* @__PURE__ */ jsx(PromptBadge, {
|
|
8270
8427
|
prompts,
|
|
@@ -8281,49 +8438,78 @@ const AgentPill = ({ position = "bottom-center", showVoiceButton = false, isVoic
|
|
|
8281
8438
|
children: /* @__PURE__ */ jsxs(PillContainer, {
|
|
8282
8439
|
mode,
|
|
8283
8440
|
onModeChange: handleModeChange,
|
|
8441
|
+
isFullScreen,
|
|
8284
8442
|
children: [
|
|
8285
8443
|
(isVoiceModeActive || isExpanded_0) && /* @__PURE__ */ jsxs("div", {
|
|
8286
8444
|
className: "flex items-center justify-between mb-1 -mt-1",
|
|
8287
8445
|
children: [/* @__PURE__ */ jsx("div", {
|
|
8288
8446
|
className: "flex items-center text-white/30 p-1 -m-1 cursor-grab active:cursor-grabbing",
|
|
8289
|
-
onPointerDown: (
|
|
8447
|
+
onPointerDown: (e_0) => dragControls.start(e_0),
|
|
8290
8448
|
"aria-label": ARIA_LABELS.dragHandle,
|
|
8291
8449
|
role: "button",
|
|
8292
8450
|
tabIndex: 0,
|
|
8293
8451
|
children: /* @__PURE__ */ jsx(GripHorizontal, { className: "h-4 w-4 sm:h-3 sm:w-3" })
|
|
8294
8452
|
}), /* @__PURE__ */ jsxs("div", {
|
|
8295
8453
|
className: "flex items-center gap-2 sm:gap-1",
|
|
8296
|
-
children: [
|
|
8297
|
-
|
|
8298
|
-
|
|
8299
|
-
|
|
8300
|
-
|
|
8301
|
-
|
|
8302
|
-
|
|
8454
|
+
children: [
|
|
8455
|
+
!isMobile && !isVoiceModeActive && /* @__PURE__ */ jsx("button", {
|
|
8456
|
+
type: "button",
|
|
8457
|
+
onClick: isFullScreen ? exitFullScreen : enterFullScreen,
|
|
8458
|
+
className: cn("min-w-7 min-h-7", "flex items-center justify-center", "p-1 rounded-full", "hover:bg-white/10 active:bg-white/20", "text-white/40 hover:text-white/70", "transition-colors duration-150"),
|
|
8459
|
+
"aria-label": isFullScreen ? ARIA_LABELS.collapseFullScreen : ARIA_LABELS.expandFullScreen,
|
|
8460
|
+
children: isFullScreen ? /* @__PURE__ */ jsx(Minimize, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(Expand, { className: "h-3.5 w-3.5" })
|
|
8461
|
+
}),
|
|
8462
|
+
/* @__PURE__ */ jsx(ApprovalModeIndicator, {}),
|
|
8463
|
+
/* @__PURE__ */ jsx("button", {
|
|
8464
|
+
type: "button",
|
|
8465
|
+
onClick: isVoiceModeActive ? handleVoiceToggle : isFullScreen ? exitFullScreen : handleCollapse,
|
|
8466
|
+
className: cn("min-w-11 min-h-11 sm:min-w-7 sm:min-h-7", "flex items-center justify-center", "p-2 sm:p-1 rounded-full", "hover:bg-white/10 active:bg-white/20", "text-white/40 hover:text-white/70", "transition-colors duration-150"),
|
|
8467
|
+
"aria-label": isVoiceModeActive ? ARIA_LABELS.endVoiceSession : isFullScreen ? ARIA_LABELS.collapseFullScreen : ARIA_LABELS.closeAssistant,
|
|
8468
|
+
children: /* @__PURE__ */ jsx(X, { className: "h-5 w-5 sm:h-3.5 sm:w-3.5" })
|
|
8469
|
+
})
|
|
8470
|
+
]
|
|
8303
8471
|
})]
|
|
8304
8472
|
}),
|
|
8305
|
-
/* @__PURE__ */ jsx(AnimatePresence, {
|
|
8473
|
+
!isFullScreen && /* @__PURE__ */ jsx(AnimatePresence, {
|
|
8306
8474
|
mode: "wait",
|
|
8307
8475
|
children: isVoiceModeActive && /* @__PURE__ */ jsx(PillVoice, { onEnd: handleVoiceToggle }, "voice-mode")
|
|
8308
8476
|
}),
|
|
8309
|
-
!isVoiceModeActive &&
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8313
|
-
|
|
8314
|
-
|
|
8315
|
-
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
|
|
8319
|
-
|
|
8320
|
-
|
|
8321
|
-
|
|
8322
|
-
|
|
8323
|
-
|
|
8324
|
-
|
|
8325
|
-
|
|
8326
|
-
|
|
8477
|
+
!isVoiceModeActive && /* @__PURE__ */ jsxs("div", {
|
|
8478
|
+
className: "flex flex-col",
|
|
8479
|
+
children: [
|
|
8480
|
+
mode === "composing" && !hasMessages && /* @__PURE__ */ jsx(WelcomeMessage, {}),
|
|
8481
|
+
mode === "expanded" && !isRunning && summary && /* @__PURE__ */ jsx(SummaryBlock, {
|
|
8482
|
+
summary,
|
|
8483
|
+
isSuccess: !lastCompletedAction?.error,
|
|
8484
|
+
isFullScreen
|
|
8485
|
+
}),
|
|
8486
|
+
(mode === "active" || mode === "expanded") && isRunning && /* @__PURE__ */ jsx(StreamingResponse, { isFullScreen }),
|
|
8487
|
+
mode === "expanded" && !isRunning && !summary && /* @__PURE__ */ jsx(IdleIndicator, {}),
|
|
8488
|
+
(mode === "active" || mode === "expanded") && /* @__PURE__ */ jsx(PillToolsSection, {
|
|
8489
|
+
defaultCollapsed: mode === "active" && !isFullScreen,
|
|
8490
|
+
isFullScreen
|
|
8491
|
+
}),
|
|
8492
|
+
!isFullScreen && (mode === "composing" || mode === "expanded") && !isRunning && !hasPendingApproval && prompts.length > 0 && /* @__PURE__ */ jsx(PromptSuggestions, {
|
|
8493
|
+
prompts,
|
|
8494
|
+
onSelect: handlePromptSelect
|
|
8495
|
+
}),
|
|
8496
|
+
(mode === "active" || mode === "expanded") && hasPendingApproval && /* @__PURE__ */ jsx(ElicitationButtonBar, {}),
|
|
8497
|
+
(mode === "active" || mode === "expanded") && isRunning && !hasPendingApproval && /* @__PURE__ */ jsx(ActivityIndicator, {}),
|
|
8498
|
+
/* @__PURE__ */ jsx(AnimatePresence, { children: isComposerReady && (mode === "composing" || mode === "active" || mode === "expanded") && /* @__PURE__ */ jsx(motion.div, {
|
|
8499
|
+
initial: { opacity: 0 },
|
|
8500
|
+
animate: { opacity: 1 },
|
|
8501
|
+
exit: { opacity: 0 },
|
|
8502
|
+
transition: { duration: .15 },
|
|
8503
|
+
className: "mt-1.5",
|
|
8504
|
+
children: /* @__PURE__ */ jsx(PillComposer, {
|
|
8505
|
+
showVoiceButton: showVoiceButton || !!voice?.isSupported,
|
|
8506
|
+
isVoiceActive,
|
|
8507
|
+
onVoiceToggle: handleVoiceToggle,
|
|
8508
|
+
isEliciting: hasPendingApproval,
|
|
8509
|
+
onElicitationSubmit: handleElicitationDeny
|
|
8510
|
+
})
|
|
8511
|
+
}) })
|
|
8512
|
+
]
|
|
8327
8513
|
})
|
|
8328
8514
|
]
|
|
8329
8515
|
})
|
|
@@ -8536,7 +8722,7 @@ function _temp(messages) {
|
|
|
8536
8722
|
*
|
|
8537
8723
|
* Contains the compiled CSS for the web component standalone build.
|
|
8538
8724
|
*/
|
|
8539
|
-
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-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-duration:initial;--tw-ease:initial;--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-400:oklch(82.8% .189 84.429);--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-indigo-500:oklch(58.5% .233 277.117);--color-purple-600:oklch(55.8% .288 302.321);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--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);--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;--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--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{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.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}.-inset-\\[1px\\]{inset:-1px}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-1\\.5{top:calc(var(--spacing)*1.5)}.top-1\\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.-right-0\\.5{right:calc(var(--spacing)*-.5)}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-1\\.5{right:calc(var(--spacing)*1.5)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.-bottom-0\\.5{bottom:calc(var(--spacing)*-.5)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2,.left-\\[50\\%\\]{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.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-1{margin:calc(var(--spacing)*-1)}.m-0{margin:calc(var(--spacing)*0)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.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\\.5{margin-right:calc(var(--spacing)*1.5)}.-mb-1{margin-bottom:calc(var(--spacing)*-1)}.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-0\\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.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-block{display:inline-block}.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-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-4\\.5{height:calc(var(--spacing)*4.5)}.h-5{height:calc(var(--spacing)*5)}.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-11{height:calc(var(--spacing)*11)}.h-auto{height:auto}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-80{max-height:calc(var(--spacing)*80)}.max-h-\\[80dvh\\]{max-height:80dvh}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[280px\\]{max-height:280px}.min-h-\\[44px\\]{min-height:44px}.min-h-screen{min-height:100vh}.w-0\\.5{width:calc(var(--spacing)*.5)}.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-4\\.5{width:calc(var(--spacing)*4.5)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-11{width:calc(var(--spacing)*11)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-24{max-width:calc(var(--spacing)*24)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-\\[100px\\]{max-width:100px}.max-w-\\[150px\\]{max-width:150px}.max-w-\\[280px\\]{max-width:280px}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\\[44px\\]{min-width:44px}.min-w-\\[200px\\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-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-\\[-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}.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-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.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}.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}.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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.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-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.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-dotted{--tw-border-style:dotted;border-style:dotted}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.border-amber-500\\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-amber-500\\/50{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.border-amber-500\\/50{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.border-blue-500\\/20{border-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/20{border-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.border-border{border-color:var(--border)}.border-emerald-500\\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\\/20{border-color:color-mix(in oklab,var(--color-emerald-500)20%,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-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-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\\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-red-500\\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/50{border-color:color-mix(in oklab,var(--color-red-500)50%,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-zinc-100{border-color:var(--color-zinc-100)}.border-zinc-200\\/80{border-color:#e4e4e7cc}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\\/80{border-color:color-mix(in oklab,var(--color-zinc-200)80%,transparent)}}.border-zinc-600{border-color:var(--color-zinc-600)}.border-zinc-700\\/50{border-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.border-zinc-700\\/50{border-color:color-mix(in oklab,var(--color-zinc-700)50%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\\/20{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-amber-500\\/30{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/30{background-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.bg-background{background-color:var(--background)}.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\\/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{background-color:var(--destructive)}.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\\/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\\/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-primary{background-color:var(--primary)}.bg-red-500{background-color:var(--color-red-500)}.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-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)}.bg-zinc-700\\/50{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.bg-zinc-700\\/50{background-color:color-mix(in oklab,var(--color-zinc-700)50%,transparent)}}.bg-zinc-800\\/50{background-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.bg-zinc-800\\/50{background-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-900\\/50{background-color:#18181b80}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\\/50{background-color:color-mix(in oklab,var(--color-zinc-900)50%,transparent)}}.bg-zinc-900\\/80{background-color:#18181bcc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\\/80{background-color:color-mix(in oklab,var(--color-zinc-900)80%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.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-2\\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-px{padding:1px}.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-6{padding-inline:calc(var(--spacing)*6)}.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-1{padding-right:calc(var(--spacing)*1)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pl-3{padding-left:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.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-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-\\[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-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}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-background{color:var(--background)}.text-blue-400{color:var(--color-blue-400)}.text-blue-400\\/60{color:#54a2ff99}@supports (color:color-mix(in lab, red, red)){.text-blue-400\\/60{color:color-mix(in oklab,var(--color-blue-400)60%,transparent)}}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground{color:var(--foreground)}.text-green-400{color:var(--color-green-400)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-300{color:var(--color-red-300)}.text-red-300\\/80{color:#ffa3a3cc}@supports (color:color-mix(in lab, red, red)){.text-red-300\\/80{color:color-mix(in oklab,var(--color-red-300)80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.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)}}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-700{color:var(--color-zinc-700)}.capitalize{text-transform:capitalize}.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-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.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)}.shadow-black\\/10{--tw-shadow-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.shadow-black\\/10{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)10%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-black\\/15{--tw-shadow-color:#00000026}@supports (color:color-mix(in lab, red, red)){.shadow-black\\/15{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)15%,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}.filter{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,)}.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-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-100{--tw-duration:.1s;transition-duration:.1s}.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-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}@media (hover:hover){.group-hover\\:text-zinc-900:is(:where(.group):hover *){color:var(--color-zinc-900)}}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.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\\: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\\: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-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)}}@media (hover:hover){.hover\\:border-amber-500:hover{border-color:var(--color-amber-500)}.hover\\:border-red-500\\/50:hover{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.hover\\:border-red-500\\/50:hover{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.hover\\:border-white\\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/20:hover{border-color:color-mix(in oklab,var(--color-white)20%,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-amber-500\\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-amber-500\\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.hover\\:bg-amber-500\\/30:hover{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-amber-500\\/30:hover{background-color:color-mix(in oklab,var(--color-amber-500)30%,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\\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-red-500\\/20:hover{background-color:color-mix(in oklab,var(--color-red-500)20%,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-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\\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}.hover\\:bg-zinc-700:hover{background-color:var(--color-zinc-700)}.hover\\:bg-zinc-700\\/50:hover{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-zinc-700\\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-700)50%,transparent)}}.hover\\:bg-zinc-800\\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-zinc-800\\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-800)50%,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-red-400:hover{color:var(--color-red-400)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-white\\/50:hover{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.hover\\:text-white\\/50:hover{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.hover\\:text-white\\/60:hover{color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\\:text-white\\/60:hover{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.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\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-75:hover{opacity:.75}.hover\\:opacity-100:hover{opacity:1}}.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-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-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\\:ring-white\\/30:focus-visible{--tw-ring-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-white\\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.focus-visible\\:ring-offset-2:focus-visible{--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-visible\\:ring-offset-transparent:focus-visible{--tw-ring-offset-color: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-\\[0\\.98\\]:active{scale:.98}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:border-amber-500:active{border-color:var(--color-amber-500)}.active\\:border-red-500\\/50:active{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.active\\:border-red-500\\/50:active{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.active\\:bg-amber-500\\/30:active{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.active\\:bg-amber-500\\/30:active{background-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.active\\:bg-red-500\\/20:active{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.active\\:bg-red-500\\/20:active{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.active\\:bg-white\\/20:active{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.active\\:bg-white\\/20:active{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.active\\:text-red-400:active{color:var(--color-red-400)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.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-\\[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\\=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\\:flex{display:flex}.sm\\:h-3{height:calc(var(--spacing)*3)}.sm\\:h-3\\.5{height:calc(var(--spacing)*3.5)}.sm\\:h-4{height:calc(var(--spacing)*4)}.sm\\:h-7{height:calc(var(--spacing)*7)}.sm\\:max-h-32{max-height:calc(var(--spacing)*32)}.sm\\:max-h-48{max-height:calc(var(--spacing)*48)}.sm\\:max-h-64{max-height:calc(var(--spacing)*64)}.sm\\:max-h-\\[200px\\]{max-height:200px}.sm\\:min-h-\\[28px\\]{min-height:28px}.sm\\:w-3{width:calc(var(--spacing)*3)}.sm\\:w-3\\.5{width:calc(var(--spacing)*3.5)}.sm\\:w-4{width:calc(var(--spacing)*4)}.sm\\:w-7{width:calc(var(--spacing)*7)}.sm\\:max-w-3xl{max-width:var(--container-3xl)}.sm\\:max-w-16{max-width:calc(var(--spacing)*16)}.sm\\:max-w-24{max-width:calc(var(--spacing)*24)}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:max-w-md{max-width:var(--container-md)}.sm\\:min-w-\\[28px\\]{min-width:28px}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:gap-1{gap:calc(var(--spacing)*1)}.sm\\:gap-1\\.5{gap:calc(var(--spacing)*1.5)}.sm\\:p-1{padding:calc(var(--spacing)*1)}.sm\\:p-1\\.5{padding:calc(var(--spacing)*1.5)}.sm\\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\\:py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.sm\\:text-left{text-align:left}.sm\\:text-\\[10px\\]{font-size:10px}.sm\\:text-\\[11px\\]{font-size:11px}.sm\\:opacity-0{opacity:0}@media (hover:hover){.sm\\:group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}}.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\\:border-zinc-700\\/50:is(.dark *){border-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\\:border-zinc-700\\/50:is(.dark *){border-color:color-mix(in oklab,var(--color-zinc-700)50%,transparent)}}.dark\\:border-zinc-700\\/80:is(.dark *){border-color:#3f3f46cc}@supports (color:color-mix(in lab, red, red)){.dark\\:border-zinc-700\\/80:is(.dark *){border-color:color-mix(in oklab,var(--color-zinc-700)80%,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\\:bg-zinc-800:is(.dark *){background-color:var(--color-zinc-800)}.dark\\:stroke-\\[2\\.5px\\]:is(.dark *){stroke-width:2.5px}.dark\\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\\:text-zinc-200:is(.dark *){color:var(--color-zinc-200)}.dark\\:text-zinc-400:is(.dark *){color:var(--color-zinc-400)}.dark\\:text-zinc-500:is(.dark *){color:var(--color-zinc-500)}.dark\\:shadow-black\\/30:is(.dark *){--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.dark\\:shadow-black\\/30:is(.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)30%,transparent)var(--tw-shadow-alpha),transparent)}}.dark\\:shadow-black\\/40:is(.dark *){--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.dark\\:shadow-black\\/40:is(.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)40%,transparent)var(--tw-shadow-alpha),transparent)}}@media (hover:hover){.dark\\:group-hover\\:text-white:is(.dark *):is(:where(.group):hover *){color:var(--color-white)}.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-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\\:hover\\:bg-zinc-700:is(.dark *):hover{background-color:var(--color-zinc-700)}.dark\\:hover\\:bg-zinc-700\\/50:is(.dark *):hover{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-zinc-700\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-zinc-700)50%,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)}.only\\:\\[\\&\\>\\#attachment-tile\\]\\:size-24:only-child>#attachment-tile{width:calc(var(--spacing)*24);height:calc(var(--spacing)*24)}.\\[\\&\\>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(20px)saturate(150%);background:#0f172ad9;border:1px solid #ffffff0f;box-shadow:0 2px 8px #0003,inset 0 .5px #ffffff14}.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}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:#fff3 transparent}.scrollbar-thin::-webkit-scrollbar{width:4px;height:4px}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:9999px}.scrollbar-thin::-webkit-scrollbar-track{background-color:#0000}.scroll-touch{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@media (hover:none){.scrollbar-thin{scrollbar-width:none}.scrollbar-thin::-webkit-scrollbar{display:none}}.scroll-fade-y{-webkit-mask-image:linear-gradient(#0000,#000 8px calc(100% - 8px),#0000);mask-image:linear-gradient(#0000,#000 8px calc(100% - 8px),#0000)}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.mb-safe{margin-bottom:env(safe-area-inset-bottom,0px)}.bottom-safe{bottom:max(1rem,env(safe-area-inset-bottom,0px))}@supports (padding-bottom:env(safe-area-inset-bottom)){.pill-safe-bottom{padding-bottom:calc(env(safe-area-inset-bottom,0px) + .5rem)}}@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-gradient-position{syntax:\"*\";inherits:false}@property --tw-gradient-from{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:\"*\";inherits:false}@property --tw-gradient-via-stops{syntax:\"*\";inherits:false}@property --tw-gradient-from-position{syntax:\"<length-percentage>\";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:\"<length-percentage>\";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:\"<length-percentage>\";inherits:false;initial-value:100%}@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-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
8725
|
+
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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--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-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-duration:initial;--tw-ease:initial;--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-amber-400:oklch(82.8% .189 84.429);--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-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-600:oklch(55.8% .288 302.321);--color-slate-900:oklch(20.8% .042 265.755);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--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);--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;--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--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{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.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}.-inset-\\[1px\\]{inset:-1px}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.-top-1\\.5{top:calc(var(--spacing)*-1.5)}.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\\.5{right:calc(var(--spacing)*-.5)}.-right-1{right:calc(var(--spacing)*-1)}.-right-1\\.5{right:calc(var(--spacing)*-1.5)}.right-0{right:calc(var(--spacing)*0)}.right-1\\.5{right:calc(var(--spacing)*1.5)}.right-4{right:calc(var(--spacing)*4)}.-bottom-0\\.5{bottom:calc(var(--spacing)*-.5)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2,.left-\\[50\\%\\]{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.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-1{margin:calc(var(--spacing)*-1)}.m-0{margin:calc(var(--spacing)*0)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-2\\.5{margin-top:calc(var(--spacing)*2.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1\\.5{margin-right:calc(var(--spacing)*1.5)}.-mb-1{margin-bottom:calc(var(--spacing)*-1)}.mb-0\\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\\.5{margin-bottom:calc(var(--spacing)*1.5)}.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-0\\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.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-block{display:inline-block}.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-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-4\\.5{height:calc(var(--spacing)*4.5)}.h-5{height:calc(var(--spacing)*5)}.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-11{height:calc(var(--spacing)*11)}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-\\[30vh\\]{max-height:30vh}.max-h-\\[80dvh\\]{max-height:80dvh}.max-h-\\[80vh\\]{max-height:80vh}.min-h-7{min-height:calc(var(--spacing)*7)}.min-h-11{min-height:calc(var(--spacing)*11)}.min-h-screen{min-height:100vh}.w-0\\.5{width:calc(var(--spacing)*.5)}.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-4\\.5{width:calc(var(--spacing)*4.5)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-11{width:calc(var(--spacing)*11)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-24{max-width:calc(var(--spacing)*24)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-\\[100px\\]{max-width:100px}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-7{min-width:calc(var(--spacing)*7)}.min-w-11{min-width:calc(var(--spacing)*11)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-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-\\[-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)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-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-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.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}.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}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.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-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.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-dotted{--tw-border-style:dotted;border-style:dotted}.border-amber-500\\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.border-amber-500\\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-amber-500\\/50{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.border-amber-500\\/50{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.border-blue-500\\/20{border-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/20{border-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.border-blue-500\\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/30{border-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.border-border{border-color:var(--border)}.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-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-transparent{border-color:#0000}.border-white\\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.border-white\\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\\/8{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\\/8{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.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-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-200\\/80{border-color:#e4e4e7cc}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\\/80{border-color:color-mix(in oklab,var(--color-zinc-200)80%,transparent)}}.border-zinc-600{border-color:var(--color-zinc-600)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\\/20{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-background{background-color:var(--background)}.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\\/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{background-color:var(--destructive)}.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\\/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\\/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-primary{background-color:var(--primary)}.bg-red-500{background-color:var(--color-red-500)}.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-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\\/8{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\\/8{background-color:color-mix(in oklab,var(--color-white)8%,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-white\\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-white\\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\\/60{background-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-white\\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-700\\/50{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.bg-zinc-700\\/50{background-color:color-mix(in oklab,var(--color-zinc-700)50%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.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-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-px{padding:1px}.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-6{padding-inline:calc(var(--spacing)*6)}.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-1\\.5{padding-top:calc(var(--spacing)*1.5)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.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-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-\\[21px\\]{--tw-leading:21px;line-height:21px}.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}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-background{color:var(--background)}.text-blue-400{color:var(--color-blue-400)}.text-blue-400\\/60{color:#54a2ff99}@supports (color:color-mix(in lab, red, red)){.text-blue-400\\/60{color:color-mix(in oklab,var(--color-blue-400)60%,transparent)}}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-green-400{color:var(--color-green-400)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-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-secondary-foreground{color:var(--secondary-foreground)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.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)}}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-700{color:var(--color-zinc-700)}.capitalize{text-transform:capitalize}.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-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}.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-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)}.shadow-black\\/10{--tw-shadow-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.shadow-black\\/10{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)10%,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}.filter{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,)}.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-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-100{--tw-duration:.1s;transition-duration:.1s}.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-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}@media (hover:hover){.group-hover\\:scale-100:is(:where(.group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.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\\: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\\: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-white\\/15:focus-within{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-white\\/15:focus-within{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.focus-within\\:bg-white\\/10:focus-within{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.focus-within\\:bg-white\\/10:focus-within{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}@media (hover:hover){.hover\\:border-amber-500:hover{border-color:var(--color-amber-500)}.hover\\:border-red-500\\/50:hover{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.hover\\:border-red-500\\/50:hover{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.hover\\:border-white\\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/20:hover{border-color:color-mix(in oklab,var(--color-white)20%,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-amber-500\\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-amber-500\\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.hover\\:bg-amber-500\\/30:hover{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-amber-500\\/30:hover{background-color:color-mix(in oklab,var(--color-amber-500)30%,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\\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-red-500\\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\\:bg-red-500\\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-red-500\\/20:hover{background-color:color-mix(in oklab,var(--color-red-500)20%,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-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-white:hover{background-color:var(--color-white)}.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\\/15:hover{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/15:hover{background-color:color-mix(in oklab,var(--color-white)15%,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\\:bg-white\\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/30:hover{background-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.hover\\:bg-white\\/95:hover{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/95:hover{background-color:color-mix(in oklab,var(--color-white)95%,transparent)}}.hover\\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}.hover\\:bg-zinc-200:hover{background-color:var(--color-zinc-200)}.hover\\:bg-zinc-700:hover{background-color:var(--color-zinc-700)}.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-red-400:hover{color:var(--color-red-400)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-white\\/50:hover{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.hover\\:text-white\\/50:hover{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.hover\\:text-white\\/60:hover{color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\\:text-white\\/60:hover{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.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\\:text-zinc-600:hover{color:var(--color-zinc-600)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-75:hover{opacity:.75}.hover\\:opacity-100:hover{opacity:1}}.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-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-blue-500:focus-visible{--tw-ring-color:var(--color-blue-500)}.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-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\\:ring-white\\/30:focus-visible{--tw-ring-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-white\\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-2:focus-visible{--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-visible\\:ring-offset-transparent:focus-visible{--tw-ring-offset-color: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-\\[0\\.98\\]:active{scale:.98}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-white\\/15:active{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.active\\:bg-white\\/15:active{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.active\\:bg-white\\/20:active{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.active\\:bg-white\\/20:active{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.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-\\[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\\=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\\:flex{display:flex}.sm\\:h-3{height:calc(var(--spacing)*3)}.sm\\:h-3\\.5{height:calc(var(--spacing)*3.5)}.sm\\:h-4{height:calc(var(--spacing)*4)}.sm\\:h-7{height:calc(var(--spacing)*7)}.sm\\:max-h-24{max-height:calc(var(--spacing)*24)}.sm\\:max-h-32{max-height:calc(var(--spacing)*32)}.sm\\:max-h-48{max-height:calc(var(--spacing)*48)}.sm\\:min-h-7{min-height:calc(var(--spacing)*7)}.sm\\:w-3{width:calc(var(--spacing)*3)}.sm\\:w-3\\.5{width:calc(var(--spacing)*3.5)}.sm\\:w-4{width:calc(var(--spacing)*4)}.sm\\:w-7{width:calc(var(--spacing)*7)}.sm\\:max-w-3xl{max-width:var(--container-3xl)}.sm\\:max-w-16{max-width:calc(var(--spacing)*16)}.sm\\:max-w-24{max-width:calc(var(--spacing)*24)}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:max-w-md{max-width:var(--container-md)}.sm\\:min-w-7{min-width:calc(var(--spacing)*7)}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:gap-1{gap:calc(var(--spacing)*1)}.sm\\:gap-1\\.5{gap:calc(var(--spacing)*1.5)}.sm\\:p-1{padding:calc(var(--spacing)*1)}.sm\\:p-1\\.5{padding:calc(var(--spacing)*1.5)}.sm\\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\\:py-1{padding-block:calc(var(--spacing)*1)}.sm\\:text-left{text-align:left}.sm\\:opacity-0{opacity:0}@media (hover:hover){.sm\\:group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}}.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\\:border-zinc-600:is(.dark *){border-color:var(--color-zinc-600)}.dark\\:border-zinc-700\\/80:is(.dark *){border-color:#3f3f46cc}@supports (color:color-mix(in lab, red, red)){.dark\\:border-zinc-700\\/80:is(.dark *){border-color:color-mix(in oklab,var(--color-zinc-700)80%,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\\:bg-zinc-700:is(.dark *){background-color:var(--color-zinc-700)}.dark\\:bg-zinc-800:is(.dark *){background-color:var(--color-zinc-800)}.dark\\:stroke-\\[2\\.5px\\]:is(.dark *){stroke-width:2.5px}.dark\\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\\:text-zinc-200:is(.dark *){color:var(--color-zinc-200)}.dark\\:text-zinc-400:is(.dark *){color:var(--color-zinc-400)}.dark\\:shadow-black\\/30:is(.dark *){--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.dark\\:shadow-black\\/30:is(.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)30%,transparent)var(--tw-shadow-alpha),transparent)}}@media (hover: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-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\\:hover\\:bg-zinc-600:is(.dark *):hover{background-color:var(--color-zinc-600)}.dark\\:hover\\:bg-zinc-700:is(.dark *):hover{background-color:var(--color-zinc-700)}.dark\\:hover\\:text-zinc-200:is(.dark *):hover{color:var(--color-zinc-200)}}.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)}.only\\:\\[\\&\\>\\#attachment-tile\\]\\:size-24:only-child>#attachment-tile{width:calc(var(--spacing)*24);height:calc(var(--spacing)*24)}.\\[\\&\\>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(20px)saturate(150%);background:#0f172ad9;border:1px solid #ffffff0f;box-shadow:0 2px 8px #0003,inset 0 .5px #ffffff14}.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}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:#fff3 transparent}.scrollbar-thin::-webkit-scrollbar{width:4px;height:4px}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:9999px}.scrollbar-thin::-webkit-scrollbar-track{background-color:#0000}.scroll-touch{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@media (hover:none){.scrollbar-thin{scrollbar-width:none}.scrollbar-thin::-webkit-scrollbar{display:none}}.scroll-fade-y{-webkit-mask-image:linear-gradient(#0000,#000 8px calc(100% - 8px),#0000);mask-image:linear-gradient(#0000,#000 8px calc(100% - 8px),#0000)}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.mb-safe{margin-bottom:env(safe-area-inset-bottom,0px)}.bottom-safe{bottom:max(1rem,env(safe-area-inset-bottom,0px))}@supports (padding-bottom:env(safe-area-inset-bottom)){.pill-safe-bottom{padding-bottom:calc(env(safe-area-inset-bottom,0px) + .5rem)}}@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-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}@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-gradient-position{syntax:\"*\";inherits:false}@property --tw-gradient-from{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:\"*\";inherits:false}@property --tw-gradient-via-stops{syntax:\"*\";inherits:false}@property --tw-gradient-from-position{syntax:\"<length-percentage>\";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:\"<length-percentage>\";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:\"<length-percentage>\";inherits:false;initial-value:100%}@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-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
8540
8726
|
/**
|
|
8541
8727
|
* Inject the WebMCP styles into the document head.
|
|
8542
8728
|
* This is called automatically when registering the web component.
|