@usecrow/ui 0.1.72 → 0.1.74
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.cjs +290 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +290 -104
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.cjs
CHANGED
|
@@ -146,6 +146,12 @@ function useChat({
|
|
|
146
146
|
const pendingClientTools = [];
|
|
147
147
|
abortControllerRef.current = new AbortController();
|
|
148
148
|
try {
|
|
149
|
+
if (typeof window !== "undefined" && !window.__crow_page_context) {
|
|
150
|
+
for (let i = 0; i < 10; i++) {
|
|
151
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
152
|
+
if (window.__crow_page_context) break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
149
155
|
const identityToken = window.__crow_identity_token;
|
|
150
156
|
const response = await fetch(`${apiUrl}/api/chat/message`, {
|
|
151
157
|
method: "POST",
|
|
@@ -2379,6 +2385,13 @@ function useCopilotStyles2() {
|
|
|
2379
2385
|
const context = React3.useContext(CopilotStyleContext);
|
|
2380
2386
|
return context?.styles ?? DEFAULT_COPILOT_STYLES;
|
|
2381
2387
|
}
|
|
2388
|
+
function useActiveStyles() {
|
|
2389
|
+
const copilotContext = React3.useContext(CopilotStyleContext);
|
|
2390
|
+
const widgetContext = React3.useContext(WidgetStyleContext);
|
|
2391
|
+
if (copilotContext) return copilotContext.styles;
|
|
2392
|
+
if (widgetContext) return widgetContext.styles;
|
|
2393
|
+
return DEFAULT_COPILOT_STYLES;
|
|
2394
|
+
}
|
|
2382
2395
|
var PASSTHROUGH_KEYS = /* @__PURE__ */ new Set(["Escape", "Tab"]);
|
|
2383
2396
|
function ShadowContainer({
|
|
2384
2397
|
children,
|
|
@@ -2916,6 +2929,7 @@ function ReasoningTrace({
|
|
|
2916
2929
|
] }) });
|
|
2917
2930
|
}
|
|
2918
2931
|
function WaitingIndicator() {
|
|
2932
|
+
const mutedColor = useActiveStyles().colors.text + "80";
|
|
2919
2933
|
const [messageIndex, setMessageIndex] = React3.useState(
|
|
2920
2934
|
() => Math.floor(Math.random() * THINKING_MESSAGES.length)
|
|
2921
2935
|
);
|
|
@@ -2926,7 +2940,7 @@ function WaitingIndicator() {
|
|
|
2926
2940
|
return () => clearInterval(interval);
|
|
2927
2941
|
}, []);
|
|
2928
2942
|
const message = THINKING_MESSAGES[messageIndex] + "...";
|
|
2929
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "crow-flex crow-items-center crow-gap-1.5 crow-text-xs
|
|
2943
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "crow-flex crow-items-center crow-gap-1.5 crow-text-xs", style: { color: mutedColor }, children: [
|
|
2930
2944
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-flex crow-items-center crow-justify-center crow-w-4 crow-h-4", children: /* @__PURE__ */ jsxRuntime.jsx(ShimmeringContent, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Brain, { className: "crow-w-3.5 crow-h-3.5" }) }) }),
|
|
2931
2945
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(ShimmeringContent, { children: message }) })
|
|
2932
2946
|
] });
|
|
@@ -2935,6 +2949,8 @@ function ThinkingBlock({
|
|
|
2935
2949
|
thinking,
|
|
2936
2950
|
isComplete
|
|
2937
2951
|
}) {
|
|
2952
|
+
const themeColors = useActiveStyles().colors;
|
|
2953
|
+
const mutedColor = themeColors.text + "80";
|
|
2938
2954
|
const [isExpanded, setIsExpanded] = React3.useState(!isComplete);
|
|
2939
2955
|
const [messageIndex, setMessageIndex] = React3.useState(
|
|
2940
2956
|
() => Math.floor(Math.random() * THINKING_MESSAGES.length)
|
|
@@ -2956,7 +2972,8 @@ function ThinkingBlock({
|
|
|
2956
2972
|
"button",
|
|
2957
2973
|
{
|
|
2958
2974
|
onClick: () => setIsExpanded(!isExpanded),
|
|
2959
|
-
className:
|
|
2975
|
+
className: "crow-flex crow-items-center crow-gap-1.5 crow-select-none crow-transition-colors crow-cursor-pointer",
|
|
2976
|
+
style: { color: mutedColor },
|
|
2960
2977
|
children: [
|
|
2961
2978
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-flex crow-items-center crow-justify-center crow-w-4 crow-h-4", children: isInProgress ? /* @__PURE__ */ jsxRuntime.jsx(ShimmeringContent, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Brain, { className: "crow-w-3.5 crow-h-3.5" }) }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Brain, { className: "crow-w-3.5 crow-h-3.5" }) }),
|
|
2962
2979
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-font-medium", children: isInProgress ? /* @__PURE__ */ jsxRuntime.jsx(ShimmeringContent, { children: message }) : "Thought" }),
|
|
@@ -2981,10 +2998,11 @@ function ThinkingBlock({
|
|
|
2981
2998
|
exit: { height: 0, opacity: 0 },
|
|
2982
2999
|
transition: { duration: 0.15 },
|
|
2983
3000
|
className: "crow-overflow-hidden",
|
|
2984
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-border-l-2 crow-
|
|
3001
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-border-l-2 crow-pl-3 crow-ml-2", style: { borderColor: themeColors.border }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2985
3002
|
"div",
|
|
2986
3003
|
{
|
|
2987
|
-
className:
|
|
3004
|
+
className: "crow-text-xs crow-leading-relaxed crow-whitespace-pre-wrap",
|
|
3005
|
+
style: { color: mutedColor },
|
|
2988
3006
|
children: thinking
|
|
2989
3007
|
}
|
|
2990
3008
|
) })
|
|
@@ -3014,6 +3032,8 @@ function ToolCallBlock({
|
|
|
3014
3032
|
toolRenderers,
|
|
3015
3033
|
onToolConsent
|
|
3016
3034
|
}) {
|
|
3035
|
+
const themeColors = useActiveStyles().colors;
|
|
3036
|
+
const mutedColor = themeColors.text + "80";
|
|
3017
3037
|
const [expanded, setExpanded] = React3.useState(false);
|
|
3018
3038
|
const hasArgs = Object.keys(toolCall.arguments || {}).length > 0;
|
|
3019
3039
|
const isExecuting = toolCall.status === "executing";
|
|
@@ -3027,13 +3047,15 @@ function ToolCallBlock({
|
|
|
3027
3047
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3028
3048
|
"div",
|
|
3029
3049
|
{
|
|
3030
|
-
className:
|
|
3050
|
+
className: "crow-flex crow-items-center crow-gap-1.5 crow-select-none crow-transition-colors",
|
|
3051
|
+
style: { color: mutedColor },
|
|
3031
3052
|
children: [
|
|
3032
3053
|
hasArgs && !isAwaitingConsent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3033
3054
|
"button",
|
|
3034
3055
|
{
|
|
3035
3056
|
onClick: () => setExpanded(!expanded),
|
|
3036
|
-
className: "crow-cursor-pointer
|
|
3057
|
+
className: "crow-cursor-pointer",
|
|
3058
|
+
style: { color: mutedColor },
|
|
3037
3059
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3038
3060
|
framerMotion.motion.div,
|
|
3039
3061
|
{
|
|
@@ -3048,7 +3070,7 @@ function ToolCallBlock({
|
|
|
3048
3070
|
isExecuting && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "crow-w-3 crow-h-3 crow-animate-spin crow-text-blue-500" }),
|
|
3049
3071
|
isComplete && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "crow-w-3 crow-h-3 crow-text-green-500" }),
|
|
3050
3072
|
isError && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-w-3 crow-h-3 crow-text-red-500", children: "\u2715" }),
|
|
3051
|
-
isDenied && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-w-3 crow-h-3
|
|
3073
|
+
isDenied && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-w-3 crow-h-3", style: { color: mutedColor }, children: "\u2715" }),
|
|
3052
3074
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-font-medium", children: toolCall.displayName || toolCall.name }),
|
|
3053
3075
|
isAwaitingConsent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3054
3076
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-text-amber-500", children: "needs permission" }),
|
|
@@ -3065,16 +3087,16 @@ function ToolCallBlock({
|
|
|
3065
3087
|
"button",
|
|
3066
3088
|
{
|
|
3067
3089
|
onClick: () => onToolConsent?.(toolCall.id, false),
|
|
3068
|
-
className: "crow-px-2 crow-py-0.5 crow-rounded crow-border crow-text-xs crow-font-medium crow-
|
|
3069
|
-
style: { borderColor:
|
|
3090
|
+
className: "crow-px-2 crow-py-0.5 crow-rounded crow-border crow-text-xs crow-font-medium crow-cursor-pointer",
|
|
3091
|
+
style: { borderColor: themeColors.border, backgroundColor: "transparent", color: mutedColor },
|
|
3070
3092
|
children: "Deny"
|
|
3071
3093
|
}
|
|
3072
3094
|
)
|
|
3073
3095
|
] }),
|
|
3074
|
-
isExecuting && /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
3075
|
-
isComplete && /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
3076
|
-
isError && /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
3077
|
-
isDenied && /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
3096
|
+
isExecuting && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: mutedColor }, children: "running..." }),
|
|
3097
|
+
isComplete && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: mutedColor }, children: "done" }),
|
|
3098
|
+
isError && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: mutedColor }, children: "failed" }),
|
|
3099
|
+
isDenied && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: mutedColor }, children: "denied" })
|
|
3078
3100
|
]
|
|
3079
3101
|
}
|
|
3080
3102
|
),
|
|
@@ -3175,7 +3197,7 @@ function MessageBubble({
|
|
|
3175
3197
|
toolRenderers,
|
|
3176
3198
|
onToolConsent
|
|
3177
3199
|
}) {
|
|
3178
|
-
const styles =
|
|
3200
|
+
const styles = useActiveStyles();
|
|
3179
3201
|
const showThinkingSetting = useShowThinking();
|
|
3180
3202
|
const isWaiting = message.content === "Thinking..." || message.isBot && isLoading && !message.content;
|
|
3181
3203
|
const hasThinking = message.isBot && message.thinking;
|
|
@@ -3294,7 +3316,7 @@ function MessageList({
|
|
|
3294
3316
|
}) });
|
|
3295
3317
|
}
|
|
3296
3318
|
var MessagesContainer = React3.forwardRef(({ children }, ref) => {
|
|
3297
|
-
const styles =
|
|
3319
|
+
const styles = useActiveStyles();
|
|
3298
3320
|
const internalRef = React3.useRef(null);
|
|
3299
3321
|
const lastScrollHeightRef = React3.useRef(0);
|
|
3300
3322
|
const isUserScrollingRef = React3.useRef(false);
|
|
@@ -3356,26 +3378,92 @@ function ConversationList({
|
|
|
3356
3378
|
onSelect,
|
|
3357
3379
|
onClose
|
|
3358
3380
|
}) {
|
|
3381
|
+
const styles = useActiveStyles();
|
|
3359
3382
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3360
3383
|
framerMotion.motion.div,
|
|
3361
3384
|
{
|
|
3362
3385
|
initial: { opacity: 0, height: 0 },
|
|
3363
3386
|
animate: { opacity: 1, height: "auto" },
|
|
3364
3387
|
exit: { opacity: 0, height: 0 },
|
|
3365
|
-
className: "crow-mb-3 crow-rounded-xl crow-
|
|
3388
|
+
className: "crow-mb-3 crow-rounded-xl crow-border",
|
|
3389
|
+
style: {
|
|
3390
|
+
background: styles.colors.text + "08",
|
|
3391
|
+
borderColor: styles.colors.border
|
|
3392
|
+
},
|
|
3366
3393
|
children: [
|
|
3367
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3394
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3395
|
+
"div",
|
|
3396
|
+
{
|
|
3397
|
+
className: "crow-p-2 crow-border-b crow-flex crow-justify-between crow-items-center",
|
|
3398
|
+
style: { borderColor: styles.colors.border },
|
|
3399
|
+
children: [
|
|
3400
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3401
|
+
"span",
|
|
3402
|
+
{
|
|
3403
|
+
className: "crow-text-sm crow-font-medium",
|
|
3404
|
+
style: { color: styles.colors.text + "cc" },
|
|
3405
|
+
children: "Recent Conversations"
|
|
3406
|
+
}
|
|
3407
|
+
),
|
|
3408
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3409
|
+
"button",
|
|
3410
|
+
{
|
|
3411
|
+
onClick: onClose,
|
|
3412
|
+
className: "crow-p-1 crow-rounded",
|
|
3413
|
+
style: { color: styles.colors.text + "80" },
|
|
3414
|
+
onMouseEnter: (e) => {
|
|
3415
|
+
e.currentTarget.style.background = styles.colors.text + "10";
|
|
3416
|
+
},
|
|
3417
|
+
onMouseLeave: (e) => {
|
|
3418
|
+
e.currentTarget.style.background = "transparent";
|
|
3419
|
+
},
|
|
3420
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { size: 14 })
|
|
3421
|
+
}
|
|
3422
|
+
)
|
|
3423
|
+
]
|
|
3424
|
+
}
|
|
3425
|
+
),
|
|
3426
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-max-h-[200px] crow-overflow-y-auto", children: conversations.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3427
|
+
"div",
|
|
3428
|
+
{
|
|
3429
|
+
className: "crow-p-4 crow-text-center crow-text-sm",
|
|
3430
|
+
style: { color: styles.colors.text + "80" },
|
|
3431
|
+
children: "No conversations yet"
|
|
3432
|
+
}
|
|
3433
|
+
) : conversations.map((conv) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3372
3434
|
"button",
|
|
3373
3435
|
{
|
|
3374
3436
|
onClick: () => onSelect(conv.id),
|
|
3375
|
-
className:
|
|
3437
|
+
className: "crow-w-full crow-p-3 crow-text-left crow-transition-colors crow-border-b last:crow-border-0",
|
|
3438
|
+
style: {
|
|
3439
|
+
borderColor: styles.colors.border,
|
|
3440
|
+
background: currentConversationId === conv.id ? styles.colors.primary + "18" : "transparent"
|
|
3441
|
+
},
|
|
3442
|
+
onMouseEnter: (e) => {
|
|
3443
|
+
if (currentConversationId !== conv.id) {
|
|
3444
|
+
e.currentTarget.style.background = styles.colors.text + "08";
|
|
3445
|
+
}
|
|
3446
|
+
},
|
|
3447
|
+
onMouseLeave: (e) => {
|
|
3448
|
+
e.currentTarget.style.background = currentConversationId === conv.id ? styles.colors.primary + "18" : "transparent";
|
|
3449
|
+
},
|
|
3376
3450
|
children: [
|
|
3377
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3378
|
-
|
|
3451
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3452
|
+
"div",
|
|
3453
|
+
{
|
|
3454
|
+
className: "crow-text-sm crow-font-medium crow-truncate",
|
|
3455
|
+
style: { color: styles.colors.text },
|
|
3456
|
+
children: conv.name || "Untitled conversation"
|
|
3457
|
+
}
|
|
3458
|
+
),
|
|
3459
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3460
|
+
"div",
|
|
3461
|
+
{
|
|
3462
|
+
className: "crow-text-xs crow-mt-0.5",
|
|
3463
|
+
style: { color: styles.colors.text + "80" },
|
|
3464
|
+
children: formatConversationDate(conv.updated_at)
|
|
3465
|
+
}
|
|
3466
|
+
)
|
|
3379
3467
|
]
|
|
3380
3468
|
},
|
|
3381
3469
|
conv.id
|
|
@@ -3392,14 +3480,26 @@ function WorkflowPanel({ workflow, onExit }) {
|
|
|
3392
3480
|
animate: { opacity: 1, y: 0 },
|
|
3393
3481
|
exit: { opacity: 0, y: -10 },
|
|
3394
3482
|
transition: { duration: 0.3 },
|
|
3395
|
-
className: "crow-mb-3 crow-p-3 crow-rounded-xl crow-
|
|
3483
|
+
className: "crow-mb-3 crow-p-3 crow-rounded-xl crow-border",
|
|
3484
|
+
style: {
|
|
3485
|
+
background: "var(--crow-bg-hover, rgba(0,0,0,0.04))",
|
|
3486
|
+
borderColor: "var(--crow-border, #e5e7eb)"
|
|
3487
|
+
},
|
|
3396
3488
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "crow-flex crow-items-center crow-justify-between", children: [
|
|
3397
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3489
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3490
|
+
"span",
|
|
3491
|
+
{
|
|
3492
|
+
className: "crow-text-sm crow-font-medium crow-flex crow-items-center crow-gap-1",
|
|
3493
|
+
style: { color: "var(--crow-text, #111827)" },
|
|
3494
|
+
children: workflow.name
|
|
3495
|
+
}
|
|
3496
|
+
),
|
|
3398
3497
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3399
3498
|
"button",
|
|
3400
3499
|
{
|
|
3401
3500
|
onClick: onExit,
|
|
3402
|
-
className: "crow-text-xs crow-
|
|
3501
|
+
className: "crow-text-xs crow-underline",
|
|
3502
|
+
style: { color: "var(--crow-text-muted, #6b7280)" },
|
|
3403
3503
|
children: "Exit"
|
|
3404
3504
|
}
|
|
3405
3505
|
)
|
|
@@ -3408,12 +3508,14 @@ function WorkflowPanel({ workflow, onExit }) {
|
|
|
3408
3508
|
);
|
|
3409
3509
|
}
|
|
3410
3510
|
function PoweredByBadge({ apiUrl = "" }) {
|
|
3411
|
-
const styles =
|
|
3511
|
+
const styles = useActiveStyles();
|
|
3412
3512
|
const branding = styles.branding;
|
|
3413
3513
|
if (!branding.showPoweredBy) return null;
|
|
3414
|
-
const
|
|
3415
|
-
|
|
3416
|
-
|
|
3514
|
+
const showLogo = "showLogo" in branding ? branding.showLogo : false;
|
|
3515
|
+
const rawLogoUrl = "logoUrl" in branding ? branding.logoUrl : void 0;
|
|
3516
|
+
const logoUrl = rawLogoUrl?.startsWith("http") ? rawLogoUrl : rawLogoUrl ? `${apiUrl}${rawLogoUrl}` : void 0;
|
|
3517
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "crow-flex crow-items-center crow-justify-center crow-gap-1.5 crow-mb-3 crow-text-xs", style: { color: "var(--crow-text-muted, #9ca3af)" }, children: [
|
|
3518
|
+
showLogo && logoUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3417
3519
|
"img",
|
|
3418
3520
|
{
|
|
3419
3521
|
src: logoUrl,
|
|
@@ -3460,10 +3562,10 @@ var ModelSelector = ({
|
|
|
3460
3562
|
disabled,
|
|
3461
3563
|
className: cn(
|
|
3462
3564
|
"crow-flex crow-items-center crow-gap-1 crow-px-2 crow-py-1 crow-rounded-md crow-text-xs",
|
|
3463
|
-
"crow-bg-transparent crow-
|
|
3464
|
-
"hover:crow-text-gray-700 crow-transition-colors",
|
|
3565
|
+
"crow-bg-transparent crow-transition-colors",
|
|
3465
3566
|
disabled ? "crow-opacity-50 crow-cursor-not-allowed" : "crow-cursor-pointer"
|
|
3466
3567
|
),
|
|
3568
|
+
style: { color: "var(--crow-text-muted, #9ca3af)" },
|
|
3467
3569
|
children: [
|
|
3468
3570
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: selectedModelData?.name || "Select Model" }),
|
|
3469
3571
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3478,28 +3580,48 @@ var ModelSelector = ({
|
|
|
3478
3580
|
]
|
|
3479
3581
|
}
|
|
3480
3582
|
),
|
|
3481
|
-
isOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
"
|
|
3485
|
-
{
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3583
|
+
isOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3584
|
+
"div",
|
|
3585
|
+
{
|
|
3586
|
+
className: "crow-absolute crow-bottom-full crow-mb-2 crow-left-0 crow-min-w-[180px] crow-rounded-xl crow-shadow-lg crow-z-50 crow-overflow-hidden crow-border",
|
|
3587
|
+
style: { background: "var(--crow-bg, #ffffff)", borderColor: "var(--crow-border, #e5e7eb)" },
|
|
3588
|
+
children: Object.entries(groupedModels).map(([provider, providerModels]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
3589
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3590
|
+
"div",
|
|
3591
|
+
{
|
|
3592
|
+
className: "crow-px-3 crow-py-1.5 crow-text-xs crow-font-medium crow-uppercase crow-tracking-wide",
|
|
3593
|
+
style: {
|
|
3594
|
+
color: "var(--crow-text-muted, #9ca3af)",
|
|
3595
|
+
background: "var(--crow-bg-hover, rgba(0,0,0,0.04))"
|
|
3596
|
+
},
|
|
3597
|
+
children: provider
|
|
3598
|
+
}
|
|
3494
3599
|
),
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3600
|
+
providerModels.map((model) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3601
|
+
"button",
|
|
3602
|
+
{
|
|
3603
|
+
onClick: () => {
|
|
3604
|
+
onModelChange(model.id);
|
|
3605
|
+
setIsOpen(false);
|
|
3606
|
+
},
|
|
3607
|
+
className: "crow-w-full crow-flex crow-items-center crow-justify-between crow-px-3 crow-py-1.5 crow-text-sm crow-transition-colors",
|
|
3608
|
+
style: { color: model.id === selectedModel ? "var(--crow-text, #111827)" : "var(--crow-text-muted, #4b5563)" },
|
|
3609
|
+
onMouseEnter: (e) => {
|
|
3610
|
+
e.currentTarget.style.background = "var(--crow-bg-hover, rgba(0,0,0,0.04))";
|
|
3611
|
+
},
|
|
3612
|
+
onMouseLeave: (e) => {
|
|
3613
|
+
e.currentTarget.style.background = "transparent";
|
|
3614
|
+
},
|
|
3615
|
+
children: [
|
|
3616
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: model.name }),
|
|
3617
|
+
model.id === selectedModel && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "crow-w-4 crow-h-4 crow-text-green-500" })
|
|
3618
|
+
]
|
|
3619
|
+
},
|
|
3620
|
+
model.id
|
|
3621
|
+
))
|
|
3622
|
+
] }, provider))
|
|
3623
|
+
}
|
|
3624
|
+
)
|
|
3503
3625
|
] });
|
|
3504
3626
|
};
|
|
3505
3627
|
var isMediaRecorderSupported = () => {
|
|
@@ -3700,9 +3822,12 @@ var Textarea = React3__default.default.forwardRef(
|
|
|
3700
3822
|
"textarea",
|
|
3701
3823
|
{
|
|
3702
3824
|
className: cn(
|
|
3703
|
-
"crow-flex crow-w-full crow-rounded-md crow-border-none crow-bg-transparent crow-px-3 crow-py-1.5 crow-text-base
|
|
3825
|
+
"crow-flex crow-w-full crow-rounded-md crow-border-none crow-bg-transparent crow-px-3 crow-py-1.5 crow-text-base focus-visible:crow-outline-none focus-visible:crow-ring-0 disabled:crow-cursor-not-allowed disabled:crow-opacity-50 crow-min-h-[32px] crow-resize-none",
|
|
3704
3826
|
className
|
|
3705
3827
|
),
|
|
3828
|
+
style: {
|
|
3829
|
+
color: "inherit"
|
|
3830
|
+
},
|
|
3706
3831
|
ref,
|
|
3707
3832
|
rows: 1,
|
|
3708
3833
|
...props
|
|
@@ -3719,9 +3844,10 @@ var TooltipContent = React3__default.default.forwardRef(({ className, sideOffset
|
|
|
3719
3844
|
ref,
|
|
3720
3845
|
sideOffset,
|
|
3721
3846
|
className: cn(
|
|
3722
|
-
"crow-z-50 crow-overflow-hidden crow-rounded-md crow-border crow-
|
|
3847
|
+
"crow-z-50 crow-overflow-hidden crow-rounded-md crow-border crow-px-3 crow-py-1.5 crow-text-sm crow-shadow-md",
|
|
3723
3848
|
className
|
|
3724
3849
|
),
|
|
3850
|
+
style: { background: "var(--crow-bg, #ffffff)", borderColor: "var(--crow-border, #d1d5db)", color: "var(--crow-text, #111827)" },
|
|
3725
3851
|
...props
|
|
3726
3852
|
}
|
|
3727
3853
|
));
|
|
@@ -3729,9 +3855,9 @@ TooltipContent.displayName = "TooltipContent";
|
|
|
3729
3855
|
var Button = React3__default.default.forwardRef(
|
|
3730
3856
|
({ className, variant = "default", size = "default", ...props }, ref) => {
|
|
3731
3857
|
const variantClasses = {
|
|
3732
|
-
default: "crow-
|
|
3733
|
-
outline: "crow-border crow-bg-transparent
|
|
3734
|
-
ghost: "crow-bg-transparent
|
|
3858
|
+
default: "crow-text-white",
|
|
3859
|
+
outline: "crow-border crow-bg-transparent",
|
|
3860
|
+
ghost: "crow-bg-transparent"
|
|
3735
3861
|
};
|
|
3736
3862
|
const sizeClasses = {
|
|
3737
3863
|
default: "crow-h-10 crow-px-4 crow-py-2",
|
|
@@ -3804,11 +3930,16 @@ var PromptInput = React3__default.default.forwardRef(
|
|
|
3804
3930
|
{
|
|
3805
3931
|
ref,
|
|
3806
3932
|
className: cn(
|
|
3807
|
-
"crow-rounded-3xl crow-border crow-
|
|
3933
|
+
"crow-rounded-3xl crow-border crow-p-1.5 crow-shadow-lg crow-transition-all crow-duration-300",
|
|
3808
3934
|
isLoading && "crow-border-red-500",
|
|
3809
3935
|
className
|
|
3810
3936
|
),
|
|
3811
|
-
style
|
|
3937
|
+
style: {
|
|
3938
|
+
background: "var(--crow-bg, #ffffff)",
|
|
3939
|
+
color: "var(--crow-text, #111827)",
|
|
3940
|
+
borderColor: isLoading ? void 0 : "var(--crow-border, #d1d5db)",
|
|
3941
|
+
...style
|
|
3942
|
+
},
|
|
3812
3943
|
children
|
|
3813
3944
|
}
|
|
3814
3945
|
)
|
|
@@ -3891,6 +4022,7 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
3891
4022
|
backendUrl = "",
|
|
3892
4023
|
triggerVoiceRecording = 0
|
|
3893
4024
|
}, ref) => {
|
|
4025
|
+
const themeStyles = useActiveStyles();
|
|
3894
4026
|
const [input, setInput] = React3__default.default.useState("");
|
|
3895
4027
|
const promptBoxRef = React3__default.default.useRef(null);
|
|
3896
4028
|
const voice = useVoiceInput({ backendUrl, silenceTimeoutMs: 1500 });
|
|
@@ -3944,10 +4076,15 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
3944
4076
|
highlighted && "crow-ring-4 crow-ring-offset-2 crow-animate-pulse crow-shadow-[0_0_20px_rgba(0,0,0,0.25)]",
|
|
3945
4077
|
className
|
|
3946
4078
|
),
|
|
3947
|
-
style:
|
|
3948
|
-
|
|
3949
|
-
|
|
3950
|
-
|
|
4079
|
+
style: {
|
|
4080
|
+
background: themeStyles.colors.background,
|
|
4081
|
+
color: themeStyles.colors.text,
|
|
4082
|
+
borderColor: themeStyles.colors.border,
|
|
4083
|
+
...highlighted ? {
|
|
4084
|
+
"--tw-ring-color": themeStyles.colors.userBubble,
|
|
4085
|
+
"--tw-ring-offset-color": themeStyles.colors.background
|
|
4086
|
+
} : {}
|
|
4087
|
+
},
|
|
3951
4088
|
disabled: isLoading,
|
|
3952
4089
|
ref: ref || promptBoxRef,
|
|
3953
4090
|
children: [
|
|
@@ -3987,10 +4124,8 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
3987
4124
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3988
4125
|
lucideReact.Mic,
|
|
3989
4126
|
{
|
|
3990
|
-
className:
|
|
3991
|
-
|
|
3992
|
-
voice.isRecording ? "crow-text-red-500" : "crow-text-gray-400"
|
|
3993
|
-
)
|
|
4127
|
+
className: "crow-h-3.5 crow-w-3.5 crow-transition-colors",
|
|
4128
|
+
style: { color: voice.isRecording ? "#ef4444" : "var(--crow-text-muted, #9ca3af)" }
|
|
3994
4129
|
}
|
|
3995
4130
|
),
|
|
3996
4131
|
voice.isRecording && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-absolute crow-top-0 crow-right-0 crow-h-2 crow-w-2 crow-rounded-full crow-bg-red-500 crow-animate-pulse" })
|
|
@@ -4008,12 +4143,10 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
4008
4143
|
{
|
|
4009
4144
|
variant: "default",
|
|
4010
4145
|
size: "icon",
|
|
4011
|
-
className:
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
!hasContent && !isLoading && !showStopButton && "crow-bg-transparent"
|
|
4016
|
-
),
|
|
4146
|
+
className: "crow-h-7 crow-w-7 crow-rounded-full crow-transition-all crow-duration-200",
|
|
4147
|
+
style: {
|
|
4148
|
+
background: isLoading || showStopButton ? "#ef4444" : hasContent ? "var(--crow-primary, #000000)" : "transparent"
|
|
4149
|
+
},
|
|
4017
4150
|
onClick: () => {
|
|
4018
4151
|
if ((isLoading || showStopButton) && onStop) {
|
|
4019
4152
|
onStop();
|
|
@@ -4030,10 +4163,8 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
4030
4163
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4031
4164
|
lucideReact.ArrowUp,
|
|
4032
4165
|
{
|
|
4033
|
-
className:
|
|
4034
|
-
|
|
4035
|
-
hasContent ? "crow-text-white" : "crow-text-gray-400"
|
|
4036
|
-
)
|
|
4166
|
+
className: "crow-h-3.5 crow-w-3.5",
|
|
4167
|
+
style: { color: hasContent ? "white" : "var(--crow-text-muted, #9ca3af)" }
|
|
4037
4168
|
}
|
|
4038
4169
|
)
|
|
4039
4170
|
}
|
|
@@ -4053,7 +4184,7 @@ function BrowserUseConfirmation({
|
|
|
4053
4184
|
onAllow,
|
|
4054
4185
|
onDeny
|
|
4055
4186
|
}) {
|
|
4056
|
-
const styles =
|
|
4187
|
+
const styles = useActiveStyles();
|
|
4057
4188
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4058
4189
|
"div",
|
|
4059
4190
|
{
|
|
@@ -4135,7 +4266,7 @@ function BrowserUseQuestion({
|
|
|
4135
4266
|
question,
|
|
4136
4267
|
onSubmit
|
|
4137
4268
|
}) {
|
|
4138
|
-
const styles =
|
|
4269
|
+
const styles = useActiveStyles();
|
|
4139
4270
|
const [answer, setAnswer] = React3.useState("");
|
|
4140
4271
|
const [isSubmitting, setIsSubmitting] = React3.useState(false);
|
|
4141
4272
|
const handleSubmit = React3.useCallback(() => {
|
|
@@ -4222,15 +4353,15 @@ function SuggestedActions({
|
|
|
4222
4353
|
actions,
|
|
4223
4354
|
onActionClick
|
|
4224
4355
|
}) {
|
|
4225
|
-
const styles =
|
|
4356
|
+
const styles = useActiveStyles();
|
|
4226
4357
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-flex crow-flex-wrap crow-gap-2 crow-px-1 crow-pb-2", children: actions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4227
4358
|
"button",
|
|
4228
4359
|
{
|
|
4229
4360
|
onClick: () => onActionClick(action),
|
|
4230
4361
|
className: "crow-rounded-full crow-border crow-px-3 crow-py-1.5 crow-text-sm crow-font-medium crow-transition-colors hover:crow-opacity-80 crow-cursor-pointer",
|
|
4231
4362
|
style: {
|
|
4232
|
-
borderColor: styles.colors.
|
|
4233
|
-
color: styles.colors.
|
|
4363
|
+
borderColor: styles.colors.border,
|
|
4364
|
+
color: styles.colors.text,
|
|
4234
4365
|
background: "transparent"
|
|
4235
4366
|
},
|
|
4236
4367
|
children: action.label
|
|
@@ -4366,7 +4497,7 @@ function injectCopilotBodyStyles() {
|
|
|
4366
4497
|
}
|
|
4367
4498
|
var WIDGET_CSS = `*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
|
|
4368
4499
|
|
|
4369
|
-
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.crow-pointer-events-none{pointer-events:none}.crow-pointer-events-auto{pointer-events:auto}.crow-fixed{position:fixed}.crow-absolute{position:absolute}.crow-relative{position:relative}.crow-sticky{position:sticky}.crow-bottom-0{bottom:0}.crow-bottom-full{bottom:100%}.crow-left-0{left:0}.crow-right-0{right:0}.crow-top-0{top:0}.crow-z-10{z-index:10}.crow-z-50{z-index:50}.crow-z-\\[999999\\]{z-index:999999}.crow-m-0{margin:0}.crow-mx-3{margin-left:.75rem;margin-right:.75rem}.crow-my-1{margin-top:.25rem;margin-bottom:.25rem}.crow-my-1\\.5{margin-top:.375rem;margin-bottom:.375rem}.crow-my-2{margin-top:.5rem;margin-bottom:.5rem}.crow-mb-0{margin-bottom:0}.crow-mb-0\\.5{margin-bottom:.125rem}.crow-mb-1{margin-bottom:.25rem}.crow-mb-1\\.5{margin-bottom:.375rem}.crow-mb-2{margin-bottom:.5rem}.crow-mb-3{margin-bottom:.75rem}.crow-mb-4{margin-bottom:1rem}.crow-ml-0{margin-left:0}.crow-ml-0\\.5{margin-left:.125rem}.crow-ml-2{margin-left:.5rem}.crow-ml-4{margin-left:1rem}.crow-mt-0{margin-top:0}.crow-mt-0\\.5{margin-top:.125rem}.crow-mt-1{margin-top:.25rem}.crow-mt-1\\.5{margin-top:.375rem}.crow-mt-2{margin-top:.5rem}.crow-mt-auto{margin-top:auto}.crow-block{display:block}.crow-inline-block{display:inline-block}.crow-flex{display:flex}.crow-inline-flex{display:inline-flex}.crow-h-10{height:2.5rem}.crow-h-12{height:3rem}.crow-h-2{height:.5rem}.crow-h-3{height:.75rem}.crow-h-3\\.5{height:.875rem}.crow-h-4{height:1rem}.crow-h-5{height:1.25rem}.crow-h-7{height:1.75rem}.crow-h-8{height:2rem}.crow-h-full{height:100%}.crow-max-h-32{max-height:8rem}.crow-max-h-48{max-height:12rem}.crow-max-h-\\[200px\\]{max-height:200px}.crow-min-h-0{min-height:0}.crow-min-h-\\[32px\\]{min-height:32px}.crow-min-h-\\[40px\\]{min-height:40px}.crow-w-0{width:0}.crow-w-0\\.5{width:.125rem}.crow-w-2{width:.5rem}.crow-w-3{width:.75rem}.crow-w-3\\.5{width:.875rem}.crow-w-4{width:1rem}.crow-w-5{width:1.25rem}.crow-w-7{width:1.75rem}.crow-w-8{width:2rem}.crow-w-full{width:100%}.crow-min-w-0{min-width:0}.crow-min-w-\\[180px\\]{min-width:180px}.crow-max-w-\\[80\\%\\]{max-width:80%}.crow-max-w-\\[90\\%\\]{max-width:90%}.crow-max-w-full{max-width:100%}.crow-flex-1{flex:1 1 0%}.crow-flex-shrink-0,.crow-shrink-0{flex-shrink:0}.crow-border-collapse{border-collapse:collapse}.crow-rotate-180{--tw-rotate:180deg}.crow-rotate-180,.crow-scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.crow-scale-100{--tw-scale-x:1;--tw-scale-y:1}.crow-scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-pulse{animation:crow-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}@keyframes crow-spin{to{transform:rotate(1turn)}}.crow-animate-spin{animation:crow-spin 1s linear infinite}.crow-cursor-default{cursor:default}.crow-cursor-not-allowed{cursor:not-allowed}.crow-cursor-nw-resize{cursor:nw-resize}.crow-cursor-pointer{cursor:pointer}.crow-cursor-se-resize{cursor:se-resize}.crow-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.crow-resize-none{resize:none}.crow-list-decimal{list-style-type:decimal}.crow-list-disc{list-style-type:disc}.crow-flex-row{flex-direction:row}.crow-flex-col{flex-direction:column}.crow-flex-wrap{flex-wrap:wrap}.crow-items-start{align-items:flex-start}.crow-items-end{align-items:flex-end}.crow-items-center{align-items:center}.crow-items-stretch{align-items:stretch}.crow-justify-start{justify-content:flex-start}.crow-justify-end{justify-content:flex-end}.crow-justify-center{justify-content:center}.crow-justify-between{justify-content:space-between}.crow-gap-1{gap:.25rem}.crow-gap-1\\.5{gap:.375rem}.crow-gap-2{gap:.5rem}.crow-gap-3{gap:.75rem}.crow-gap-4{gap:1rem}.crow-gap-6{gap:1.5rem}.crow-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.crow-space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.crow-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.crow-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.crow-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.crow-overflow-auto{overflow:auto}.crow-overflow-hidden{overflow:hidden}.crow-overflow-visible{overflow:visible}.crow-overflow-x-auto{overflow-x:auto}.crow-overflow-y-auto{overflow-y:auto}.crow-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow-whitespace-pre-wrap{white-space:pre-wrap}.crow-break-words{overflow-wrap:break-word}.crow-rounded{border-radius:.25rem}.crow-rounded-2xl{border-radius:1rem}.crow-rounded-3xl{border-radius:1.5rem}.crow-rounded-full{border-radius:9999px}.crow-rounded-lg{border-radius:.5rem}.crow-rounded-md{border-radius:.375rem}.crow-rounded-xl{border-radius:.75rem}.crow-border{border-width:1px}.crow-border-b{border-bottom-width:1px}.crow-border-l{border-left-width:1px}.crow-border-l-2{border-left-width:2px}.crow-border-r{border-right-width:1px}.crow-border-t{border-top-width:1px}.crow-border-none{border-style:none}.crow-border-\\[var\\(--crow-border\\,\\#e5e7eb\\)\\]{border-color:var(--crow-border,#e5e7eb)}.crow-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.crow-border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.crow-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.crow-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.crow-border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.crow-border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.crow-border-gray-700\\/50{border-color:rgba(55,65,81,.5)}.crow-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.crow-bg-\\[var\\(--crow-bg-secondary\\,\\#f3f4f6\\)\\]{background-color:var(--crow-bg-secondary,#f3f4f6)}.crow-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.crow-bg-black\\/5{background-color:rgba(0,0,0,.05)}.crow-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.crow-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.crow-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.crow-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.crow-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.crow-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.crow-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.crow-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.crow-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.crow-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.crow-bg-transparent{background-color:transparent}.crow-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.crow-p-0{padding:0}.crow-p-0\\.5{padding:.125rem}.crow-p-1{padding:.25rem}.crow-p-1\\.5{padding:.375rem}.crow-p-2{padding:.5rem}.crow-p-3{padding:.75rem}.crow-p-4{padding:1rem}.crow-p-6{padding:1.5rem}.crow-px-1{padding-left:.25rem;padding-right:.25rem}.crow-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.crow-px-2{padding-left:.5rem;padding-right:.5rem}.crow-px-3{padding-left:.75rem;padding-right:.75rem}.crow-px-4{padding-left:1rem;padding-right:1rem}.crow-px-6{padding-left:1.5rem;padding-right:1.5rem}.crow-py-0{padding-top:0;padding-bottom:0}.crow-py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.crow-py-1{padding-top:.25rem;padding-bottom:.25rem}.crow-py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.crow-py-2{padding-top:.5rem;padding-bottom:.5rem}.crow-py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.crow-py-3{padding-top:.75rem;padding-bottom:.75rem}.crow-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.crow-py-8{padding-top:2rem;padding-bottom:2rem}.crow-pb-1{padding-bottom:.25rem}.crow-pb-2{padding-bottom:.5rem}.crow-pl-1{padding-left:.25rem}.crow-pl-3{padding-left:.75rem}.crow-pl-4{padding-left:1rem}.crow-pl-5{padding-left:1.25rem}.crow-pr-1{padding-right:.25rem}.crow-pr-4{padding-right:1rem}.crow-pt-1{padding-top:.25rem}.crow-pt-3{padding-top:.75rem}.crow-text-left{text-align:left}.crow-text-center{text-align:center}.crow-text-right{text-align:right}.crow-align-text-bottom{vertical-align:text-bottom}.crow-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.crow-text-\\[13px\\]{font-size:13px}.crow-text-base{font-size:1rem;line-height:1.5rem}.crow-text-lg{font-size:1.125rem;line-height:1.75rem}.crow-text-sm{font-size:.875rem;line-height:1.25rem}.crow-text-xs{font-size:.75rem;line-height:1rem}.crow-font-bold{font-weight:700}.crow-font-medium{font-weight:500}.crow-font-semibold{font-weight:600}.crow-uppercase{text-transform:uppercase}.crow-italic{font-style:italic}.crow-leading-relaxed{line-height:1.625}.crow-leading-tight{line-height:1.25}.crow-tracking-wide{letter-spacing:.025em}.crow-tracking-wider{letter-spacing:.05em}.crow-text-\\[var\\(--crow-primary\\,\\#7c3aed\\)\\]{color:var(--crow-primary,#7c3aed)}.crow-text-\\[var\\(--crow-text\\,\\#111827\\)\\]{color:var(--crow-text,#111827)}.crow-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.crow-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.crow-text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.crow-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.crow-text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.crow-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.crow-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.crow-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.crow-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.crow-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.crow-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.crow-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.crow-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.crow-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.crow-underline{text-decoration-line:underline}.crow-opacity-0{opacity:0}.crow-opacity-100{opacity:1}.crow-opacity-25{opacity:.25}.crow-opacity-40{opacity:.4}.crow-opacity-50{opacity:.5}.crow-opacity-60{opacity:.6}.crow-opacity-75{opacity:.75}.crow-shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.crow-shadow-2xl,.crow-shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow:0 0 20px rgba(0,0,0,.25);--tw-shadow-colored:0 0 20px var(--tw-shadow-color)}.crow-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.crow-shadow-lg,.crow-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.crow-outline-none{outline:2px solid transparent;outline-offset:2px}.crow-ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.crow-ring-offset-2{--tw-ring-offset-width:2px}.crow-backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.crow-backdrop-blur-md,.crow-backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.crow-backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.crow-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-duration-150{transition-duration:.15s}.crow-duration-200{transition-duration:.2s}.crow-duration-300{transition-duration:.3s}.crow-duration-500{transition-duration:.5s}.crow-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}.crow-animate-pulse{animation:crow-pulse 1.5s ease-in-out infinite}.crow-animation-delay-100{animation-delay:.1s}.crow-animation-delay-200{animation-delay:.2s}@keyframes crow-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes crow-slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes crow-pulse{0%,to{opacity:1}50%{opacity:.4}}.crow-overflow-y-auto::-webkit-scrollbar{width:6px}.crow-overflow-y-auto::-webkit-scrollbar-track{background:transparent}.crow-overflow-y-auto::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:3px}.crow-overflow-y-auto::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.crow-focus-visible\\:crow-outline-none:focus-visible{outline:none}.crow-focus-visible\\:crow-ring-2:focus-visible{box-shadow:0 0 0 2px var(--crow-primary,#6366f1)}:host{--crow-primary:#6366f1;--crow-primary-dark:#4f46e5;--crow-secondary:#f1f5f9;--crow-accent:#10b981}@media (prefers-color-scheme:dark){:host{--crow-primary:#818cf8;--crow-primary-dark:#6366f1}}.crow-copilot-toggle{position:fixed;top:50%;transform:translateY(-50%);z-index:999998;width:24px;height:64px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #e5e7eb;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px rgba(0,0,0,.1)}.crow-copilot-toggle:hover{background:#f9fafb;box-shadow:0 4px 12px rgba(0,0,0,.15)}.crow-copilot-toggle-right{right:0;border-radius:8px 0 0 8px;border-right:none}.crow-copilot-toggle-left{left:0;border-radius:0 8px 8px 0;border-left:none}.crow-copilot-toggle.open.crow-copilot-toggle-right{right:var(--crow-copilot-width,400px)}.crow-copilot-toggle.open.crow-copilot-toggle-left{left:var(--crow-copilot-width,400px)}.crow-copilot-toggle svg{width:16px;height:16px;color:#6b7280;transition:transform .2s ease}.crow-copilot-toggle:hover svg{color:#374151}.crow-copilot-sidebar{position:fixed;top:0;bottom:0;z-index:999997;background:#fff;box-shadow:-4px 0 20px rgba(0,0,0,.1);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.crow-copilot-sidebar-right{right:0;border-left:1px solid #e5e7eb}.crow-copilot-sidebar-left{left:0;border-right:1px solid #e5e7eb}.crow-copilot-sidebar.closed.crow-copilot-sidebar-right{transform:translateX(100%)}.crow-copilot-sidebar.closed.crow-copilot-sidebar-left{transform:translateX(-100%)}body.crow-copilot-open-right{margin-right:var(--crow-copilot-width,400px)!important;transition:margin .3s cubic-bezier(.4,0,.2,1)}body.crow-copilot-open-left{margin-left:var(--crow-copilot-width,400px)!important}body,body.crow-copilot-open-left{transition:margin .3s cubic-bezier(.4,0,.2,1)}.placeholder\\:crow-text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\\:crow-text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.last\\:crow-mb-0:last-child{margin-bottom:0}.last\\:crow-border-0:last-child{border-width:0}.hover\\:crow-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:crow-bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\\:crow-bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.hover\\:crow-bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\\:crow-text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\\:crow-opacity-100:hover{opacity:1}.hover\\:crow-opacity-80:hover{opacity:.8}.hover\\:crow-opacity-90:hover{opacity:.9}.focus\\:crow-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:crow-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-0:focus,.focus\\:crow-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:crow-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:crow-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:crow-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\\:crow-pointer-events-none:disabled{pointer-events:none}.disabled\\:crow-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:crow-opacity-50:disabled{opacity:.5}`;
|
|
4500
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.crow-pointer-events-none{pointer-events:none}.crow-pointer-events-auto{pointer-events:auto}.crow-fixed{position:fixed}.crow-absolute{position:absolute}.crow-relative{position:relative}.crow-sticky{position:sticky}.crow-bottom-0{bottom:0}.crow-bottom-full{bottom:100%}.crow-left-0{left:0}.crow-right-0{right:0}.crow-top-0{top:0}.crow-z-10{z-index:10}.crow-z-50{z-index:50}.crow-z-\\[999999\\]{z-index:999999}.crow-m-0{margin:0}.crow-mx-3{margin-left:.75rem;margin-right:.75rem}.crow-my-1{margin-top:.25rem;margin-bottom:.25rem}.crow-my-1\\.5{margin-top:.375rem;margin-bottom:.375rem}.crow-my-2{margin-top:.5rem;margin-bottom:.5rem}.crow-mb-0{margin-bottom:0}.crow-mb-0\\.5{margin-bottom:.125rem}.crow-mb-1{margin-bottom:.25rem}.crow-mb-1\\.5{margin-bottom:.375rem}.crow-mb-2{margin-bottom:.5rem}.crow-mb-3{margin-bottom:.75rem}.crow-mb-4{margin-bottom:1rem}.crow-ml-0{margin-left:0}.crow-ml-0\\.5{margin-left:.125rem}.crow-ml-2{margin-left:.5rem}.crow-ml-4{margin-left:1rem}.crow-mt-0{margin-top:0}.crow-mt-0\\.5{margin-top:.125rem}.crow-mt-1{margin-top:.25rem}.crow-mt-1\\.5{margin-top:.375rem}.crow-mt-2{margin-top:.5rem}.crow-mt-auto{margin-top:auto}.crow-block{display:block}.crow-inline-block{display:inline-block}.crow-flex{display:flex}.crow-inline-flex{display:inline-flex}.crow-h-10{height:2.5rem}.crow-h-12{height:3rem}.crow-h-2{height:.5rem}.crow-h-3{height:.75rem}.crow-h-3\\.5{height:.875rem}.crow-h-4{height:1rem}.crow-h-5{height:1.25rem}.crow-h-7{height:1.75rem}.crow-h-8{height:2rem}.crow-h-full{height:100%}.crow-max-h-32{max-height:8rem}.crow-max-h-48{max-height:12rem}.crow-max-h-\\[200px\\]{max-height:200px}.crow-min-h-0{min-height:0}.crow-min-h-\\[32px\\]{min-height:32px}.crow-min-h-\\[40px\\]{min-height:40px}.crow-w-0{width:0}.crow-w-0\\.5{width:.125rem}.crow-w-2{width:.5rem}.crow-w-3{width:.75rem}.crow-w-3\\.5{width:.875rem}.crow-w-4{width:1rem}.crow-w-5{width:1.25rem}.crow-w-7{width:1.75rem}.crow-w-8{width:2rem}.crow-w-full{width:100%}.crow-min-w-0{min-width:0}.crow-min-w-\\[180px\\]{min-width:180px}.crow-max-w-\\[80\\%\\]{max-width:80%}.crow-max-w-\\[90\\%\\]{max-width:90%}.crow-max-w-full{max-width:100%}.crow-flex-1{flex:1 1 0%}.crow-flex-shrink-0,.crow-shrink-0{flex-shrink:0}.crow-border-collapse{border-collapse:collapse}.crow-rotate-180{--tw-rotate:180deg}.crow-rotate-180,.crow-scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.crow-scale-100{--tw-scale-x:1;--tw-scale-y:1}.crow-scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-pulse{animation:crow-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}@keyframes crow-spin{to{transform:rotate(1turn)}}.crow-animate-spin{animation:crow-spin 1s linear infinite}.crow-cursor-default{cursor:default}.crow-cursor-not-allowed{cursor:not-allowed}.crow-cursor-pointer{cursor:pointer}.crow-cursor-se-resize{cursor:se-resize}.crow-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.crow-resize-none{resize:none}.crow-list-decimal{list-style-type:decimal}.crow-list-disc{list-style-type:disc}.crow-flex-row{flex-direction:row}.crow-flex-col{flex-direction:column}.crow-flex-wrap{flex-wrap:wrap}.crow-items-start{align-items:flex-start}.crow-items-end{align-items:flex-end}.crow-items-center{align-items:center}.crow-items-stretch{align-items:stretch}.crow-justify-start{justify-content:flex-start}.crow-justify-end{justify-content:flex-end}.crow-justify-center{justify-content:center}.crow-justify-between{justify-content:space-between}.crow-gap-1{gap:.25rem}.crow-gap-1\\.5{gap:.375rem}.crow-gap-2{gap:.5rem}.crow-gap-3{gap:.75rem}.crow-gap-4{gap:1rem}.crow-gap-6{gap:1.5rem}.crow-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.crow-space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.crow-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.crow-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.crow-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.crow-overflow-auto{overflow:auto}.crow-overflow-hidden{overflow:hidden}.crow-overflow-visible{overflow:visible}.crow-overflow-x-auto{overflow-x:auto}.crow-overflow-y-auto{overflow-y:auto}.crow-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow-whitespace-pre-wrap{white-space:pre-wrap}.crow-break-words{overflow-wrap:break-word}.crow-rounded{border-radius:.25rem}.crow-rounded-2xl{border-radius:1rem}.crow-rounded-3xl{border-radius:1.5rem}.crow-rounded-full{border-radius:9999px}.crow-rounded-lg{border-radius:.5rem}.crow-rounded-md{border-radius:.375rem}.crow-rounded-xl{border-radius:.75rem}.crow-border{border-width:1px}.crow-border-b{border-bottom-width:1px}.crow-border-l{border-left-width:1px}.crow-border-l-2{border-left-width:2px}.crow-border-r{border-right-width:1px}.crow-border-t{border-top-width:1px}.crow-border-none{border-style:none}.crow-border-\\[var\\(--crow-border\\,\\#e5e7eb\\)\\]{border-color:var(--crow-border,#e5e7eb)}.crow-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.crow-border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.crow-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.crow-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.crow-border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.crow-border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.crow-border-gray-700\\/50{border-color:rgba(55,65,81,.5)}.crow-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.crow-bg-\\[var\\(--crow-bg-secondary\\,\\#f3f4f6\\)\\]{background-color:var(--crow-bg-secondary,#f3f4f6)}.crow-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.crow-bg-black\\/5{background-color:rgba(0,0,0,.05)}.crow-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.crow-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.crow-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.crow-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.crow-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.crow-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.crow-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.crow-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.crow-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.crow-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.crow-bg-transparent{background-color:transparent}.crow-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.crow-p-0{padding:0}.crow-p-0\\.5{padding:.125rem}.crow-p-1{padding:.25rem}.crow-p-1\\.5{padding:.375rem}.crow-p-2{padding:.5rem}.crow-p-3{padding:.75rem}.crow-p-4{padding:1rem}.crow-p-6{padding:1.5rem}.crow-px-1{padding-left:.25rem;padding-right:.25rem}.crow-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.crow-px-2{padding-left:.5rem;padding-right:.5rem}.crow-px-3{padding-left:.75rem;padding-right:.75rem}.crow-px-4{padding-left:1rem;padding-right:1rem}.crow-px-6{padding-left:1.5rem;padding-right:1.5rem}.crow-py-0{padding-top:0;padding-bottom:0}.crow-py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.crow-py-1{padding-top:.25rem;padding-bottom:.25rem}.crow-py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.crow-py-2{padding-top:.5rem;padding-bottom:.5rem}.crow-py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.crow-py-3{padding-top:.75rem;padding-bottom:.75rem}.crow-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.crow-py-8{padding-top:2rem;padding-bottom:2rem}.crow-pb-1{padding-bottom:.25rem}.crow-pb-2{padding-bottom:.5rem}.crow-pl-3{padding-left:.75rem}.crow-pl-4{padding-left:1rem}.crow-pl-5{padding-left:1.25rem}.crow-pr-1{padding-right:.25rem}.crow-pr-4{padding-right:1rem}.crow-pt-1{padding-top:.25rem}.crow-pt-3{padding-top:.75rem}.crow-text-left{text-align:left}.crow-text-center{text-align:center}.crow-text-right{text-align:right}.crow-align-text-bottom{vertical-align:text-bottom}.crow-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.crow-text-\\[13px\\]{font-size:13px}.crow-text-base{font-size:1rem;line-height:1.5rem}.crow-text-lg{font-size:1.125rem;line-height:1.75rem}.crow-text-sm{font-size:.875rem;line-height:1.25rem}.crow-text-xs{font-size:.75rem;line-height:1rem}.crow-font-bold{font-weight:700}.crow-font-medium{font-weight:500}.crow-font-semibold{font-weight:600}.crow-uppercase{text-transform:uppercase}.crow-italic{font-style:italic}.crow-leading-relaxed{line-height:1.625}.crow-leading-tight{line-height:1.25}.crow-tracking-wide{letter-spacing:.025em}.crow-tracking-wider{letter-spacing:.05em}.crow-text-\\[var\\(--crow-primary\\,\\#7c3aed\\)\\]{color:var(--crow-primary,#7c3aed)}.crow-text-\\[var\\(--crow-text\\,\\#111827\\)\\]{color:var(--crow-text,#111827)}.crow-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.crow-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.crow-text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.crow-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.crow-text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.crow-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.crow-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.crow-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.crow-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.crow-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.crow-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.crow-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.crow-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.crow-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.crow-underline{text-decoration-line:underline}.crow-opacity-0{opacity:0}.crow-opacity-100{opacity:1}.crow-opacity-25{opacity:.25}.crow-opacity-40{opacity:.4}.crow-opacity-50{opacity:.5}.crow-opacity-60{opacity:.6}.crow-opacity-75{opacity:.75}.crow-shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.crow-shadow-2xl,.crow-shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow:0 0 20px rgba(0,0,0,.25);--tw-shadow-colored:0 0 20px var(--tw-shadow-color)}.crow-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.crow-shadow-lg,.crow-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.crow-outline-none{outline:2px solid transparent;outline-offset:2px}.crow-ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.crow-ring-offset-2{--tw-ring-offset-width:2px}.crow-backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.crow-backdrop-blur-md,.crow-backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.crow-backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.crow-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-duration-150{transition-duration:.15s}.crow-duration-200{transition-duration:.2s}.crow-duration-300{transition-duration:.3s}.crow-duration-500{transition-duration:.5s}.crow-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}.crow-animate-pulse{animation:crow-pulse 1.5s ease-in-out infinite}.crow-animation-delay-100{animation-delay:.1s}.crow-animation-delay-200{animation-delay:.2s}@keyframes crow-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes crow-slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes crow-pulse{0%,to{opacity:1}50%{opacity:.4}}.crow-overflow-y-auto::-webkit-scrollbar{width:6px}.crow-overflow-y-auto::-webkit-scrollbar-track{background:transparent}.crow-overflow-y-auto::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:3px}.crow-overflow-y-auto::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.crow-focus-visible\\:crow-outline-none:focus-visible{outline:none}.crow-focus-visible\\:crow-ring-2:focus-visible{box-shadow:0 0 0 2px var(--crow-primary,#6366f1)}:host{--crow-primary:#6366f1;--crow-primary-dark:#4f46e5;--crow-secondary:#f1f5f9;--crow-accent:#10b981}@media (prefers-color-scheme:dark){:host{--crow-primary:#818cf8;--crow-primary-dark:#6366f1}}.crow-copilot-toggle{position:fixed;top:50%;transform:translateY(-50%);z-index:999998;width:24px;height:64px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #e5e7eb;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px rgba(0,0,0,.1)}.crow-copilot-toggle:hover{background:#f9fafb;box-shadow:0 4px 12px rgba(0,0,0,.15)}.crow-copilot-toggle-right{right:0;border-radius:8px 0 0 8px;border-right:none}.crow-copilot-toggle-left{left:0;border-radius:0 8px 8px 0;border-left:none}.crow-copilot-toggle.open.crow-copilot-toggle-right{right:var(--crow-copilot-width,400px)}.crow-copilot-toggle.open.crow-copilot-toggle-left{left:var(--crow-copilot-width,400px)}.crow-copilot-toggle svg{width:16px;height:16px;color:#6b7280;transition:transform .2s ease}.crow-copilot-toggle:hover svg{color:#374151}.crow-copilot-sidebar{position:fixed;top:0;bottom:0;z-index:999997;background:#fff;box-shadow:-4px 0 20px rgba(0,0,0,.1);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.crow-copilot-sidebar-right{right:0;border-left:1px solid #e5e7eb}.crow-copilot-sidebar-left{left:0;border-right:1px solid #e5e7eb}.crow-copilot-sidebar.closed.crow-copilot-sidebar-right{transform:translateX(100%)}.crow-copilot-sidebar.closed.crow-copilot-sidebar-left{transform:translateX(-100%)}body.crow-copilot-open-right{margin-right:var(--crow-copilot-width,400px)!important;transition:margin .3s cubic-bezier(.4,0,.2,1)}body.crow-copilot-open-left{margin-left:var(--crow-copilot-width,400px)!important}body,body.crow-copilot-open-left{transition:margin .3s cubic-bezier(.4,0,.2,1)}.placeholder\\:crow-text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\\:crow-text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.last\\:crow-mb-0:last-child{margin-bottom:0}.last\\:crow-border-0:last-child{border-width:0}.hover\\:crow-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:crow-bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\\:crow-bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.hover\\:crow-bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\\:crow-text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\\:crow-opacity-100:hover{opacity:1}.hover\\:crow-opacity-80:hover{opacity:.8}.hover\\:crow-opacity-90:hover{opacity:.9}.focus\\:crow-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:crow-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-0:focus,.focus\\:crow-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:crow-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:crow-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:crow-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\\:crow-pointer-events-none:disabled{pointer-events:none}.disabled\\:crow-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:crow-opacity-50:disabled{opacity:.5}`;
|
|
4370
4501
|
var injected = false;
|
|
4371
4502
|
function injectStyles(target = document) {
|
|
4372
4503
|
if (target === document && injected) return;
|
|
@@ -6089,7 +6220,20 @@ function CrowCopilot({
|
|
|
6089
6220
|
lineHeight: styles.typography.lineHeight,
|
|
6090
6221
|
letterSpacing: styles.typography.letterSpacing,
|
|
6091
6222
|
background: styles.colors.background,
|
|
6092
|
-
borderColor: styles.colors.border
|
|
6223
|
+
borderColor: styles.colors.border,
|
|
6224
|
+
// CSS variables for dark mode / theme propagation
|
|
6225
|
+
"--crow-primary": styles.colors.primary,
|
|
6226
|
+
"--crow-bg": styles.colors.background,
|
|
6227
|
+
"--crow-text": styles.colors.text,
|
|
6228
|
+
"--crow-border": styles.colors.border,
|
|
6229
|
+
"--crow-bot-bubble": styles.colors.botBubble,
|
|
6230
|
+
"--crow-bot-text": styles.colors.botText,
|
|
6231
|
+
"--crow-user-bubble": styles.colors.userBubble,
|
|
6232
|
+
"--crow-user-text": styles.colors.userText,
|
|
6233
|
+
"--crow-messages-bg": styles.colors.messagesBackground,
|
|
6234
|
+
"--crow-text-muted": styles.colors.text + "80",
|
|
6235
|
+
"--crow-bg-hover": styles.colors.text + "10",
|
|
6236
|
+
"--crow-bg-active": styles.colors.text + "18"
|
|
6093
6237
|
},
|
|
6094
6238
|
children: [
|
|
6095
6239
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -6115,8 +6259,10 @@ function CrowCopilot({
|
|
|
6115
6259
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6116
6260
|
"div",
|
|
6117
6261
|
{
|
|
6118
|
-
className:
|
|
6262
|
+
className: "crow-relative crow-flex-shrink-0 crow-flex crow-items-center crow-text-[13px] crow-leading-tight crow-py-2.5 crow-transition-colors crow-select-none crow-cursor-pointer",
|
|
6119
6263
|
style: {
|
|
6264
|
+
color: isActive ? styles.colors.text : styles.colors.text + "80",
|
|
6265
|
+
fontWeight: isActive ? 500 : void 0,
|
|
6120
6266
|
maxWidth: "180px",
|
|
6121
6267
|
borderRight: idx < tabs.length - 1 ? `1px solid ${styles.colors.border}` : "none",
|
|
6122
6268
|
paddingLeft: "16px",
|
|
@@ -6148,7 +6294,7 @@ function CrowCopilot({
|
|
|
6148
6294
|
isCloseable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6149
6295
|
"span",
|
|
6150
6296
|
{
|
|
6151
|
-
className: "crow-rounded crow-p-0.5 crow-flex-shrink-0 crow-inline-flex crow-items-center crow-justify-center crow-transition-opacity
|
|
6297
|
+
className: "crow-rounded crow-p-0.5 crow-flex-shrink-0 crow-inline-flex crow-items-center crow-justify-center crow-transition-opacity",
|
|
6152
6298
|
style: {
|
|
6153
6299
|
marginLeft: "6px",
|
|
6154
6300
|
opacity: isHovered ? 1 : 0,
|
|
@@ -6160,7 +6306,7 @@ function CrowCopilot({
|
|
|
6160
6306
|
},
|
|
6161
6307
|
role: "button",
|
|
6162
6308
|
"aria-label": `Close ${tab.name}`,
|
|
6163
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(TabCloseIcon, { className: "crow-w-3 crow-h-3
|
|
6309
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(TabCloseIcon, { className: "crow-w-3 crow-h-3", style: { color: styles.colors.text + "80" } })
|
|
6164
6310
|
}
|
|
6165
6311
|
),
|
|
6166
6312
|
isActive && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6190,10 +6336,17 @@ function CrowCopilot({
|
|
|
6190
6336
|
"button",
|
|
6191
6337
|
{
|
|
6192
6338
|
onClick: handleNewChat,
|
|
6193
|
-
className: "crow-p-2
|
|
6339
|
+
className: "crow-p-2 crow-transition-colors crow-rounded",
|
|
6340
|
+
style: { color: styles.colors.text + "80" },
|
|
6341
|
+
onMouseEnter: (e) => {
|
|
6342
|
+
e.currentTarget.style.background = styles.colors.text + "10";
|
|
6343
|
+
},
|
|
6344
|
+
onMouseLeave: (e) => {
|
|
6345
|
+
e.currentTarget.style.background = "transparent";
|
|
6346
|
+
},
|
|
6194
6347
|
"aria-label": "New Chat",
|
|
6195
6348
|
title: "New Chat",
|
|
6196
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(PlusIcon, { className: "crow-w-4 crow-h-4
|
|
6349
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(PlusIcon, { className: "crow-w-4 crow-h-4" })
|
|
6197
6350
|
}
|
|
6198
6351
|
),
|
|
6199
6352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6202,29 +6355,53 @@ function CrowCopilot({
|
|
|
6202
6355
|
onClick: handleToggleHistory,
|
|
6203
6356
|
disabled: !isVerifiedUser,
|
|
6204
6357
|
"aria-disabled": !isVerifiedUser,
|
|
6205
|
-
className: `crow-p-2 crow-transition-colors
|
|
6358
|
+
className: `crow-p-2 crow-transition-colors crow-rounded ${!isVerifiedUser ? "crow-opacity-40 crow-cursor-not-allowed" : ""}`,
|
|
6359
|
+
style: {
|
|
6360
|
+
color: styles.colors.text + "80",
|
|
6361
|
+
background: showConversationList ? styles.colors.text + "10" : "transparent"
|
|
6362
|
+
},
|
|
6363
|
+
onMouseEnter: (e) => {
|
|
6364
|
+
if (isVerifiedUser) e.currentTarget.style.background = styles.colors.text + "10";
|
|
6365
|
+
},
|
|
6366
|
+
onMouseLeave: (e) => {
|
|
6367
|
+
if (!showConversationList) e.currentTarget.style.background = "transparent";
|
|
6368
|
+
},
|
|
6206
6369
|
"aria-label": "Conversation History",
|
|
6207
6370
|
title: isVerifiedUser ? "Conversation History" : "Sign in to view history",
|
|
6208
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(HistoryIcon, { className: "crow-w-4 crow-h-4
|
|
6371
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(HistoryIcon, { className: "crow-w-4 crow-h-4" })
|
|
6209
6372
|
}
|
|
6210
6373
|
),
|
|
6211
6374
|
canScrollRight && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6212
6375
|
"button",
|
|
6213
6376
|
{
|
|
6214
6377
|
onClick: handleScrollRight,
|
|
6215
|
-
className: "crow-p-2
|
|
6378
|
+
className: "crow-p-2 crow-transition-colors crow-rounded",
|
|
6379
|
+
style: { color: styles.colors.text + "80" },
|
|
6380
|
+
onMouseEnter: (e) => {
|
|
6381
|
+
e.currentTarget.style.background = styles.colors.text + "10";
|
|
6382
|
+
},
|
|
6383
|
+
onMouseLeave: (e) => {
|
|
6384
|
+
e.currentTarget.style.background = "transparent";
|
|
6385
|
+
},
|
|
6216
6386
|
"aria-label": "Scroll tabs",
|
|
6217
6387
|
title: "Scroll tabs",
|
|
6218
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: "crow-w-4 crow-h-4
|
|
6388
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: "crow-w-4 crow-h-4" })
|
|
6219
6389
|
}
|
|
6220
6390
|
),
|
|
6221
6391
|
(forceShowClose ?? showClose) && (overrideOnClose ?? onClose) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6222
6392
|
"button",
|
|
6223
6393
|
{
|
|
6224
6394
|
onClick: overrideOnClose ?? onClose,
|
|
6225
|
-
className: "crow-p-2
|
|
6395
|
+
className: "crow-p-2 crow-transition-colors crow-rounded",
|
|
6396
|
+
style: { color: styles.colors.text + "80" },
|
|
6397
|
+
onMouseEnter: (e) => {
|
|
6398
|
+
e.currentTarget.style.background = styles.colors.text + "10";
|
|
6399
|
+
},
|
|
6400
|
+
onMouseLeave: (e) => {
|
|
6401
|
+
e.currentTarget.style.background = "transparent";
|
|
6402
|
+
},
|
|
6226
6403
|
"aria-label": "Close",
|
|
6227
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { className: "crow-w-4 crow-h-4
|
|
6404
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { className: "crow-w-4 crow-h-4" })
|
|
6228
6405
|
}
|
|
6229
6406
|
)
|
|
6230
6407
|
]
|
|
@@ -6238,7 +6415,7 @@ function CrowCopilot({
|
|
|
6238
6415
|
{
|
|
6239
6416
|
className: "crow-flex crow-items-center crow-gap-1.5 crow-px-3 crow-py-1.5 crow-border-b crow-text-xs",
|
|
6240
6417
|
style: {
|
|
6241
|
-
color: "
|
|
6418
|
+
color: styles.colors.text + "80",
|
|
6242
6419
|
borderColor: styles.colors.border
|
|
6243
6420
|
},
|
|
6244
6421
|
children: [
|
|
@@ -6275,7 +6452,14 @@ function CrowCopilot({
|
|
|
6275
6452
|
onClose: handleCloseConversationList
|
|
6276
6453
|
}
|
|
6277
6454
|
),
|
|
6278
|
-
showConversationList && !isVerifiedUser && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6455
|
+
showConversationList && !isVerifiedUser && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6456
|
+
"div",
|
|
6457
|
+
{
|
|
6458
|
+
className: "crow-mb-3 crow-rounded-xl crow-border crow-p-4",
|
|
6459
|
+
style: { background: styles.colors.text + "08", borderColor: styles.colors.border },
|
|
6460
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-text-sm", style: { color: styles.colors.text + "99" }, children: "Sign in to view conversation history." })
|
|
6461
|
+
}
|
|
6462
|
+
)
|
|
6279
6463
|
] }),
|
|
6280
6464
|
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: activeWorkflow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6281
6465
|
WorkflowPanel,
|
|
@@ -6328,7 +6512,7 @@ function CrowCopilot({
|
|
|
6328
6512
|
className: "crow-p-3 crow-border-t",
|
|
6329
6513
|
style: { borderColor: styles.colors.border },
|
|
6330
6514
|
children: [
|
|
6331
|
-
toolStatus && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "crow-mb-1 crow-flex crow-items-center crow-gap-2 crow-rounded-lg crow-border crow-
|
|
6515
|
+
toolStatus && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "crow-mb-1 crow-flex crow-items-center crow-gap-2 crow-rounded-lg crow-border crow-px-3 crow-py-2 crow-text-sm", style: { borderColor: styles.colors.border, background: styles.colors.border + "30" }, children: [
|
|
6332
6516
|
/* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "crow-animate-spin crow-h-4 crow-w-4 crow-shrink-0 crow-text-[var(--crow-primary,#7c3aed)]", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [
|
|
6333
6517
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { className: "crow-opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
6334
6518
|
/* @__PURE__ */ jsxRuntime.jsx("path", { className: "crow-opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z" })
|
|
@@ -6377,7 +6561,8 @@ function CrowCopilot({
|
|
|
6377
6561
|
}
|
|
6378
6562
|
const isRight = position === "right";
|
|
6379
6563
|
const edgeSide = isRight ? "left" : "right";
|
|
6380
|
-
const
|
|
6564
|
+
const toggleIconColor = styles.colors.text + "80";
|
|
6565
|
+
const toggleIcon = isCollapsed ? /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: toggleIconColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: toggleIconColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: isRight ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9 18 6-6-6-6" }) : /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m15 18-6-6 6-6" }) });
|
|
6381
6566
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { position: "relative", flexShrink: 0, height: "100%" }, children: [
|
|
6382
6567
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6383
6568
|
"button",
|
|
@@ -6396,8 +6581,8 @@ function CrowCopilot({
|
|
|
6396
6581
|
display: "flex",
|
|
6397
6582
|
alignItems: "center",
|
|
6398
6583
|
justifyContent: "center",
|
|
6399
|
-
background:
|
|
6400
|
-
border:
|
|
6584
|
+
background: styles.colors.background,
|
|
6585
|
+
border: `1px solid ${styles.colors.border}`,
|
|
6401
6586
|
[isRight ? "borderRight" : "borderLeft"]: "none",
|
|
6402
6587
|
borderRadius: isRight ? "8px 0 0 8px" : "0 8px 8px 0",
|
|
6403
6588
|
cursor: isCollapsed ? "pointer" : "col-resize",
|
|
@@ -6467,7 +6652,7 @@ function HistoryIcon({ className }) {
|
|
|
6467
6652
|
}
|
|
6468
6653
|
);
|
|
6469
6654
|
}
|
|
6470
|
-
function TabCloseIcon({ className }) {
|
|
6655
|
+
function TabCloseIcon({ className, style }) {
|
|
6471
6656
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6472
6657
|
"svg",
|
|
6473
6658
|
{
|
|
@@ -6481,6 +6666,7 @@ function TabCloseIcon({ className }) {
|
|
|
6481
6666
|
strokeLinecap: "round",
|
|
6482
6667
|
strokeLinejoin: "round",
|
|
6483
6668
|
className,
|
|
6669
|
+
style,
|
|
6484
6670
|
children: [
|
|
6485
6671
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6 6 18" }),
|
|
6486
6672
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m6 6 12 12" })
|