@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.js
CHANGED
|
@@ -93,9 +93,7 @@ function useChat({
|
|
|
93
93
|
message,
|
|
94
94
|
conversation_id: conversationId,
|
|
95
95
|
identity_token: identityToken,
|
|
96
|
-
model: selectedModel
|
|
97
|
-
user_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
98
|
-
user_local_time: (/* @__PURE__ */ new Date()).toLocaleString()
|
|
96
|
+
model: selectedModel
|
|
99
97
|
}),
|
|
100
98
|
signal: abortControllerRef.current.signal
|
|
101
99
|
});
|
|
@@ -365,9 +363,7 @@ function useChat({
|
|
|
365
363
|
tool_name: toolName,
|
|
366
364
|
result,
|
|
367
365
|
identity_token: identityToken,
|
|
368
|
-
model: selectedModel
|
|
369
|
-
user_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
370
|
-
user_local_time: (/* @__PURE__ */ new Date()).toLocaleString()
|
|
366
|
+
model: selectedModel
|
|
371
367
|
})
|
|
372
368
|
});
|
|
373
369
|
if (!response.ok) {
|
|
@@ -478,14 +474,14 @@ function useConversations({ productId, apiUrl = "" }) {
|
|
|
478
474
|
if (res.ok) {
|
|
479
475
|
const data = await res.json();
|
|
480
476
|
const historyMessages = data.messages || [];
|
|
481
|
-
return historyMessages.
|
|
482
|
-
(msg) =>
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
477
|
+
return historyMessages.map(
|
|
478
|
+
(msg, idx) => ({
|
|
479
|
+
id: `history-${idx}`,
|
|
480
|
+
content: msg.content,
|
|
481
|
+
isBot: msg.role === "assistant",
|
|
482
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
483
|
+
})
|
|
484
|
+
);
|
|
489
485
|
}
|
|
490
486
|
} catch (error) {
|
|
491
487
|
console.error("[Crow] Error loading conversation history:", error);
|
|
@@ -506,14 +502,14 @@ function useConversations({ productId, apiUrl = "" }) {
|
|
|
506
502
|
if (res.ok) {
|
|
507
503
|
const data = await res.json();
|
|
508
504
|
const historyMessages = data.messages || [];
|
|
509
|
-
return historyMessages.
|
|
510
|
-
(msg) =>
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
505
|
+
return historyMessages.map(
|
|
506
|
+
(msg, idx) => ({
|
|
507
|
+
id: `history-${idx}`,
|
|
508
|
+
content: msg.content,
|
|
509
|
+
isBot: msg.role === "assistant",
|
|
510
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
511
|
+
})
|
|
512
|
+
);
|
|
517
513
|
}
|
|
518
514
|
} catch (error) {
|
|
519
515
|
console.error("[Crow] Error loading anonymous conversation history:", error);
|
|
@@ -626,16 +622,6 @@ function useWorkflow({
|
|
|
626
622
|
exitWorkflow
|
|
627
623
|
};
|
|
628
624
|
}
|
|
629
|
-
var SDK_DEFAULT_TOOLS = {
|
|
630
|
-
refreshPage: async () => {
|
|
631
|
-
try {
|
|
632
|
-
window.location.reload();
|
|
633
|
-
return { status: "success", data: { message: "Page refresh initiated" } };
|
|
634
|
-
} catch (error) {
|
|
635
|
-
return { status: "error", error: String(error) };
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
625
|
function useCrowAPI({ onIdentified, onReset } = {}) {
|
|
640
626
|
const onIdentifiedRef = useRef(onIdentified);
|
|
641
627
|
const onResetRef = useRef(onReset);
|
|
@@ -645,15 +631,6 @@ function useCrowAPI({ onIdentified, onReset } = {}) {
|
|
|
645
631
|
onResetRef.current = onReset;
|
|
646
632
|
});
|
|
647
633
|
useEffect(() => {
|
|
648
|
-
if (!window.__crow_client_tools) {
|
|
649
|
-
window.__crow_client_tools = {};
|
|
650
|
-
}
|
|
651
|
-
for (const [toolName, handler] of Object.entries(SDK_DEFAULT_TOOLS)) {
|
|
652
|
-
if (!window.__crow_client_tools[toolName]) {
|
|
653
|
-
window.__crow_client_tools[toolName] = handler;
|
|
654
|
-
console.log(`[Crow] Registered default tool: ${toolName}`);
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
634
|
window.crow = function(command, options) {
|
|
658
635
|
const opts = options;
|
|
659
636
|
switch (command) {
|
|
@@ -1010,6 +987,9 @@ function useWidgetStyles({
|
|
|
1010
987
|
const [agentName, setAgentName] = useState(
|
|
1011
988
|
styleCache.get(key)?.agentName || "Assistant"
|
|
1012
989
|
);
|
|
990
|
+
const [browserUseEnabled, setBrowserUseEnabled] = useState(
|
|
991
|
+
styleCache.get(key)?.browserUseEnabled || false
|
|
992
|
+
);
|
|
1013
993
|
const hasFetchedRef = useRef(false);
|
|
1014
994
|
const fetchStyles = async () => {
|
|
1015
995
|
if (skip) return;
|
|
@@ -1020,6 +1000,7 @@ function useWidgetStyles({
|
|
|
1020
1000
|
styleCache.set(key, config);
|
|
1021
1001
|
setDbStyles(config.widgetStyles);
|
|
1022
1002
|
setAgentName(config.agentName || "Assistant");
|
|
1003
|
+
setBrowserUseEnabled(config.browserUseEnabled || false);
|
|
1023
1004
|
} catch (err) {
|
|
1024
1005
|
console.error("[CrowWidget] Failed to fetch styles:", err);
|
|
1025
1006
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
@@ -1033,6 +1014,7 @@ function useWidgetStyles({
|
|
|
1033
1014
|
if (cached) {
|
|
1034
1015
|
setDbStyles(cached.widgetStyles);
|
|
1035
1016
|
setAgentName(cached.agentName || "Assistant");
|
|
1017
|
+
setBrowserUseEnabled(cached.browserUseEnabled || false);
|
|
1036
1018
|
setIsLoading(false);
|
|
1037
1019
|
return;
|
|
1038
1020
|
}
|
|
@@ -1045,6 +1027,7 @@ function useWidgetStyles({
|
|
|
1045
1027
|
isLoading,
|
|
1046
1028
|
error,
|
|
1047
1029
|
agentName,
|
|
1030
|
+
browserUseEnabled,
|
|
1048
1031
|
refetch: fetchStyles
|
|
1049
1032
|
};
|
|
1050
1033
|
}
|
|
@@ -1146,9 +1129,7 @@ function useWidgetStyles2() {
|
|
|
1146
1129
|
const context = useContext(WidgetStyleContext);
|
|
1147
1130
|
return context?.styles ?? DEFAULT_WIDGET_STYLES;
|
|
1148
1131
|
}
|
|
1149
|
-
var CopilotStyleContext = createContext(
|
|
1150
|
-
null
|
|
1151
|
-
);
|
|
1132
|
+
var CopilotStyleContext = createContext(null);
|
|
1152
1133
|
function CopilotStyleProvider({
|
|
1153
1134
|
children,
|
|
1154
1135
|
styles,
|
|
@@ -1174,7 +1155,6 @@ function useCopilotStyles2() {
|
|
|
1174
1155
|
const context = useContext(CopilotStyleContext);
|
|
1175
1156
|
return context?.styles ?? DEFAULT_COPILOT_STYLES;
|
|
1176
1157
|
}
|
|
1177
|
-
var PASSTHROUGH_KEYS = /* @__PURE__ */ new Set(["Escape", "Tab"]);
|
|
1178
1158
|
function ShadowContainer({
|
|
1179
1159
|
children,
|
|
1180
1160
|
styles,
|
|
@@ -1189,51 +1169,6 @@ function ShadowContainer({
|
|
|
1189
1169
|
setShadowRoot(shadow);
|
|
1190
1170
|
}
|
|
1191
1171
|
}, []);
|
|
1192
|
-
useEffect(() => {
|
|
1193
|
-
if (!shadowRoot || !hostRef.current) return;
|
|
1194
|
-
const hostElement = hostRef.current;
|
|
1195
|
-
const stopPropagationHandler = (e) => {
|
|
1196
|
-
const keyEvent = e;
|
|
1197
|
-
if (keyEvent.key && PASSTHROUGH_KEYS.has(keyEvent.key)) {
|
|
1198
|
-
return;
|
|
1199
|
-
}
|
|
1200
|
-
e.stopPropagation();
|
|
1201
|
-
};
|
|
1202
|
-
shadowRoot.addEventListener("keydown", stopPropagationHandler);
|
|
1203
|
-
shadowRoot.addEventListener("keyup", stopPropagationHandler);
|
|
1204
|
-
shadowRoot.addEventListener("keypress", stopPropagationHandler);
|
|
1205
|
-
let lastFocusedElement = null;
|
|
1206
|
-
const trackFocus = (e) => {
|
|
1207
|
-
lastFocusedElement = e.target;
|
|
1208
|
-
};
|
|
1209
|
-
const protectFocus = (e) => {
|
|
1210
|
-
if (e.key && PASSTHROUGH_KEYS.has(e.key)) {
|
|
1211
|
-
return;
|
|
1212
|
-
}
|
|
1213
|
-
const path = e.composedPath();
|
|
1214
|
-
if (!path.includes(hostElement) && !path.includes(shadowRoot)) {
|
|
1215
|
-
return;
|
|
1216
|
-
}
|
|
1217
|
-
if (lastFocusedElement) {
|
|
1218
|
-
const elementToRestore = lastFocusedElement;
|
|
1219
|
-
queueMicrotask(() => {
|
|
1220
|
-
const activeInShadow = shadowRoot.activeElement;
|
|
1221
|
-
if (!activeInShadow) {
|
|
1222
|
-
elementToRestore.focus();
|
|
1223
|
-
}
|
|
1224
|
-
});
|
|
1225
|
-
}
|
|
1226
|
-
};
|
|
1227
|
-
shadowRoot.addEventListener("focusin", trackFocus);
|
|
1228
|
-
document.addEventListener("keydown", protectFocus, { capture: true });
|
|
1229
|
-
return () => {
|
|
1230
|
-
shadowRoot.removeEventListener("keydown", stopPropagationHandler);
|
|
1231
|
-
shadowRoot.removeEventListener("keyup", stopPropagationHandler);
|
|
1232
|
-
shadowRoot.removeEventListener("keypress", stopPropagationHandler);
|
|
1233
|
-
shadowRoot.removeEventListener("focusin", trackFocus);
|
|
1234
|
-
document.removeEventListener("keydown", protectFocus, { capture: true });
|
|
1235
|
-
};
|
|
1236
|
-
}, [shadowRoot]);
|
|
1237
1172
|
return /* @__PURE__ */ jsx("div", { ref: hostRef, id: hostId, className: hostClassName, children: shadowRoot && createPortal(
|
|
1238
1173
|
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1239
1174
|
/* @__PURE__ */ jsx("style", { children: styles }),
|
|
@@ -1423,20 +1358,13 @@ function StreamingText({
|
|
|
1423
1358
|
return isInline ? /* @__PURE__ */ jsx(
|
|
1424
1359
|
"code",
|
|
1425
1360
|
{
|
|
1426
|
-
className: "crow-bg-gray-
|
|
1427
|
-
...props,
|
|
1428
|
-
children
|
|
1429
|
-
}
|
|
1430
|
-
) : /* @__PURE__ */ jsx(
|
|
1431
|
-
"code",
|
|
1432
|
-
{
|
|
1433
|
-
className: `crow-text-gray-200 ${className || ""}`,
|
|
1361
|
+
className: "crow-bg-gray-100 crow-px-1 crow-py-0.5 crow-rounded crow-text-sm",
|
|
1434
1362
|
...props,
|
|
1435
1363
|
children
|
|
1436
1364
|
}
|
|
1437
|
-
);
|
|
1365
|
+
) : /* @__PURE__ */ jsx("code", { className, ...props, children });
|
|
1438
1366
|
},
|
|
1439
|
-
pre: ({ children }) => /* @__PURE__ */ jsx("pre", { className: "crow-bg-gray-
|
|
1367
|
+
pre: ({ children }) => /* @__PURE__ */ jsx("pre", { className: "crow-bg-gray-100 crow-p-2 crow-rounded crow-my-1 crow-overflow-x-auto crow-text-sm", children })
|
|
1440
1368
|
},
|
|
1441
1369
|
children: content
|
|
1442
1370
|
}
|
|
@@ -1548,12 +1476,7 @@ function ShimmeringContent({ children }) {
|
|
|
1548
1476
|
}
|
|
1549
1477
|
);
|
|
1550
1478
|
}
|
|
1551
|
-
function ReasoningTrace({
|
|
1552
|
-
thinking,
|
|
1553
|
-
isComplete,
|
|
1554
|
-
toolCalls = [],
|
|
1555
|
-
isWaiting = false
|
|
1556
|
-
}) {
|
|
1479
|
+
function ReasoningTrace({ thinking, isComplete, toolCalls = [], isWaiting = false }) {
|
|
1557
1480
|
const hasThinking = !!thinking && thinking.trim().length > 0;
|
|
1558
1481
|
const hasToolCalls = toolCalls.length > 0;
|
|
1559
1482
|
if (!isWaiting && !hasThinking && !hasToolCalls) return null;
|
|
@@ -1569,10 +1492,7 @@ function WaitingIndicator() {
|
|
|
1569
1492
|
/* @__PURE__ */ jsx("span", { className: "crow-font-medium", children: /* @__PURE__ */ jsx(ShimmeringContent, { children: getRandomThinkingMessage() }) })
|
|
1570
1493
|
] });
|
|
1571
1494
|
}
|
|
1572
|
-
function ThinkingBlock({
|
|
1573
|
-
thinking,
|
|
1574
|
-
isComplete
|
|
1575
|
-
}) {
|
|
1495
|
+
function ThinkingBlock({ thinking, isComplete }) {
|
|
1576
1496
|
const [isExpanded, setIsExpanded] = useState(!isComplete);
|
|
1577
1497
|
useLayoutEffect(() => {
|
|
1578
1498
|
setIsExpanded(!isComplete);
|
|
@@ -1661,7 +1581,7 @@ function ToolCallBlock({ toolCall }) {
|
|
|
1661
1581
|
exit: { height: 0, opacity: 0 },
|
|
1662
1582
|
transition: { duration: 0.15 },
|
|
1663
1583
|
className: "crow-overflow-hidden",
|
|
1664
|
-
children: /* @__PURE__ */ jsx("pre", { className: "crow-mt-1 crow-p-2 crow-bg-gray-
|
|
1584
|
+
children: /* @__PURE__ */ 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) })
|
|
1665
1585
|
}
|
|
1666
1586
|
) })
|
|
1667
1587
|
] });
|
|
@@ -1766,62 +1686,64 @@ function MessageList({
|
|
|
1766
1686
|
msg.id
|
|
1767
1687
|
)) });
|
|
1768
1688
|
}
|
|
1769
|
-
var MessagesContainer = forwardRef(
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
const
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
const
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1689
|
+
var MessagesContainer = forwardRef(
|
|
1690
|
+
({ children }, ref) => {
|
|
1691
|
+
const styles = useWidgetStyles2();
|
|
1692
|
+
const internalRef = useRef(null);
|
|
1693
|
+
const lastScrollHeightRef = useRef(0);
|
|
1694
|
+
const isUserScrollingRef = useRef(false);
|
|
1695
|
+
const containerRef = ref || internalRef;
|
|
1696
|
+
const isNearBottom = useCallback(() => {
|
|
1697
|
+
const container = containerRef.current;
|
|
1698
|
+
if (!container) return true;
|
|
1699
|
+
const threshold = 100;
|
|
1700
|
+
return container.scrollHeight - container.scrollTop - container.clientHeight < threshold;
|
|
1701
|
+
}, [containerRef]);
|
|
1702
|
+
const scrollToBottom = useCallback(() => {
|
|
1703
|
+
const container = containerRef.current;
|
|
1704
|
+
if (!container) return;
|
|
1705
|
+
container.scrollTo({
|
|
1706
|
+
top: container.scrollHeight,
|
|
1707
|
+
behavior: "smooth"
|
|
1708
|
+
});
|
|
1709
|
+
}, [containerRef]);
|
|
1710
|
+
useEffect(() => {
|
|
1711
|
+
const container = containerRef.current;
|
|
1712
|
+
if (!container) return;
|
|
1713
|
+
const handleScroll = () => {
|
|
1714
|
+
isUserScrollingRef.current = !isNearBottom();
|
|
1715
|
+
};
|
|
1716
|
+
container.addEventListener("scroll", handleScroll, { passive: true });
|
|
1717
|
+
return () => container.removeEventListener("scroll", handleScroll);
|
|
1718
|
+
}, [containerRef, isNearBottom]);
|
|
1719
|
+
useEffect(() => {
|
|
1720
|
+
const container = containerRef.current;
|
|
1721
|
+
if (!container) return;
|
|
1722
|
+
const currentHeight = container.scrollHeight;
|
|
1723
|
+
const heightChanged = currentHeight !== lastScrollHeightRef.current;
|
|
1724
|
+
if (heightChanged) {
|
|
1725
|
+
lastScrollHeightRef.current = currentHeight;
|
|
1726
|
+
if (!isUserScrollingRef.current || isNearBottom()) {
|
|
1727
|
+
scrollToBottom();
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1787
1730
|
});
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
if (!container) return;
|
|
1801
|
-
const currentHeight = container.scrollHeight;
|
|
1802
|
-
const heightChanged = currentHeight !== lastScrollHeightRef.current;
|
|
1803
|
-
if (heightChanged) {
|
|
1804
|
-
lastScrollHeightRef.current = currentHeight;
|
|
1805
|
-
if (!isUserScrollingRef.current || isNearBottom()) {
|
|
1806
|
-
scrollToBottom();
|
|
1731
|
+
return /* @__PURE__ */ jsx(
|
|
1732
|
+
motion.div,
|
|
1733
|
+
{
|
|
1734
|
+
ref: containerRef,
|
|
1735
|
+
id: MESSAGES_CONTAINER_ID,
|
|
1736
|
+
initial: { opacity: 0 },
|
|
1737
|
+
animate: { opacity: 1 },
|
|
1738
|
+
exit: { opacity: 0 },
|
|
1739
|
+
transition: { duration: styles.animations.duration },
|
|
1740
|
+
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",
|
|
1741
|
+
style: { background: styles.colors.messagesBackground },
|
|
1742
|
+
children
|
|
1807
1743
|
}
|
|
1808
|
-
|
|
1809
|
-
}
|
|
1810
|
-
|
|
1811
|
-
motion.div,
|
|
1812
|
-
{
|
|
1813
|
-
ref: containerRef,
|
|
1814
|
-
id: MESSAGES_CONTAINER_ID,
|
|
1815
|
-
initial: { opacity: 0 },
|
|
1816
|
-
animate: { opacity: 1 },
|
|
1817
|
-
exit: { opacity: 0 },
|
|
1818
|
-
transition: { duration: styles.animations.duration },
|
|
1819
|
-
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",
|
|
1820
|
-
style: { background: styles.colors.messagesBackground },
|
|
1821
|
-
children
|
|
1822
|
-
}
|
|
1823
|
-
);
|
|
1824
|
-
});
|
|
1744
|
+
);
|
|
1745
|
+
}
|
|
1746
|
+
);
|
|
1825
1747
|
MessagesContainer.displayName = "MessagesContainer";
|
|
1826
1748
|
function ConversationList({
|
|
1827
1749
|
conversations,
|
|
@@ -2093,13 +2015,7 @@ var PromptInput = React3.forwardRef(
|
|
|
2093
2015
|
}
|
|
2094
2016
|
);
|
|
2095
2017
|
PromptInput.displayName = "PromptInput";
|
|
2096
|
-
var PromptInputTextarea = ({
|
|
2097
|
-
className,
|
|
2098
|
-
onKeyDown,
|
|
2099
|
-
disableAutosize = false,
|
|
2100
|
-
placeholder,
|
|
2101
|
-
...props
|
|
2102
|
-
}) => {
|
|
2018
|
+
var PromptInputTextarea = ({ className, onKeyDown, disableAutosize = false, placeholder, ...props }) => {
|
|
2103
2019
|
const { value, setValue, maxHeight, onSubmit, disabled } = usePromptInput();
|
|
2104
2020
|
const textareaRef = React3.useRef(null);
|
|
2105
2021
|
React3.useEffect(() => {
|
|
@@ -2132,14 +2048,7 @@ var PromptInputActions = ({
|
|
|
2132
2048
|
children,
|
|
2133
2049
|
className,
|
|
2134
2050
|
...props
|
|
2135
|
-
}) => /* @__PURE__ */ jsx(
|
|
2136
|
-
"div",
|
|
2137
|
-
{
|
|
2138
|
-
className: cn("crow-flex crow-items-center crow-gap-2", className),
|
|
2139
|
-
...props,
|
|
2140
|
-
children
|
|
2141
|
-
}
|
|
2142
|
-
);
|
|
2051
|
+
}) => /* @__PURE__ */ jsx("div", { className: cn("crow-flex crow-items-center crow-gap-2", className), ...props, children });
|
|
2143
2052
|
var PromptInputAction = ({
|
|
2144
2053
|
tooltip,
|
|
2145
2054
|
children,
|
|
@@ -2186,13 +2095,7 @@ var PromptInputBox = React3.forwardRef(
|
|
|
2186
2095
|
disabled: isLoading,
|
|
2187
2096
|
ref: ref || promptBoxRef,
|
|
2188
2097
|
children: [
|
|
2189
|
-
/* @__PURE__ */ jsx("div", { className: "crow-transition-all crow-duration-300 crow-opacity-100", children: /* @__PURE__ */ jsx(
|
|
2190
|
-
PromptInputTextarea,
|
|
2191
|
-
{
|
|
2192
|
-
placeholder,
|
|
2193
|
-
className: "crow-text-base"
|
|
2194
|
-
}
|
|
2195
|
-
) }),
|
|
2098
|
+
/* @__PURE__ */ jsx("div", { className: "crow-transition-all crow-duration-300 crow-opacity-100", children: /* @__PURE__ */ jsx(PromptInputTextarea, { placeholder, className: "crow-text-base" }) }),
|
|
2196
2099
|
/* @__PURE__ */ jsxs(PromptInputActions, { className: "crow-flex crow-items-center crow-justify-between crow-gap-2 crow-p-0 crow-pt-1", children: [
|
|
2197
2100
|
/* @__PURE__ */ jsx("div", { className: "crow-flex crow-items-center", children: availableModels.length > 0 && onModelChange && /* @__PURE__ */ jsx(
|
|
2198
2101
|
ModelSelector,
|
|
@@ -2225,21 +2128,10 @@ var PromptInputBox = React3.forwardRef(
|
|
|
2225
2128
|
handleSubmit();
|
|
2226
2129
|
}
|
|
2227
2130
|
},
|
|
2228
|
-
children: isLoading ? /* @__PURE__ */ jsx(
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
style: { fill: "white" }
|
|
2233
|
-
}
|
|
2234
|
-
) : /* @__PURE__ */ jsx(
|
|
2235
|
-
ArrowUp,
|
|
2236
|
-
{
|
|
2237
|
-
className: cn(
|
|
2238
|
-
"crow-h-3.5 crow-w-3.5",
|
|
2239
|
-
hasContent ? "crow-text-white" : "crow-text-gray-400"
|
|
2240
|
-
)
|
|
2241
|
-
}
|
|
2242
|
-
)
|
|
2131
|
+
children: isLoading ? /* @__PURE__ */ jsx(Square, { className: "crow-h-3.5 crow-w-3.5 crow-text-white", style: { fill: "white" } }) : /* @__PURE__ */ jsx(ArrowUp, { className: cn(
|
|
2132
|
+
"crow-h-3.5 crow-w-3.5",
|
|
2133
|
+
hasContent ? "crow-text-white" : "crow-text-gray-400"
|
|
2134
|
+
) })
|
|
2243
2135
|
}
|
|
2244
2136
|
)
|
|
2245
2137
|
}
|
|
@@ -2354,7 +2246,7 @@ function getCssVar(varName, element = document.documentElement) {
|
|
|
2354
2246
|
var STYLE_ID = "crow-ui-styles";
|
|
2355
2247
|
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: }
|
|
2356
2248
|
|
|
2357
|
-
/*! 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}`;
|
|
2249
|
+
/*! 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}`;
|
|
2358
2250
|
var injected = false;
|
|
2359
2251
|
function injectStyles(target = document) {
|
|
2360
2252
|
if (target === document && injected) return;
|
|
@@ -2384,12 +2276,13 @@ function CrowWidget({
|
|
|
2384
2276
|
onIdentify,
|
|
2385
2277
|
tools
|
|
2386
2278
|
}) {
|
|
2387
|
-
const { styles, isLoading: isLoadingStyles, agentName } = useWidgetStyles({
|
|
2279
|
+
const { styles, isLoading: isLoadingStyles, agentName, browserUseEnabled } = useWidgetStyles({
|
|
2388
2280
|
productId,
|
|
2389
2281
|
apiUrl,
|
|
2390
2282
|
propStyles,
|
|
2391
2283
|
skip: previewMode
|
|
2392
2284
|
});
|
|
2285
|
+
const [autoTools, setAutoTools] = useState({});
|
|
2393
2286
|
const cssVars = stylesToCssVars(styles);
|
|
2394
2287
|
const messagesContainerRef = useRef(null);
|
|
2395
2288
|
const executeClientToolRef = useRef(null);
|
|
@@ -2528,10 +2421,23 @@ function CrowWidget({
|
|
|
2528
2421
|
}
|
|
2529
2422
|
}, [isLoadingStyles, onIdentify]);
|
|
2530
2423
|
useEffect(() => {
|
|
2531
|
-
if (
|
|
2532
|
-
|
|
2424
|
+
if (browserUseEnabled && !isLoadingStyles && Object.keys(autoTools).length === 0) {
|
|
2425
|
+
import('@usecrow/client/browser').then(({ createBrowserUseTool }) => {
|
|
2426
|
+
setAutoTools({
|
|
2427
|
+
browser_use: createBrowserUseTool({ productId, apiUrl })
|
|
2428
|
+
});
|
|
2429
|
+
console.log("[Crow] browser_use tool auto-loaded");
|
|
2430
|
+
}).catch((err) => {
|
|
2431
|
+
console.warn("[Crow] Failed to load browser_use:", err);
|
|
2432
|
+
});
|
|
2433
|
+
}
|
|
2434
|
+
}, [browserUseEnabled, isLoadingStyles, productId, apiUrl, autoTools]);
|
|
2435
|
+
const mergedTools = { ...autoTools, ...tools };
|
|
2436
|
+
useEffect(() => {
|
|
2437
|
+
if (Object.keys(mergedTools).length > 0) {
|
|
2438
|
+
window.crow?.("registerTools", mergedTools);
|
|
2533
2439
|
}
|
|
2534
|
-
}, [
|
|
2440
|
+
}, [mergedTools]);
|
|
2535
2441
|
const handleSend = (message) => {
|
|
2536
2442
|
if (!message.trim()) return;
|
|
2537
2443
|
setIsCollapsed(false);
|