@usecrow/ui 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -93,7 +93,9 @@ function useChat({
93
93
  message,
94
94
  conversation_id: conversationId,
95
95
  identity_token: identityToken,
96
- model: selectedModel
96
+ model: selectedModel,
97
+ user_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
98
+ user_local_time: (/* @__PURE__ */ new Date()).toLocaleString()
97
99
  }),
98
100
  signal: abortControllerRef.current.signal
99
101
  });
@@ -363,7 +365,9 @@ function useChat({
363
365
  tool_name: toolName,
364
366
  result,
365
367
  identity_token: identityToken,
366
- model: selectedModel
368
+ model: selectedModel,
369
+ user_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
370
+ user_local_time: (/* @__PURE__ */ new Date()).toLocaleString()
367
371
  })
368
372
  });
369
373
  if (!response.ok) {
@@ -474,14 +478,14 @@ function useConversations({ productId, apiUrl = "" }) {
474
478
  if (res.ok) {
475
479
  const data = await res.json();
476
480
  const historyMessages = data.messages || [];
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
- );
481
+ return historyMessages.filter(
482
+ (msg) => msg.role !== "tool" && !msg.content.startsWith("[Client Tool Result:")
483
+ ).map((msg, idx) => ({
484
+ id: `history-${idx}`,
485
+ content: msg.content,
486
+ isBot: msg.role === "assistant",
487
+ timestamp: /* @__PURE__ */ new Date()
488
+ }));
485
489
  }
486
490
  } catch (error) {
487
491
  console.error("[Crow] Error loading conversation history:", error);
@@ -502,14 +506,14 @@ function useConversations({ productId, apiUrl = "" }) {
502
506
  if (res.ok) {
503
507
  const data = await res.json();
504
508
  const historyMessages = data.messages || [];
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
- );
509
+ return historyMessages.filter(
510
+ (msg) => msg.role !== "tool" && !msg.content.startsWith("[Client Tool Result:")
511
+ ).map((msg, idx) => ({
512
+ id: `history-${idx}`,
513
+ content: msg.content,
514
+ isBot: msg.role === "assistant",
515
+ timestamp: /* @__PURE__ */ new Date()
516
+ }));
513
517
  }
514
518
  } catch (error) {
515
519
  console.error("[Crow] Error loading anonymous conversation history:", error);
@@ -622,6 +626,16 @@ function useWorkflow({
622
626
  exitWorkflow
623
627
  };
624
628
  }
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
+ };
625
639
  function useCrowAPI({ onIdentified, onReset } = {}) {
626
640
  const onIdentifiedRef = useRef(onIdentified);
627
641
  const onResetRef = useRef(onReset);
@@ -631,6 +645,15 @@ function useCrowAPI({ onIdentified, onReset } = {}) {
631
645
  onResetRef.current = onReset;
632
646
  });
633
647
  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
