@usecrow/ui 0.1.12 → 0.1.13
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 +113 -207
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.js +113 -207
- package/dist/index.js.map +1 -1
- package/dist/styles.css +3 -0
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -119,9 +119,7 @@ function useChat({
|
|
|
119
119
|
message,
|
|
120
120
|
conversation_id: conversationId,
|
|
121
121
|
identity_token: identityToken,
|
|
122
|
-
model: selectedModel
|
|
123
|
-
user_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
124
|
-
user_local_time: (/* @__PURE__ */ new Date()).toLocaleString()
|
|
122
|
+
model: selectedModel
|
|
125
123
|
}),
|
|
126
124
|
signal: abortControllerRef.current.signal
|
|
127
125
|
});
|
|
@@ -391,9 +389,7 @@ function useChat({
|
|
|
391
389
|
tool_name: toolName,
|
|
392
390
|
result,
|
|
393
391
|
identity_token: identityToken,
|
|
394
|
-
model: selectedModel
|
|
395
|
-
user_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
396
|
-
user_local_time: (/* @__PURE__ */ new Date()).toLocaleString()
|
|
392
|
+
model: selectedModel
|
|
397
393
|
})
|
|
398
394
|
});
|
|
399
395
|
if (!response.ok) {
|
|
@@ -504,14 +500,14 @@ function useConversations({ productId, apiUrl = "" }) {
|
|
|
504
500
|
if (res.ok) {
|
|
505
501
|
const data = await res.json();
|
|
506
502
|
const historyMessages = data.messages || [];
|
|
507
|
-
return historyMessages.
|
|
508
|
-
(msg) =>
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
503
|
+
return historyMessages.map(
|
|
504
|
+
(msg, idx) => ({
|
|
505
|
+
id: `history-${idx}`,
|
|
506
|
+
content: msg.content,
|
|
507
|
+
isBot: msg.role === "assistant",
|
|
508
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
509
|
+
})
|
|
510
|
+
);
|
|
515
511
|
}
|
|
516
512
|
} catch (error) {
|
|
517
513
|
console.error("[Crow] Error loading conversation history:", error);
|
|
@@ -532,14 +528,14 @@ function useConversations({ productId, apiUrl = "" }) {
|
|
|
532
528
|
if (res.ok) {
|
|
533
529
|
const data = await res.json();
|
|
534
530
|
const historyMessages = data.messages || [];
|
|
535
|
-
return historyMessages.
|
|
536
|
-
(msg) =>
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
531
|
+
return historyMessages.map(
|
|
532
|
+
(msg, idx) => ({
|
|
533
|
+
id: `history-${idx}`,
|
|
534
|
+
content: msg.content,
|
|
535
|
+
isBot: msg.role === "assistant",
|
|
536
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
537
|
+
})
|
|
538
|
+
);
|
|
543
539
|
}
|
|
544
540
|
} catch (error) {
|
|
545
541
|
console.error("[Crow] Error loading anonymous conversation history:", error);
|
|
@@ -652,16 +648,6 @@ function useWorkflow({
|
|
|
652
648
|
exitWorkflow
|
|
653
649
|
};
|
|
654
650
|
}
|
|
655
|
-
var SDK_DEFAULT_TOOLS = {
|
|
656
|
-
refreshPage: async () => {
|
|
657
|
-
try {
|
|
658
|
-
window.location.reload();
|
|
659
|
-
return { status: "success", data: { message: "Page refresh initiated" } };
|
|
660
|
-
} catch (error) {
|
|
661
|
-
return { status: "error", error: String(error) };
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
};
|
|
665
651
|
function useCrowAPI({ onIdentified, onReset } = {}) {
|
|
666
652
|
const onIdentifiedRef = React3.useRef(onIdentified);
|
|
667
653
|
const onResetRef = React3.useRef(onReset);
|
|
@@ -671,15 +657,6 @@ function useCrowAPI({ onIdentified, onReset } = {}) {
|
|
|
671
657
|
onResetRef.current = onReset;
|
|
672
658
|
});
|
|
673
659
|
React3.useEffect(() => {
|
|
674
|
-
if (!window.__crow_client_tools) {
|
|
675
|
-
window.__crow_client_tools = {};
|
|
676
|
-
}
|
|
677
|
-
for (const [toolName, handler] of Object.entries(SDK_DEFAULT_TOOLS)) {
|
|
678
|
-
if (!window.__crow_client_tools[toolName]) {
|
|
679
|
-
window.__crow_client_tools[toolName] = handler;
|
|
680
|
-
console.log(`[Crow] Registered default tool: ${toolName}`);
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
660
|
window.crow = function(command, options) {
|
|
684
661
|
const opts = options;
|
|
685
662
|
switch (command) {
|
|
@@ -1036,6 +1013,9 @@ function useWidgetStyles({
|
|
|
1036
1013
|
const [agentName, setAgentName] = React3.useState(
|
|
1037
1014
|
styleCache.get(key)?.agentName || "Assistant"
|
|
1038
1015
|
);
|
|
1016
|
+
const [browserUseEnabled, setBrowserUseEnabled] = React3.useState(
|
|
1017
|
+
styleCache.get(key)?.browserUseEnabled || false
|
|
1018
|
+
);
|
|
1039
1019
|
const hasFetchedRef = React3.useRef(false);
|
|
1040
1020
|
const fetchStyles = async () => {
|
|
1041
1021
|
if (skip) return;
|
|
@@ -1046,6 +1026,7 @@ function useWidgetStyles({
|
|
|
1046
1026
|
styleCache.set(key, config);
|
|
1047
1027
|
setDbStyles(config.widgetStyles);
|
|
1048
1028
|
setAgentName(config.agentName || "Assistant");
|
|
1029
|
+
setBrowserUseEnabled(config.browserUseEnabled || false);
|
|
1049
1030
|
} catch (err) {
|
|
1050
1031
|
console.error("[CrowWidget] Failed to fetch styles:", err);
|
|
1051
1032
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
@@ -1059,6 +1040,7 @@ function useWidgetStyles({
|
|
|
1059
1040
|
if (cached) {
|
|
1060
1041
|
setDbStyles(cached.widgetStyles);
|
|
1061
1042
|
setAgentName(cached.agentName || "Assistant");
|
|
1043
|
+
setBrowserUseEnabled(cached.browserUseEnabled || false);
|
|
1062
1044
|
setIsLoading(false);
|
|
1063
1045
|
return;
|
|
1064
1046
|
}
|
|
@@ -1071,6 +1053,7 @@ function useWidgetStyles({
|
|
|
1071
1053
|
isLoading,
|
|
1072
1054
|
error,
|
|
1073
1055
|
agentName,
|
|
1056
|
+
browserUseEnabled,
|
|
1074
1057
|
refetch: fetchStyles
|
|
1075
1058
|
};
|
|
1076
1059
|
}
|
|
@@ -1172,9 +1155,7 @@ function useWidgetStyles2() {
|
|
|
1172
1155
|
const context = React3.useContext(WidgetStyleContext);
|
|
1173
1156
|
return context?.styles ?? DEFAULT_WIDGET_STYLES;
|
|
1174
1157
|
}
|
|
1175
|
-
var CopilotStyleContext = React3.createContext(
|
|
1176
|
-
null
|
|
1177
|
-
);
|
|
1158
|
+
var CopilotStyleContext = React3.createContext(null);
|
|
1178
1159
|
function CopilotStyleProvider({
|
|
1179
1160
|
children,
|
|
1180
1161
|
styles,
|
|
@@ -1200,7 +1181,6 @@ function useCopilotStyles2() {
|
|
|
1200
1181
|
const context = React3.useContext(CopilotStyleContext);
|
|
1201
1182
|
return context?.styles ?? DEFAULT_COPILOT_STYLES;
|
|
1202
1183
|
}
|
|
1203
|
-
var PASSTHROUGH_KEYS = /* @__PURE__ */ new Set(["Escape", "Tab"]);
|
|
1204
1184
|
function ShadowContainer({
|
|
1205
1185
|
children,
|
|
1206
1186
|
styles,
|
|
@@ -1215,51 +1195,6 @@ function ShadowContainer({
|
|
|
1215
1195
|
setShadowRoot(shadow);
|
|
1216
1196
|
}
|
|
1217
1197
|
}, []);
|
|
1218
|
-
React3.useEffect(() => {
|
|
1219
|
-
if (!shadowRoot || !hostRef.current) return;
|
|
1220
|
-
const hostElement = hostRef.current;
|
|
1221
|
-
const stopPropagationHandler = (e) => {
|
|
1222
|
-
const keyEvent = e;
|
|
1223
|
-
if (keyEvent.key && PASSTHROUGH_KEYS.has(keyEvent.key)) {
|
|
1224
|
-
return;
|
|
1225
|
-
}
|
|
1226
|
-
e.stopPropagation();
|
|
1227
|
-
};
|
|
1228
|
-
shadowRoot.addEventListener("keydown", stopPropagationHandler);
|
|
1229
|
-
shadowRoot.addEventListener("keyup", stopPropagationHandler);
|
|
1230
|
-
shadowRoot.addEventListener("keypress", stopPropagationHandler);
|
|
1231
|
-
let lastFocusedElement = null;
|
|
1232
|
-
const trackFocus = (e) => {
|
|
1233
|
-
lastFocusedElement = e.target;
|
|
1234
|
-
};
|
|
1235
|
-
const protectFocus = (e) => {
|
|
1236
|
-
if (e.key && PASSTHROUGH_KEYS.has(e.key)) {
|
|
1237
|
-
return;
|
|
1238
|
-
}
|
|
1239
|
-
const path = e.composedPath();
|
|
1240
|
-
if (!path.includes(hostElement) && !path.includes(shadowRoot)) {
|
|
1241
|
-
return;
|
|
1242
|
-
}
|
|
1243
|
-
if (lastFocusedElement) {
|
|
1244
|
-
const elementToRestore = lastFocusedElement;
|
|
1245
|
-
queueMicrotask(() => {
|
|
1246
|
-
const activeInShadow = shadowRoot.activeElement;
|
|
1247
|
-
if (!activeInShadow) {
|
|
1248
|
-
elementToRestore.focus();
|
|
1249
|
-
}
|
|
1250
|
-
});
|
|
1251
|
-
}
|
|
1252
|
-
};
|
|
1253
|
-
shadowRoot.addEventListener("focusin", trackFocus);
|
|
1254
|
-
document.addEventListener("keydown", protectFocus, { capture: true });
|
|
1255
|
-
return () => {
|
|
1256
|
-
shadowRoot.removeEventListener("keydown", stopPropagationHandler);
|
|
1257
|
-
shadowRoot.removeEventListener("keyup", stopPropagationHandler);
|
|
1258
|
-
shadowRoot.removeEventListener("keypress", stopPropagationHandler);
|
|
1259
|
-
shadowRoot.removeEventListener("focusin", trackFocus);
|
|
1260
|
-
document.removeEventListener("keydown", protectFocus, { capture: true });
|
|
1261
|
-
};
|
|
1262
|
-
}, [shadowRoot]);
|
|
1263
1198
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: hostRef, id: hostId, className: hostClassName, children: shadowRoot && reactDom.createPortal(
|
|
1264
1199
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1265
1200
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: styles }),
|
|
@@ -1449,20 +1384,13 @@ function StreamingText({
|
|
|
1449
1384
|
return isInline ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1450
1385
|
"code",
|
|
1451
1386
|
{
|
|
1452
|
-
className: "crow-bg-gray-
|
|
1453
|
-
...props,
|
|
1454
|
-
children
|
|
1455
|
-
}
|
|
1456
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1457
|
-
"code",
|
|
1458
|
-
{
|
|
1459
|
-
className: `crow-text-gray-200 ${className || ""}`,
|
|
1387
|
+
className: "crow-bg-gray-100 crow-px-1 crow-py-0.5 crow-rounded crow-text-sm",
|
|
1460
1388
|
...props,
|
|
1461
1389
|
children
|
|
1462
1390
|
}
|
|
1463
|
-
);
|
|
1391
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("code", { className, ...props, children });
|
|
1464
1392
|
},
|
|
1465
|
-
pre: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "crow-bg-gray-
|
|
1393
|
+
pre: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "crow-bg-gray-100 crow-p-2 crow-rounded crow-my-1 crow-overflow-x-auto crow-text-sm", children })
|
|
1466
1394
|
},
|
|
1467
1395
|
children: content
|
|
1468
1396
|
}
|
|
@@ -1574,12 +1502,7 @@ function ShimmeringContent({ children }) {
|
|
|
1574
1502
|
}
|
|
1575
1503
|
);
|
|
1576
1504
|
}
|
|
1577
|
-
function ReasoningTrace({
|
|
1578
|
-
thinking,
|
|
1579
|
-
isComplete,
|
|
1580
|
-
toolCalls = [],
|
|
1581
|
-
isWaiting = false
|
|
1582
|
-
}) {
|
|
1505
|
+
function ReasoningTrace({ thinking, isComplete, toolCalls = [], isWaiting = false }) {
|
|
1583
1506
|
const hasThinking = !!thinking && thinking.trim().length > 0;
|
|
1584
1507
|
const hasToolCalls = toolCalls.length > 0;
|
|
1585
1508
|
if (!isWaiting && !hasThinking && !hasToolCalls) return null;
|
|
@@ -1595,10 +1518,7 @@ function WaitingIndicator() {
|
|
|
1595
1518
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "crow-font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(ShimmeringContent, { children: getRandomThinkingMessage() }) })
|
|
1596
1519
|
] });
|
|
1597
1520
|
}
|
|
1598
|
-
function ThinkingBlock({
|
|
1599
|
-
thinking,
|
|
1600
|
-
isComplete
|
|
1601
|
-
}) {
|
|
1521
|
+
function ThinkingBlock({ thinking, isComplete }) {
|
|
1602
1522
|
const [isExpanded, setIsExpanded] = React3.useState(!isComplete);
|
|
1603
1523
|
React3.useLayoutEffect(() => {
|
|
1604
1524
|
setIsExpanded(!isComplete);
|
|
@@ -1687,7 +1607,7 @@ function ToolCallBlock({ toolCall }) {
|
|
|
1687
1607
|
exit: { height: 0, opacity: 0 },
|
|
1688
1608
|
transition: { duration: 0.15 },
|
|
1689
1609
|
className: "crow-overflow-hidden",
|
|
1690
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "crow-mt-1 crow-p-2 crow-bg-gray-
|
|
1610
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "crow-mt-1 crow-p-2 crow-bg-gray-100 crow-rounded crow-text-xs crow-font-mono crow-text-gray-700 crow-overflow-x-auto crow-max-h-32 crow-overflow-y-auto crow-ml-4", children: JSON.stringify(toolCall.arguments, null, 2) })
|
|
1691
1611
|
}
|
|
1692
1612
|
) })
|
|
1693
1613
|
] });
|
|
@@ -1792,62 +1712,64 @@ function MessageList({
|
|
|
1792
1712
|
msg.id
|
|
1793
1713
|
)) });
|
|
1794
1714
|
}
|
|
1795
|
-
var MessagesContainer = React3.forwardRef(
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
const
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
const
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1715
|
+
var MessagesContainer = React3.forwardRef(
|
|
1716
|
+
({ children }, ref) => {
|
|
1717
|
+
const styles = useWidgetStyles2();
|
|
1718
|
+
const internalRef = React3.useRef(null);
|
|
1719
|
+
const lastScrollHeightRef = React3.useRef(0);
|
|
1720
|
+
const isUserScrollingRef = React3.useRef(false);
|
|
1721
|
+
const containerRef = ref || internalRef;
|
|
1722
|
+
const isNearBottom = React3.useCallback(() => {
|
|
1723
|
+
const container = containerRef.current;
|
|
1724
|
+
if (!container) return true;
|
|
1725
|
+
const threshold = 100;
|
|
1726
|
+
return container.scrollHeight - container.scrollTop - container.clientHeight < threshold;
|
|
1727
|
+
}, [containerRef]);
|
|
1728
|
+
const scrollToBottom = React3.useCallback(() => {
|
|
1729
|
+
const container = containerRef.current;
|
|
1730
|
+
if (!container) return;
|
|
1731
|
+
container.scrollTo({
|
|
1732
|
+
top: container.scrollHeight,
|
|
1733
|
+
behavior: "smooth"
|
|
1734
|
+
});
|
|
1735
|
+
}, [containerRef]);
|
|
1736
|
+
React3.useEffect(() => {
|
|
1737
|
+
const container = containerRef.current;
|
|
1738
|
+
if (!container) return;
|
|
1739
|
+
const handleScroll = () => {
|
|
1740
|
+
isUserScrollingRef.current = !isNearBottom();
|
|
1741
|
+
};
|
|
1742
|
+
container.addEventListener("scroll", handleScroll, { passive: true });
|
|
1743
|
+
return () => container.removeEventListener("scroll", handleScroll);
|
|
1744
|
+
}, [containerRef, isNearBottom]);
|
|
1745
|
+
React3.useEffect(() => {
|
|
1746
|
+
const container = containerRef.current;
|
|
1747
|
+
if (!container) return;
|
|
1748
|
+
const currentHeight = container.scrollHeight;
|
|
1749
|
+
const heightChanged = currentHeight !== lastScrollHeightRef.current;
|
|
1750
|
+
if (heightChanged) {
|
|
1751
|
+
lastScrollHeightRef.current = currentHeight;
|
|
1752
|
+
if (!isUserScrollingRef.current || isNearBottom()) {
|
|
1753
|
+
scrollToBottom();
|
|
1754
|
+
}
|
|
1755
|
+
}
|
|
1813
1756
|
});
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
if (!container) return;
|
|
1827
|
-
const currentHeight = container.scrollHeight;
|
|
1828
|
-
const heightChanged = currentHeight !== lastScrollHeightRef.current;
|
|
1829
|
-
if (heightChanged) {
|
|
1830
|
-
lastScrollHeightRef.current = currentHeight;
|
|
1831
|
-
if (!isUserScrollingRef.current || isNearBottom()) {
|
|
1832
|
-
scrollToBottom();
|
|
1757
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1758
|
+
framerMotion.motion.div,
|
|
1759
|
+
{
|
|
1760
|
+
ref: containerRef,
|
|
1761
|
+
id: MESSAGES_CONTAINER_ID,
|
|
1762
|
+
initial: { opacity: 0 },
|
|
1763
|
+
animate: { opacity: 1 },
|
|
1764
|
+
exit: { opacity: 0 },
|
|
1765
|
+
transition: { duration: styles.animations.duration },
|
|
1766
|
+
className: "crow-relative crow-flex-1 crow-min-h-0 crow-rounded-2xl crow-mb-3 crow-overflow-y-auto crow-p-4 crow-space-y-3 crow-pointer-events-auto",
|
|
1767
|
+
style: { background: styles.colors.messagesBackground },
|
|
1768
|
+
children
|
|
1833
1769
|
}
|
|
1834
|
-
|
|
1835
|
-
}
|
|
1836
|
-
|
|
1837
|
-
framerMotion.motion.div,
|
|
1838
|
-
{
|
|
1839
|
-
ref: containerRef,
|
|
1840
|
-
id: MESSAGES_CONTAINER_ID,
|
|
1841
|
-
initial: { opacity: 0 },
|
|
1842
|
-
animate: { opacity: 1 },
|
|
1843
|
-
exit: { opacity: 0 },
|
|
1844
|
-
transition: { duration: styles.animations.duration },
|
|
1845
|
-
className: "crow-relative crow-flex-1 crow-min-h-0 crow-rounded-2xl crow-mb-3 crow-overflow-y-auto crow-p-4 crow-space-y-3 crow-pointer-events-auto",
|
|
1846
|
-
style: { background: styles.colors.messagesBackground },
|
|
1847
|
-
children
|
|
1848
|
-
}
|
|
1849
|
-
);
|
|
1850
|
-
});
|
|
1770
|
+
);
|
|
1771
|
+
}
|
|
1772
|
+
);
|
|
1851
1773
|
MessagesContainer.displayName = "MessagesContainer";
|
|
1852
1774
|
function ConversationList({
|
|
1853
1775
|
conversations,
|
|
@@ -2119,13 +2041,7 @@ var PromptInput = React3__default.default.forwardRef(
|
|
|
2119
2041
|
}
|
|
2120
2042
|
);
|
|
2121
2043
|
PromptInput.displayName = "PromptInput";
|
|
2122
|
-
var PromptInputTextarea = ({
|
|
2123
|
-
className,
|
|
2124
|
-
onKeyDown,
|
|
2125
|
-
disableAutosize = false,
|
|
2126
|
-
placeholder,
|
|
2127
|
-
...props
|
|
2128
|
-
}) => {
|
|
2044
|
+
var PromptInputTextarea = ({ className, onKeyDown, disableAutosize = false, placeholder, ...props }) => {
|
|
2129
2045
|
const { value, setValue, maxHeight, onSubmit, disabled } = usePromptInput();
|
|
2130
2046
|
const textareaRef = React3__default.default.useRef(null);
|
|
2131
2047
|
React3__default.default.useEffect(() => {
|
|
@@ -2158,14 +2074,7 @@ var PromptInputActions = ({
|
|
|
2158
2074
|
children,
|
|
2159
2075
|
className,
|
|
2160
2076
|
...props
|
|
2161
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2162
|
-
"div",
|
|
2163
|
-
{
|
|
2164
|
-
className: cn("crow-flex crow-items-center crow-gap-2", className),
|
|
2165
|
-
...props,
|
|
2166
|
-
children
|
|
2167
|
-
}
|
|
2168
|
-
);
|
|
2077
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("crow-flex crow-items-center crow-gap-2", className), ...props, children });
|
|
2169
2078
|
var PromptInputAction = ({
|
|
2170
2079
|
tooltip,
|
|
2171
2080
|
children,
|
|
@@ -2212,13 +2121,7 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
2212
2121
|
disabled: isLoading,
|
|
2213
2122
|
ref: ref || promptBoxRef,
|
|
2214
2123
|
children: [
|
|
2215
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-transition-all crow-duration-300 crow-opacity-100", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2216
|
-
PromptInputTextarea,
|
|
2217
|
-
{
|
|
2218
|
-
placeholder,
|
|
2219
|
-
className: "crow-text-base"
|
|
2220
|
-
}
|
|
2221
|
-
) }),
|
|
2124
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-transition-all crow-duration-300 crow-opacity-100", children: /* @__PURE__ */ jsxRuntime.jsx(PromptInputTextarea, { placeholder, className: "crow-text-base" }) }),
|
|
2222
2125
|
/* @__PURE__ */ jsxRuntime.jsxs(PromptInputActions, { className: "crow-flex crow-items-center crow-justify-between crow-gap-2 crow-p-0 crow-pt-1", children: [
|
|
2223
2126
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "crow-flex crow-items-center", children: availableModels.length > 0 && onModelChange && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2224
2127
|
ModelSelector,
|
|
@@ -2251,21 +2154,10 @@ var PromptInputBox = React3__default.default.forwardRef(
|
|
|
2251
2154
|
handleSubmit();
|
|
2252
2155
|
}
|
|
2253
2156
|
},
|
|
2254
|
-
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
style: { fill: "white" }
|
|
2259
|
-
}
|
|
2260
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2261
|
-
lucideReact.ArrowUp,
|
|
2262
|
-
{
|
|
2263
|
-
className: cn(
|
|
2264
|
-
"crow-h-3.5 crow-w-3.5",
|
|
2265
|
-
hasContent ? "crow-text-white" : "crow-text-gray-400"
|
|
2266
|
-
)
|
|
2267
|
-
}
|
|
2268
|
-
)
|
|
2157
|
+
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "crow-h-3.5 crow-w-3.5 crow-text-white", style: { fill: "white" } }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: cn(
|
|
2158
|
+
"crow-h-3.5 crow-w-3.5",
|
|
2159
|
+
hasContent ? "crow-text-white" : "crow-text-gray-400"
|
|
2160
|
+
) })
|
|
2269
2161
|
}
|
|
2270
2162
|
)
|
|
2271
2163
|
}
|
|
@@ -2380,7 +2272,7 @@ function getCssVar(varName, element = document.documentElement) {
|
|
|
2380
2272
|
var STYLE_ID = "crow-ui-styles";
|
|
2381
2273
|
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: }
|
|
2382
2274
|
|
|
2383
|
-
/*! 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-50{z-index:50}.crow-z-\\[999999\\]{z-index:999999}.crow-m-0{margin:0}.crow-my-1{margin-top:.25rem;margin-bottom:.25rem}.crow-my-2{margin-top:.5rem;margin-bottom:.5rem}.crow-mb-1{margin-bottom:.25rem}.crow-mb-2{margin-bottom:.5rem}.crow-mb-3{margin-bottom:.75rem}.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-2{margin-top:.5rem}.crow-mt-auto{margin-top:auto}.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-7{height:1.75rem}.crow-h-8{height:2rem}.crow-h-full{height:100%}.crow-max-h-32{max-height:8rem}.crow-max-h-\\[200px\\]{max-height:200px}.crow-min-h-0{min-height:0}.crow-min-h-\\[32px\\]{min-height:32px}.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-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{flex-shrink:0}.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-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-items-start{align-items:flex-start}.crow-items-end{align-items:flex-end}.crow-items-center{align-items:center}.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-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-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-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.crow-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.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-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-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-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-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-4{padding-right:1rem}.crow-pt-1{padding-top:.25rem}.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-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-leading-relaxed{line-height:1.625}.crow-tracking-wide{letter-spacing:.025em}.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-50{opacity:.5}.crow-opacity-60{opacity:.6}.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-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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}}.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-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-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-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}.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}`;
|
|
2275
|
+
/*! 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-50{z-index:50}.crow-z-\\[999999\\]{z-index:999999}.crow-m-0{margin:0}.crow-my-1{margin-top:.25rem}.crow-mb-1,.crow-my-1{margin-bottom:.25rem}.crow-mb-2{margin-bottom:.5rem}.crow-mb-3{margin-bottom:.75rem}.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-2{margin-top:.5rem}.crow-mt-auto{margin-top:auto}.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-7{height:1.75rem}.crow-h-8{height:2rem}.crow-h-full{height:100%}.crow-max-h-32{max-height:8rem}.crow-max-h-\\[200px\\]{max-height:200px}.crow-min-h-0{min-height:0}.crow-min-h-\\[32px\\]{min-height:32px}.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-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{flex-shrink:0}.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-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-items-start{align-items:flex-start}.crow-items-end{align-items:flex-end}.crow-items-center{align-items:center}.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-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-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-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.crow-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.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-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-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-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-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-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-4{padding-right:1rem}.crow-pt-1{padding-top:.25rem}.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-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-leading-relaxed{line-height:1.625}.crow-tracking-wide{letter-spacing:.025em}.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-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-50{opacity:.5}.crow-opacity-60{opacity:.6}.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-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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}}.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-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-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-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}.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}`;
|
|
2384
2276
|
var injected = false;
|
|
2385
2277
|
function injectStyles(target = document) {
|
|
2386
2278
|
if (target === document && injected) return;
|
|
@@ -2410,12 +2302,13 @@ function CrowWidget({
|
|
|
2410
2302
|
onIdentify,
|
|
2411
2303
|
tools
|
|
2412
2304
|
}) {
|
|
2413
|
-
const { styles, isLoading: isLoadingStyles, agentName } = useWidgetStyles({
|
|
2305
|
+
const { styles, isLoading: isLoadingStyles, agentName, browserUseEnabled } = useWidgetStyles({
|
|
2414
2306
|
productId,
|
|
2415
2307
|
apiUrl,
|
|
2416
2308
|
propStyles,
|
|
2417
2309
|
skip: previewMode
|
|
2418
2310
|
});
|
|
2311
|
+
const [autoTools, setAutoTools] = React3.useState({});
|
|
2419
2312
|
const cssVars = stylesToCssVars(styles);
|
|
2420
2313
|
const messagesContainerRef = React3.useRef(null);
|
|
2421
2314
|
const executeClientToolRef = React3.useRef(null);
|
|
@@ -2554,10 +2447,23 @@ function CrowWidget({
|
|
|
2554
2447
|
}
|
|
2555
2448
|
}, [isLoadingStyles, onIdentify]);
|
|
2556
2449
|
React3.useEffect(() => {
|
|
2557
|
-
if (
|
|
2558
|
-
|
|
2450
|
+
if (browserUseEnabled && !isLoadingStyles && Object.keys(autoTools).length === 0) {
|
|
2451
|
+
import('@usecrow/client/browser').then(({ createBrowserUseTool }) => {
|
|
2452
|
+
setAutoTools({
|
|
2453
|
+
browser_use: createBrowserUseTool({ productId, apiUrl })
|
|
2454
|
+
});
|
|
2455
|
+
console.log("[Crow] browser_use tool auto-loaded");
|
|
2456
|
+
}).catch((err) => {
|
|
2457
|
+
console.warn("[Crow] Failed to load browser_use:", err);
|
|
2458
|
+
});
|
|
2459
|
+
}
|
|
2460
|
+
}, [browserUseEnabled, isLoadingStyles, productId, apiUrl, autoTools]);
|
|
2461
|
+
const mergedTools = { ...autoTools, ...tools };
|
|
2462
|
+
React3.useEffect(() => {
|
|
2463
|
+
if (Object.keys(mergedTools).length > 0) {
|
|
2464
|
+
window.crow?.("registerTools", mergedTools);
|
|
2559
2465
|
}
|
|
2560
|
-
}, [
|
|
2466
|
+
}, [mergedTools]);
|
|
2561
2467
|
const handleSend = (message) => {
|
|
2562
2468
|
if (!message.trim()) return;
|
|
2563
2469
|
setIsCollapsed(false);
|