+ }
634
657
  window.crow = function(command, options) {
635
658
  const opts = options;
636
659
  switch (command) {
@@ -990,6 +1013,9 @@ function useWidgetStyles({
990
1013
  const [browserUseEnabled, setBrowserUseEnabled] = useState(
991
1014
  styleCache.get(key)?.browserUseEnabled || false
992
1015
  );
1016
+ const [showThinking, setShowThinking] = useState(
1017
+ styleCache.get(key)?.showThinking ?? true
1018
+ );
993
1019
  const hasFetchedRef = useRef(false);
994
1020
  const fetchStyles = async () => {
995
1021
  if (skip) return;
@@ -1001,6 +1027,7 @@ function useWidgetStyles({
1001
1027
  setDbStyles(config.widgetStyles);
1002
1028
  setAgentName(config.agentName || "Assistant");
1003
1029
  setBrowserUseEnabled(config.browserUseEnabled || false);
1030
+ setShowThinking(config.showThinking ?? true);
1004
1031
  } catch (err) {
1005
1032
  console.error("[CrowWidget] Failed to fetch styles:", err);
1006
1033
  setError(err instanceof Error ? err : new Error(String(err)));
@@ -1015,6 +1042,7 @@ function useWidgetStyles({
1015
1042
  setDbStyles(cached.widgetStyles);
1016
1043
  setAgentName(cached.agentName || "Assistant");
1017
1044
  setBrowserUseEnabled(cached.browserUseEnabled || false);
1045
+ setShowThinking(cached.showThinking ?? true);
1018
1046
  setIsLoading(false);
1019
1047
  return;
1020
1048
  }
@@ -1028,6 +1056,7 @@ function useWidgetStyles({
1028
1056
  error,
1029
1057
  agentName,
1030
1058
  browserUseEnabled,
1059
+ showThinking,
1031
1060
  refetch: fetchStyles
1032
1061
  };
1033
1062
  }
@@ -1108,11 +1137,12 @@ function WidgetStyleProvider({
1108
1137
  styles,
1109
1138
  agentName = "Assistant",
1110
1139
  isLoading = false,
1111
- variant = "floating"
1140
+ variant = "floating",
1141
+ showThinking = true
1112
1142
  }) {
1113
1143
  const value = useMemo(
1114
- () => ({ styles, agentName, isLoading, variant }),
1115
- [styles, agentName, isLoading, variant]
1144
+ () => ({ styles, agentName, isLoading, variant, showThinking }),
1145
+ [styles, agentName, isLoading, variant, showThinking]
1116
1146
  );
1117
1147
  return /* @__PURE__ */ jsx(WidgetStyleContext.Provider, { value, children });
1118
1148
  }
@@ -1129,7 +1159,13 @@ function useWidgetStyles2() {
1129
1159
  const context = useContext(WidgetStyleContext);
1130
1160
  return context?.styles ?? DEFAULT_WIDGET_STYLES;
1131
1161
  }
1132
- var CopilotStyleContext = createContext(null);
1162
+ function useShowThinking() {
1163
+ const context = useContext(WidgetStyleContext);
1164
+ return context?.showThinking ?? true;
1165
+ }
1166
+ var CopilotStyleContext = createContext(
1167
+ null
1168
+ );
1133
1169
  function CopilotStyleProvider({
1134
1170
  children,
1135
1171
  styles,
@@ -1155,6 +1191,7 @@ function useCopilotStyles2() {
1155
1191
  const context = useContext(CopilotStyleContext);
1156
1192
  return context?.styles ?? DEFAULT_COPILOT_STYLES;
1157
1193
  }
1194
+ var PASSTHROUGH_KEYS = /* @__PURE__ */ new Set(["Escape", "Tab"]);
1158
1195
  function ShadowContainer({
1159
1196
  children,
1160
1197
  styles,
@@ -1169,6 +1206,51 @@ function ShadowContainer({
1169
1206
  setShadowRoot(shadow);
1170
1207
  }
1171
1208
  }, []);
1209
+ useEffect(() => {
1210
+ if (!shadowRoot || !hostRef.current) return;
1211
+ const hostElement = hostRef.current;
1212
+ const stopPropagationHandler = (e) => {
1213
+ const keyEvent = e;
1214
+ if (keyEvent.key && PASSTHROUGH_KEYS.has(keyEvent.key)) {
1215
+ return;
1216
+ }
1217
+ e.stopPropagation();
1218
+ };
1219
+ shadowRoot.addEventListener("keydown", stopPropagationHandler);
1220
+ shadowRoot.addEventListener("keyup", stopPropagationHandler);
1221
+ shadowRoot.addEventListener("keypress", stopPropagationHandler);
1222
+ let lastFocusedElement = null;
1223
+ const trackFocus = (e) => {
1224
+ lastFocusedElement = e.target;
1225
+ };
1226
+ const protectFocus = (e) => {
1227
+ if (e.key && PASSTHROUGH_KEYS.has(e.key)) {
1228
+ return;
1229
+ }
1230
+ const path = e.composedPath();
1231
+ if (!path.includes(hostElement) && !path.includes(shadowRoot)) {
1232
+ return;
1233
+ }
1234
+ if (lastFocusedElement) {
1235
+ const elementToRestore = lastFocusedElement;
1236
+ queueMicrotask(() => {
1237
+ const activeInShadow = shadowRoot.activeElement;
1238
+ if (!activeInShadow) {
1239
+ elementToRestore.focus();
1240
+ }
1241
+ });
1242
+ }
1243
+ };
1244
+ shadowRoot.addEventListener("focusin", trackFocus);
1245
+ document.addEventListener("keydown", protectFocus, { capture: true });
1246
+ return () => {
1247
+ shadowRoot.removeEventListener("keydown", stopPropagationHandler);
1248
+ shadowRoot.removeEventListener("keyup", stopPropagationHandler);
1249
+ shadowRoot.removeEventListener("keypress", stopPropagationHandler);
1250
+ shadowRoot.removeEventListener("focusin", trackFocus);
1251
+ document.removeEventListener("keydown", protectFocus, { capture: true });
1252
+ };
1253
+ }, [shadowRoot]);
1172
1254
  return /* @__PURE__ */ jsx("div", { ref: hostRef, id: hostId, className: hostClassName, children: shadowRoot && createPortal(
1173
1255
  /* @__PURE__ */ jsxs(Fragment, { children: [
1174
1256
  /* @__PURE__ */ jsx("style", { children: styles }),
@@ -1358,13 +1440,20 @@ function StreamingText({
1358
1440
  return isInline ? /* @__PURE__ */ jsx(
1359
1441
  "code",
1360
1442
  {
1361
- className: "crow-bg-gray-100 crow-px-1 crow-py-0.5 crow-rounded crow-text-sm",
1443
+ className: "crow-bg-gray-800 crow-text-gray-200 crow-px-1.5 crow-py-0.5 crow-rounded crow-text-sm",
1444
+ ...props,
1445
+ children
1446
+ }
1447
+ ) : /* @__PURE__ */ jsx(
1448
+ "code",
1449
+ {
1450
+ className: `crow-text-gray-200 ${className || ""}`,
1362
1451
  ...props,
1363
1452
  children
1364
1453
  }
1365
- ) : /* @__PURE__ */ jsx("code", { className, ...props, children });
1454
+ );
1366
1455
  },
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 })
1456
+ pre: ({ children }) => /* @__PURE__ */ jsx("pre", { className: "crow-bg-gray-800 crow-text-gray-200 crow-p-3 crow-rounded-lg crow-my-2 crow-overflow-x-auto crow-text-sm", children })
1368
1457
  },
1369
1458
  children: content
1370
1459
  }
@@ -1447,10 +1536,6 @@ var THINKING_MESSAGES = [
1447
1536
  "Connecting",
1448
1537
  "Synthesizing"
1449
1538
  ];
1450
- function getRandomThinkingMessage() {
1451
- const idx = Math.floor(Math.random() * THINKING_MESSAGES.length);
1452
- return THINKING_MESSAGES[idx] + "...";
1453
- }
1454
1539
  function ShimmeringContent({ children }) {
1455
1540
  return /* @__PURE__ */ jsxs(
1456
1541
  "span",
@@ -1476,10 +1561,21 @@ function ShimmeringContent({ children }) {
1476
1561
  }
1477
1562
  );
1478
1563
  }
1479
- function ReasoningTrace({ thinking, isComplete, toolCalls = [], isWaiting = false }) {
1564
+ function ReasoningTrace({
1565
+ thinking,
1566
+ isComplete,
1567
+ toolCalls = [],
1568
+ isWaiting = false,
1569
+ showDetails = true
1570
+ }) {
1480
1571
  const hasThinking = !!thinking && thinking.trim().length > 0;
1481
1572
  const hasToolCalls = toolCalls.length > 0;
1573
+ const isActive = isWaiting || hasThinking && !isComplete || toolCalls.some((t) => t.status === "executing");
1482
1574
  if (!isWaiting && !hasThinking && !hasToolCalls) return null;
1575
+ if (!showDetails) {
1576
+ if (!isActive) return null;
1577
+ return /* @__PURE__ */ jsx("div", { className: "crow-flex crow-justify-start crow-mb-2", children: /* @__PURE__ */ jsx("div", { className: "crow-max-w-[90%]", children: /* @__PURE__ */ jsx(WaitingIndicator, {}) }) });
1578
+ }
1483
1579
  return /* @__PURE__ */ jsx("div", { className: "crow-flex crow-justify-start crow-mb-2", children: /* @__PURE__ */ jsxs("div", { className: "crow-max-w-[90%] crow-space-y-1.5", children: [
1484
1580
  isWaiting && !hasThinking && /* @__PURE__ */ jsx(WaitingIndicator, {}),
1485
1581
  hasThinking && /* @__PURE__ */ jsx(ThinkingBlock, { thinking, isComplete }),
@@ -1487,17 +1583,41 @@ function ReasoningTrace({ thinking, isComplete, toolCalls = [], isWaiting = fals
1487
1583
  ] }) });
1488
1584
  }
1489
1585
  function WaitingIndicator() {
1586
+ const [messageIndex, setMessageIndex] = useState(
1587
+ () => Math.floor(Math.random() * THINKING_MESSAGES.length)
1588
+ );
1589
+ useEffect(() => {
1590
+ const interval = setInterval(() => {
1591
+ setMessageIndex((i) => (i + 1) % THINKING_MESSAGES.length);
1592
+ }, 3e3);
1593
+ return () => clearInterval(interval);
1594
+ }, []);
1595
+ const message = THINKING_MESSAGES[messageIndex] + "...";
1490
1596
  return /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-items-center crow-gap-1.5 crow-text-xs crow-text-gray-500", children: [
1491
1597
  /* @__PURE__ */ jsx("div", { className: "crow-flex crow-items-center crow-justify-center crow-w-4 crow-h-4", children: /* @__PURE__ */ jsx(ShimmeringContent, { children: /* @__PURE__ */ jsx(Brain, { className: "crow-w-3.5 crow-h-3.5" }) }) }),
1492
- /* @__PURE__ */ jsx("span", { className: "crow-font-medium", children: /* @__PURE__ */ jsx(ShimmeringContent, { children: getRandomThinkingMessage() }) })
1598
+ /* @__PURE__ */ jsx("span", { className: "crow-font-medium", children: /* @__PURE__ */ jsx(ShimmeringContent, { children: message }) })
1493
1599
  ] });
1494
1600
  }
1495
- function ThinkingBlock({ thinking, isComplete }) {
1601
+ function ThinkingBlock({
1602
+ thinking,
1603
+ isComplete
1604
+ }) {
1496
1605
  const [isExpanded, setIsExpanded] = useState(!isComplete);
1606
+ const [messageIndex, setMessageIndex] = useState(
1607
+ () => Math.floor(Math.random() * THINKING_MESSAGES.length)
1608
+ );
1497
1609
  useLayoutEffect(() => {
1498
1610
  setIsExpanded(!isComplete);
1499
1611
  }, [isComplete]);
1612
+ useEffect(() => {
1613
+ if (isComplete) return;
1614
+ const interval = setInterval(() => {
1615
+ setMessageIndex((i) => (i + 1) % THINKING_MESSAGES.length);
1616
+ }, 3e3);
1617
+ return () => clearInterval(interval);
1618
+ }, [isComplete]);
1500
1619
  const isInProgress = !isComplete;
1620
+ const message = THINKING_MESSAGES[messageIndex] + "...";
1501
1621
  return /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-flex-col crow-gap-1 crow-text-xs", children: [
1502
1622
  /* @__PURE__ */ jsxs(
1503
1623
  "button",
@@ -1506,7 +1626,7 @@ function ThinkingBlock({ thinking, isComplete }) {
1506
1626
  className: `crow-flex crow-items-center crow-gap-1.5 crow-select-none crow-transition-colors ${isInProgress ? "crow-text-gray-500" : "crow-text-gray-600 hover:crow-text-gray-800"} crow-cursor-pointer`,
1507
1627
  children: [
1508
1628
  /* @__PURE__ */ jsx("div", { className: "crow-flex crow-items-center crow-justify-center crow-w-4 crow-h-4", children: isInProgress ? /* @__PURE__ */ jsx(ShimmeringContent, { children: /* @__PURE__ */ jsx(Brain, { className: "crow-w-3.5 crow-h-3.5" }) }) : /* @__PURE__ */ jsx(Brain, { className: "crow-w-3.5 crow-h-3.5" }) }),
1509
- /* @__PURE__ */ jsx("span", { className: "crow-font-medium", children: isInProgress ? /* @__PURE__ */ jsx(ShimmeringContent, { children: getRandomThinkingMessage() }) : "Thought" }),
1629
+ /* @__PURE__ */ jsx("span", { className: "crow-font-medium", children: isInProgress ? /* @__PURE__ */ jsx(ShimmeringContent, { children: message }) : "Thought" }),
1510
1630
  /* @__PURE__ */ jsx(
1511
1631
  motion.div,
1512
1632
  {
@@ -1581,7 +1701,7 @@ function ToolCallBlock({ toolCall }) {
1581
1701
  exit: { height: 0, opacity: 0 },
1582
1702
  transition: { duration: 0.15 },
1583
1703
  className: "crow-overflow-hidden",
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) })
1704
+ children: /* @__PURE__ */ jsx("pre", { className: "crow-mt-1 crow-p-2 crow-bg-gray-800 crow-rounded crow-text-xs crow-font-mono crow-text-gray-200 crow-overflow-x-auto crow-max-h-32 crow-overflow-y-auto crow-ml-4", children: JSON.stringify(toolCall.arguments, null, 2) })
1585
1705
  }
1586
1706
  ) })
1587
1707
  ] });
@@ -1592,6 +1712,7 @@ function MessageBubble({
1592
1712
  isLoading = false
1593
1713
  }) {
1594
1714
  const styles = useWidgetStyles2();
1715
+ const showThinkingSetting = useShowThinking();
1595
1716
  const isWaiting = message.content === "Thinking..." || message.isBot && isLoading && !message.content;
1596
1717
  const hasThinking = message.isBot && message.thinking;
1597
1718
  const hasContent = message.content && message.content !== "Thinking...";
@@ -1610,7 +1731,8 @@ function MessageBubble({
1610
1731
  thinking: message.thinking,
1611
1732
  isComplete: message.thinkingComplete,
1612
1733
  toolCalls,
1613
- isWaiting: isWaiting && !hasThinking
1734
+ isWaiting: isWaiting && !hasThinking,
1735
+ showDetails: showThinkingSetting
1614
1736
  }
1615
1737
  ),
1616
1738
  hasContent && /* @__PURE__ */ jsxs(
@@ -1686,64 +1808,62 @@ function MessageList({
1686
1808
  msg.id
1687
1809
  )) });
1688
1810
  }
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
- }
1811
+ var MessagesContainer = forwardRef(({ children }, ref) => {
1812
+ const styles = useWidgetStyles2();
1813
+ const internalRef = useRef(null);
1814
+ const lastScrollHeightRef = useRef(0);
1815
+ const isUserScrollingRef = useRef(false);
1816
+ const containerRef = ref || internalRef;
1817
+ const isNearBottom = useCallback(() => {
1818
+ const container = containerRef.current;
1819
+ if (!container) return true;
1820
+ const threshold = 100;
1821
+ return container.scrollHeight - container.scrollTop - container.clientHeight < threshold;
1822
+ }, [containerRef]);
1823
+ const scrollToBottom = useCallback(() => {
1824
+ const container = containerRef.current;
1825
+ if (!container) return;
1826
+ container.scrollTo({
1827
+ top: container.scrollHeight,
1828
+ behavior: "smooth"
1730
1829
  });
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
1830
+ }, [containerRef]);
1831
+ useEffect(() => {
1832
+ const container = containerRef.current;
1833
+ if (!container) return;
1834
+ const handleScroll = () => {
1835
+ isUserScrollingRef.current = !isNearBottom();
1836
+ };
1837
+ container.addEventListener("scroll", handleScroll, { passive: true });
1838
+ return () => container.removeEventListener("scroll", handleScroll);
1839
+ }, [containerRef, isNearBottom]);
1840
+ useEffect(() => {
1841
+ const container = containerRef.current;
1842
+ if (!container) return;
1843
+ const currentHeight = container.scrollHeight;
1844
+ const heightChanged = currentHeight !== lastScrollHeightRef.current;
1845
+ if (heightChanged) {
1846
+ lastScrollHeightRef.current = currentHeight;
1847
+ if (!isUserScrollingRef.current || isNearBottom()) {
1848
+ scrollToBottom();
1743
1849
  }
1744
- );
1745
- }
1746
- );
1850
+ }
1851
+ });
1852
+ return /* @__PURE__ */ jsx(
1853
+ motion.div,
1854
+ {
1855
+ ref: containerRef,
1856
+ id: MESSAGES_CONTAINER_ID,
1857
+ initial: { opacity: 0 },
1858
+ animate: { opacity: 1 },
1859
+ exit: { opacity: 0 },
1860
+ transition: { duration: styles.animations.duration },
1861
+ 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",
1862
+ style: { background: styles.colors.messagesBackground },
1863
+ children
1864
+ }
1865
+ );
1866
+ });
1747
1867
  MessagesContainer.displayName = "MessagesContainer";
1748
1868
  function ConversationList({
1749
1869
  conversations,
@@ -2015,7 +2135,13 @@ var PromptInput = React3.forwardRef(
2015
2135
  }
2016
2136
  );
2017
2137
  PromptInput.displayName = "PromptInput";
2018
- var PromptInputTextarea = ({ className, onKeyDown, disableAutosize = false, placeholder, ...props }) => {
2138
+ var PromptInputTextarea = ({
2139
+ className,
2140
+ onKeyDown,
2141
+ disableAutosize = false,
2142
+ placeholder,
2143
+ ...props
2144
+ }) => {
2019
2145
  const { value, setValue, maxHeight, onSubmit, disabled } = usePromptInput();
2020
2146
  const textareaRef = React3.useRef(null);
2021
2147
  React3.useEffect(() => {
@@ -2048,7 +2174,14 @@ var PromptInputActions = ({
2048
2174
  children,
2049
2175
  className,
2050
2176
  ...props
2051
- }) => /* @__PURE__ */ jsx("div", { className: cn("crow-flex crow-items-center crow-gap-2", className), ...props, children });
2177
+ }) => /* @__PURE__ */ jsx(
2178
+ "div",
2179
+ {
2180
+ className: cn("crow-flex crow-items-center crow-gap-2", className),
2181
+ ...props,
2182
+ children
2183
+ }
2184
+ );
2052
2185
  var PromptInputAction = ({
2053
2186
  tooltip,
2054
2187
  children,
@@ -2095,7 +2228,13 @@ var PromptInputBox = React3.forwardRef(
2095
2228
  disabled: isLoading,
2096
2229
  ref: ref || promptBoxRef,
2097
2230
  children: [
2098
- /* @__PURE__ */ jsx("div", { className: "crow-transition-all crow-duration-300 crow-opacity-100", children: /* @__PURE__ */ jsx(PromptInputTextarea, { placeholder, className: "crow-text-base" }) }),
2231
+ /* @__PURE__ */ jsx("div", { className: "crow-transition-all crow-duration-300 crow-opacity-100", children: /* @__PURE__ */ jsx(
2232
+ PromptInputTextarea,
2233
+ {
2234
+ placeholder,
2235
+ className: "crow-text-base"
2236
+ }
2237
+ ) }),
2099
2238
  /* @__PURE__ */ jsxs(PromptInputActions, { className: "crow-flex crow-items-center crow-justify-between crow-gap-2 crow-p-0 crow-pt-1", children: [
2100
2239
  /* @__PURE__ */ jsx("div", { className: "crow-flex crow-items-center", children: availableModels.length > 0 && onModelChange && /* @__PURE__ */ jsx(
2101
2240
  ModelSelector,
@@ -2128,10 +2267,21 @@ var PromptInputBox = React3.forwardRef(
2128
2267
  handleSubmit();
2129
2268
  }
2130
2269
  },
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
- ) })
2270
+ children: isLoading ? /* @__PURE__ */ jsx(
2271
+ Square,
2272
+ {
2273
+ className: "crow-h-3.5 crow-w-3.5 crow-text-white",
2274
+ style: { fill: "white" }
2275
+ }
2276
+ ) : /* @__PURE__ */ jsx(
2277
+ ArrowUp,
2278
+ {
2279
+ className: cn(
2280
+ "crow-h-3.5 crow-w-3.5",
2281
+ hasContent ? "crow-text-white" : "crow-text-gray-400"
2282
+ )
2283
+ }
2284
+ )
2135
2285
  }
2136
2286
  )
2137
2287
  }
@@ -2246,7 +2396,7 @@ function getCssVar(varName, element = document.documentElement) {
2246
2396
  var STYLE_ID = "crow-ui-styles";
2247
2397
  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: }
2248
2398
 
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}`;
2399
+ /*! 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}`;
2250
2400
  var injected = false;
2251
2401
  function injectStyles(target = document) {
2252
2402
  if (target === document && injected) return;
@@ -2272,16 +2422,18 @@ function CrowWidget({
2272
2422
  variant = "floating",
2273
2423
  styles: propStyles,
2274
2424
  previewMode = false,
2425
+ showThinking: showThinkingProp,
2275
2426
  onReady,
2276
2427
  onIdentify,
2277
2428
  tools
2278
2429
  }) {
2279
- const { styles, isLoading: isLoadingStyles, agentName, browserUseEnabled } = useWidgetStyles({
2430
+ const { styles, isLoading: isLoadingStyles, agentName, browserUseEnabled, showThinking: showThinkingFromAPI } = useWidgetStyles({
2280
2431
  productId,
2281
2432
  apiUrl,
2282
2433
  propStyles,
2283
2434
  skip: previewMode
2284
2435
  });
2436
+ const showThinking = showThinkingProp ?? showThinkingFromAPI;
2285
2437
  const [autoTools, setAutoTools] = useState({});
2286
2438
  const cssVars = stylesToCssVars(styles);
2287
2439
  const messagesContainerRef = useRef(null);
@@ -2528,6 +2680,7 @@ function CrowWidget({
2528
2680
  agentName,
2529
2681
  isLoading: isLoadingStyles,
2530
2682
  variant,
2683
+ showThinking,
2531
2684
  children: [
2532
2685
  variant === "floating" && /* @__PURE__ */ jsxs(Fragment, { children: [
2533
2686
  /* @__PURE__ */ jsx(ChatBubble, { isExpanded: !isCollapsed, onClick: handleBubbleClick }),