@mieweb/ui 0.10.0-dev.7 → 0.10.0-dev.9

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.
Files changed (38) hide show
  1. package/dist/{chunk-XEPDIFEA.js → chunk-4A3W4TQF.js} +16 -3
  2. package/dist/chunk-4A3W4TQF.js.map +1 -0
  3. package/dist/{chunk-WNAA6CLE.cjs → chunk-AR7AKDM2.cjs} +2 -2
  4. package/dist/{chunk-WNAA6CLE.cjs.map → chunk-AR7AKDM2.cjs.map} +1 -1
  5. package/dist/{chunk-XCENM6ED.cjs → chunk-ASSDGS4F.cjs} +16 -3
  6. package/dist/chunk-ASSDGS4F.cjs.map +1 -0
  7. package/dist/{chunk-JHULS3EC.js → chunk-AWJBOND5.js} +2 -2
  8. package/dist/{chunk-JHULS3EC.js.map → chunk-AWJBOND5.js.map} +1 -1
  9. package/dist/chunk-BM35CACB.js +148 -0
  10. package/dist/chunk-BM35CACB.js.map +1 -0
  11. package/dist/{chunk-WIAQQNFU.cjs → chunk-FS4VZUFV.cjs} +31 -2
  12. package/dist/chunk-FS4VZUFV.cjs.map +1 -0
  13. package/dist/{chunk-22CYDCXA.js → chunk-HACNIFO3.js} +31 -3
  14. package/dist/chunk-HACNIFO3.js.map +1 -0
  15. package/dist/chunk-VPTASZ2O.cjs +171 -0
  16. package/dist/chunk-VPTASZ2O.cjs.map +1 -0
  17. package/dist/components/SuperChat/index.cjs +442 -267
  18. package/dist/components/SuperChat/index.cjs.map +1 -1
  19. package/dist/components/SuperChat/index.js +439 -264
  20. package/dist/components/SuperChat/index.js.map +1 -1
  21. package/dist/hooks/index.cjs +22 -13
  22. package/dist/hooks/index.d.cts +101 -1
  23. package/dist/hooks/index.d.ts +101 -1
  24. package/dist/hooks/index.js +2 -1
  25. package/dist/index.cjs +193 -70
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.js +146 -30
  30. package/dist/index.js.map +1 -1
  31. package/dist/styles.css +1 -1
  32. package/dist/tailwind-preset.cjs +4 -4
  33. package/dist/tailwind-preset.js +1 -1
  34. package/package.json +1 -1
  35. package/dist/chunk-22CYDCXA.js.map +0 -1
  36. package/dist/chunk-WIAQQNFU.cjs.map +0 -1
  37. package/dist/chunk-XCENM6ED.cjs.map +0 -1
  38. package/dist/chunk-XEPDIFEA.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -26,7 +26,7 @@ var chunkVTKXM7IE_cjs = require('./chunk-VTKXM7IE.cjs');
26
26
  var chunkYGA35Z2P_cjs = require('./chunk-YGA35Z2P.cjs');
27
27
  var chunk2G75X6TS_cjs = require('./chunk-2G75X6TS.cjs');
28
28
  var chunk7RV6CAP6_cjs = require('./chunk-7RV6CAP6.cjs');
29
- var chunkWIAQQNFU_cjs = require('./chunk-WIAQQNFU.cjs');
29
+ var chunkFS4VZUFV_cjs = require('./chunk-FS4VZUFV.cjs');
30
30
  var chunkOD47TTAW_cjs = require('./chunk-OD47TTAW.cjs');
31
31
  var chunkX4XPNTCZ_cjs = require('./chunk-X4XPNTCZ.cjs');
32
32
  var chunkJTSKPDPH_cjs = require('./chunk-JTSKPDPH.cjs');
@@ -80,9 +80,10 @@ require('./chunk-RHNPILZQ.cjs');
80
80
  var chunkURAQIF67_cjs = require('./chunk-URAQIF67.cjs');
81
81
  var chunk4NCDU5IG_cjs = require('./chunk-4NCDU5IG.cjs');
82
82
  var chunkXXVUHLQN_cjs = require('./chunk-XXVUHLQN.cjs');
83
- var chunkWNAA6CLE_cjs = require('./chunk-WNAA6CLE.cjs');
83
+ var chunkAR7AKDM2_cjs = require('./chunk-AR7AKDM2.cjs');
84
84
  var chunkIXFC7LK2_cjs = require('./chunk-IXFC7LK2.cjs');
85
85
  var chunk2O7D6F67_cjs = require('./chunk-2O7D6F67.cjs');
86
+ var chunkVPTASZ2O_cjs = require('./chunk-VPTASZ2O.cjs');
86
87
  var chunk7IKLGH3Z_cjs = require('./chunk-7IKLGH3Z.cjs');
87
88
  var chunkNPKPCYAT_cjs = require('./chunk-NPKPCYAT.cjs');
88
89
  var chunkNUFUV43P_cjs = require('./chunk-NUFUV43P.cjs');
@@ -90,7 +91,7 @@ var chunkJYZW2PZS_cjs = require('./chunk-JYZW2PZS.cjs');
90
91
  require('./chunk-AT732HC6.cjs');
91
92
  var chunkC7RVKV25_cjs = require('./chunk-C7RVKV25.cjs');
92
93
  var chunkL7YQBSEL_cjs = require('./chunk-L7YQBSEL.cjs');
93
- var chunkXCENM6ED_cjs = require('./chunk-XCENM6ED.cjs');
94
+ var chunkASSDGS4F_cjs = require('./chunk-ASSDGS4F.cjs');
94
95
  var chunkVROIMIHB_cjs = require('./chunk-VROIMIHB.cjs');
95
96
  var chunkNYJIXR4Y_cjs = require('./chunk-NYJIXR4Y.cjs');
96
97
  var chunkE4IBHYJ7_cjs = require('./chunk-E4IBHYJ7.cjs');
@@ -1420,7 +1421,7 @@ function AIEmptyState({
1420
1421
  {
1421
1422
  "data-slot": "ai-empty-state-icon",
1422
1423
  className: "bg-primary-800 dark:bg-primary-800 flex h-16 w-16 items-center justify-center rounded-full text-white",
1423
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.SparklesIcon, { size: "lg", className: "h-8 w-8" })
1424
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkFS4VZUFV_cjs.SparklesIcon, { size: "lg", className: "h-8 w-8" })
1424
1425
  }
1425
1426
  );
1426
1427
  const suggestionsAction = suggestions && suggestions.length > 0 && onSuggestionSelect ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
@@ -1488,7 +1489,6 @@ function AIChat({
1488
1489
  renderTextContent,
1489
1490
  renderMessageFooter
1490
1491
  }) {
1491
- const messagesContainerRef = React13__namespace.useRef(null);
1492
1492
  React13__namespace.useEffect(() => {
1493
1493
  chunkX4XPNTCZ_cjs.notifyComposerMigrationOnce("AIChat");
1494
1494
  }, []);
@@ -1497,10 +1497,108 @@ function AIChat({
1497
1497
  [session?.messages, messagesProp]
1498
1498
  );
1499
1499
  const isGenerating = session?.isGenerating || isGeneratingProp || false;
1500
+ const prefersReducedMotion = chunk6HFFWEM3_cjs.usePrefersReducedMotion();
1501
+ const {
1502
+ containerRef: messagesContainerRef,
1503
+ contentRef: messagesContentRef,
1504
+ isAtBottom,
1505
+ scrollToBottom,
1506
+ anchorToTurnStart,
1507
+ followIfPinned,
1508
+ stopFollowing
1509
+ } = chunkVPTASZ2O_cjs.useStickToBottom();
1510
+ const [hasNewBelow, setHasNewBelow] = React13__namespace.useState(false);
1511
+ const [turnStartId, setTurnStartId] = React13__namespace.useState(null);
1512
+ const [turnMinHeight, setTurnMinHeight] = React13__namespace.useState();
1513
+ const anchoredTurnRef = React13__namespace.useRef(null);
1514
+ React13__namespace.useEffect(() => {
1515
+ setTurnStartId(null);
1516
+ anchoredTurnRef.current = null;
1517
+ scrollToBottom("auto");
1518
+ setHasNewBelow(false);
1519
+ }, [session?.id, scrollToBottom]);
1520
+ const messageCount = messages.length;
1521
+ const prevMessageCountRef = React13__namespace.useRef(messageCount);
1522
+ const policySessionRef = React13__namespace.useRef(session?.id);
1523
+ const policyBaselinedRef = React13__namespace.useRef(false);
1500
1524
  React13__namespace.useEffect(() => {
1525
+ if (!policyBaselinedRef.current || policySessionRef.current !== session?.id) {
1526
+ policyBaselinedRef.current = true;
1527
+ policySessionRef.current = session?.id;
1528
+ prevMessageCountRef.current = messageCount;
1529
+ if (messages.at(-1)?.status === "streaming") stopFollowing();
1530
+ return;
1531
+ }
1532
+ const prevCount = prevMessageCountRef.current;
1533
+ if (messageCount === prevCount) return;
1534
+ const grew = messageCount > prevCount;
1535
+ prevMessageCountRef.current = messageCount;
1536
+ const ownMessage = grew ? messages.slice(prevCount).filter((m) => m.role === "user").at(-1) : void 0;
1537
+ if (ownMessage) {
1538
+ setTurnStartId(ownMessage.id);
1539
+ } else if (grew && messages.at(-1)?.status === "streaming") {
1540
+ followIfPinned("auto");
1541
+ stopFollowing();
1542
+ } else if (!followIfPinned("auto") && grew) {
1543
+ setHasNewBelow(true);
1544
+ }
1545
+ }, [messageCount, isAtBottom, session?.id]);
1546
+ React13__namespace.useLayoutEffect(() => {
1547
+ if (!turnStartId || anchoredTurnRef.current === turnStartId) return;
1501
1548
  const container = messagesContainerRef.current;
1502
- if (container) container.scrollTop = container.scrollHeight;
1503
- }, [messages]);
1549
+ if (!container) return;
1550
+ const reserve = Math.max(0, container.clientHeight - 32);
1551
+ if (turnMinHeight !== reserve) {
1552
+ setTurnMinHeight(reserve);
1553
+ return;
1554
+ }
1555
+ const target = container.querySelector(
1556
+ '[data-slot="ai-chat-turn"]'
1557
+ );
1558
+ if (target) {
1559
+ anchorToTurnStart(target, prefersReducedMotion ? "auto" : "smooth");
1560
+ anchoredTurnRef.current = turnStartId;
1561
+ }
1562
+ }, [
1563
+ turnStartId,
1564
+ turnMinHeight,
1565
+ anchorToTurnStart,
1566
+ prefersReducedMotion,
1567
+ messagesContainerRef
1568
+ ]);
1569
+ const turnIndex = React13__namespace.useMemo(
1570
+ () => turnStartId ? messages.findIndex((m) => m.id === turnStartId) : -1,
1571
+ [messages, turnStartId]
1572
+ );
1573
+ React13__namespace.useEffect(() => {
1574
+ if (isAtBottom) setHasNewBelow(false);
1575
+ }, [isAtBottom]);
1576
+ const raiseNewBelow = React13__namespace.useCallback(() => setHasNewBelow(true), []);
1577
+ const resumeFollowing = React13__namespace.useCallback(
1578
+ () => scrollToBottom("auto"),
1579
+ [scrollToBottom]
1580
+ );
1581
+ chunkVPTASZ2O_cjs.useStreamEndedBelowFold(
1582
+ messages.at(-1),
1583
+ isAtBottom,
1584
+ raiseNewBelow,
1585
+ resumeFollowing
1586
+ );
1587
+ const handleJumpToBottom = React13__namespace.useCallback(() => {
1588
+ scrollToBottom(prefersReducedMotion ? "auto" : "smooth");
1589
+ }, [scrollToBottom, prefersReducedMotion]);
1590
+ const renderMessageItem = (message) => /* @__PURE__ */ jsxRuntime.jsx(
1591
+ chunkFS4VZUFV_cjs.AIMessageDisplay,
1592
+ {
1593
+ message,
1594
+ userName,
1595
+ showTimestamp: showTimestamps,
1596
+ onLinkClick: handleLinkClick,
1597
+ renderTextContent,
1598
+ renderMessageFooter
1599
+ },
1600
+ message.id
1601
+ );
1504
1602
  const {
1505
1603
  showAttachmentPicker,
1506
1604
  inputTrailing,
@@ -1590,7 +1688,7 @@ function AIChat({
1590
1688
  {
1591
1689
  "data-slot": "ai-chat-header-icon",
1592
1690
  className: "bg-primary-800 dark:bg-primary-800 flex h-8 w-8 items-center justify-center rounded-full text-white",
1593
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.SparklesIcon, { size: "sm" })
1691
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkFS4VZUFV_cjs.SparklesIcon, { size: "sm" })
1594
1692
  }
1595
1693
  ),
1596
1694
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -1620,7 +1718,7 @@ function AIChat({
1620
1718
  className: "rounded-lg p-2 text-neutral-500 hover:bg-neutral-100 hover:text-neutral-700 dark:hover:bg-neutral-800 dark:hover:text-neutral-300",
1621
1719
  title: "Clear chat",
1622
1720
  "aria-label": "Clear chat",
1623
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.RefreshIcon, {})
1721
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkFS4VZUFV_cjs.RefreshIcon, {})
1624
1722
  }
1625
1723
  ),
1626
1724
  onClose && /* @__PURE__ */ jsxRuntime.jsx(
@@ -1631,37 +1729,54 @@ function AIChat({
1631
1729
  className: "rounded-lg p-2 text-neutral-500 hover:bg-neutral-100 hover:text-neutral-700 dark:hover:bg-neutral-800 dark:hover:text-neutral-300",
1632
1730
  title: "Close chat",
1633
1731
  "aria-label": "Close chat",
1634
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.CloseIcon, {})
1732
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkFS4VZUFV_cjs.CloseIcon, {})
1635
1733
  }
1636
1734
  )
1637
1735
  ] })
1638
1736
  ]
1639
1737
  }
1640
1738
  ),
1641
- /* @__PURE__ */ jsxRuntime.jsx(
1739
+ /* @__PURE__ */ jsxRuntime.jsxs(
1642
1740
  "div",
1643
1741
  {
1644
- ref: messagesContainerRef,
1645
- "data-slot": "ai-chat-messages",
1646
- className: "flex-1 overflow-y-auto px-4 py-4",
1647
- children: messages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1648
- AIEmptyState,
1649
- {
1650
- suggestions,
1651
- onSuggestionSelect: handleSuggestionSelect
1652
- }
1653
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: messages.map((message) => /* @__PURE__ */ jsxRuntime.jsx(
1654
- chunkWIAQQNFU_cjs.AIMessageDisplay,
1655
- {
1656
- message,
1657
- userName,
1658
- showTimestamp: showTimestamps,
1659
- onLinkClick: handleLinkClick,
1660
- renderTextContent,
1661
- renderMessageFooter
1662
- },
1663
- message.id
1664
- )) })
1742
+ "data-slot": "ai-chat-messages-viewport",
1743
+ className: "relative flex min-h-0 flex-1 flex-col",
1744
+ children: [
1745
+ /* @__PURE__ */ jsxRuntime.jsx(
1746
+ "div",
1747
+ {
1748
+ ref: messagesContainerRef,
1749
+ "data-slot": "ai-chat-messages",
1750
+ className: "flex-1 overflow-y-auto px-4 py-4",
1751
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: messagesContentRef, children: messages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1752
+ AIEmptyState,
1753
+ {
1754
+ suggestions,
1755
+ onSuggestionSelect: handleSuggestionSelect
1756
+ }
1757
+ ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1758
+ (turnIndex === -1 ? messages : messages.slice(0, turnIndex)).map(renderMessageItem),
1759
+ turnIndex !== -1 && /* @__PURE__ */ jsxRuntime.jsx(
1760
+ "div",
1761
+ {
1762
+ "data-slot": "ai-chat-turn",
1763
+ className: "space-y-4",
1764
+ style: { minHeight: turnMinHeight },
1765
+ children: messages.slice(turnIndex).map(renderMessageItem)
1766
+ }
1767
+ )
1768
+ ] }) })
1769
+ }
1770
+ ),
1771
+ !isAtBottom && /* @__PURE__ */ jsxRuntime.jsx(
1772
+ chunkFS4VZUFV_cjs.JumpToBottomButton,
1773
+ {
1774
+ dataSlot: "ai-chat-jump-to-bottom",
1775
+ hasNewMessages: hasNewBelow,
1776
+ onClick: handleJumpToBottom
1777
+ }
1778
+ )
1779
+ ]
1665
1780
  }
1666
1781
  ),
1667
1782
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2022,7 +2137,7 @@ function ToastContainer({
2022
2137
  }) {
2023
2138
  const context = useOptionalToast();
2024
2139
  const containerRef = React13__namespace.default.useRef(null);
2025
- const isRtl = chunkWNAA6CLE_cjs.useDirection(containerRef) === "rtl";
2140
+ const isRtl = chunkAR7AKDM2_cjs.useDirection(containerRef) === "rtl";
2026
2141
  const resolvedPosition = position ?? context?.position ?? "bottom-end";
2027
2142
  const edge = toastEdge(resolvedPosition, isRtl);
2028
2143
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4867,7 +4982,7 @@ function AIChatTrigger({
4867
4982
  children: badge > 9 ? "9+" : badge
4868
4983
  }
4869
4984
  ),
4870
- /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.SparklesIcon, { size: "lg" })
4985
+ /* @__PURE__ */ jsxRuntime.jsx(chunkFS4VZUFV_cjs.SparklesIcon, { size: "lg" })
4871
4986
  ]
4872
4987
  }
4873
4988
  );
@@ -6470,7 +6585,7 @@ function ReconciliationProposalRow({
6470
6585
  children: [
6471
6586
  /* @__PURE__ */ jsxRuntime.jsxs("dt", { className: "text-muted-foreground flex items-center gap-1 text-[11px] tracking-wide uppercase", children: [
6472
6587
  /* @__PURE__ */ jsxRuntime.jsx(
6473
- chunkWIAQQNFU_cjs.SparklesIcon,
6588
+ chunkFS4VZUFV_cjs.SparklesIcon,
6474
6589
  {
6475
6590
  size: "sm",
6476
6591
  className: "text-primary-700 dark:text-primary-400"
@@ -6526,7 +6641,7 @@ function SourcePill({ source }) {
6526
6641
  "text-muted-foreground"
6527
6642
  ),
6528
6643
  children: [
6529
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary-700 dark:text-primary-400 flex items-center", children: source.icon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.SparklesIcon, { size: "sm" }) }),
6644
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary-700 dark:text-primary-400 flex items-center", children: source.icon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkFS4VZUFV_cjs.SparklesIcon, { size: "sm" }) }),
6530
6645
  source.thumbnailUrl && /* @__PURE__ */ jsxRuntime.jsx(
6531
6646
  "img",
6532
6647
  {
@@ -13232,7 +13347,7 @@ function CommandPaletteProvider({
13232
13347
  open();
13233
13348
  }
13234
13349
  }, [isOpen, open, close]);
13235
- chunkWNAA6CLE_cjs.useCommandK(toggle, enableShortcut);
13350
+ chunkAR7AKDM2_cjs.useCommandK(toggle, enableShortcut);
13236
13351
  React13__namespace.default.useEffect(() => {
13237
13352
  if (!customEventName) return;
13238
13353
  const handler = () => open();
@@ -18291,7 +18406,7 @@ function DocumentScanner({
18291
18406
  const [error, setError] = React13__namespace.useState(null);
18292
18407
  const [isWebcamOpen, setIsWebcamOpen] = React13__namespace.useState(false);
18293
18408
  const [validationErrors, setValidationErrors] = React13__namespace.useState([]);
18294
- const isMobile = chunkWNAA6CLE_cjs.useIsMobile();
18409
+ const isMobile = chunkAR7AKDM2_cjs.useIsMobile();
18295
18410
  const cameraInputRef = React13__namespace.useRef(null);
18296
18411
  const {
18297
18412
  files,
@@ -40377,7 +40492,7 @@ function SidebarProvider({
40377
40492
  defaultExpandedGroup = null,
40378
40493
  mobileBreakpoint = "(max-width: 1023px)"
40379
40494
  }) {
40380
- const isMobileViewport = chunkWNAA6CLE_cjs.useMediaQuery(mobileBreakpoint);
40495
+ const isMobileViewport = chunkAR7AKDM2_cjs.useMediaQuery(mobileBreakpoint);
40381
40496
  const [isCollapsed, setIsCollapsed] = React13.useState(() => {
40382
40497
  if (typeof window !== "undefined" && persistCollapsed) {
40383
40498
  const stored = localStorage.getItem(storageKey);
@@ -40558,7 +40673,7 @@ function Sidebar({
40558
40673
  }) {
40559
40674
  const { isCollapsed, isMobileOpen, closeMobile, isMobileViewport } = useSidebar();
40560
40675
  const navRef = React13.useRef(null);
40561
- const isRtl = chunkWNAA6CLE_cjs.useDirection(navRef) === "rtl";
40676
+ const isRtl = chunkAR7AKDM2_cjs.useDirection(navRef) === "rtl";
40562
40677
  const width = isMobileViewport ? expandedWidth : isCollapsed ? collapsedWidth : expandedWidth;
40563
40678
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
40564
40679
  isMobileViewport && /* @__PURE__ */ jsxRuntime.jsx(chunkNV2CWBI2_cjs.AnimatedPresence, { children: isMobileOpen && /* @__PURE__ */ jsxRuntime.jsx(
@@ -44642,67 +44757,67 @@ Object.defineProperty(exports, "Sparkline", {
44642
44757
  });
44643
44758
  Object.defineProperty(exports, "AILogoIcon", {
44644
44759
  enumerable: true,
44645
- get: function () { return chunkWIAQQNFU_cjs.AILogoIcon; }
44760
+ get: function () { return chunkFS4VZUFV_cjs.AILogoIcon; }
44646
44761
  });
44647
44762
  Object.defineProperty(exports, "AIMessageDisplay", {
44648
44763
  enumerable: true,
44649
- get: function () { return chunkWIAQQNFU_cjs.AIMessageDisplay; }
44764
+ get: function () { return chunkFS4VZUFV_cjs.AIMessageDisplay; }
44650
44765
  });
44651
44766
  Object.defineProperty(exports, "AITypingIndicator", {
44652
44767
  enumerable: true,
44653
- get: function () { return chunkWIAQQNFU_cjs.AITypingIndicator; }
44768
+ get: function () { return chunkFS4VZUFV_cjs.AITypingIndicator; }
44654
44769
  });
44655
44770
  Object.defineProperty(exports, "ChatBubble", {
44656
44771
  enumerable: true,
44657
- get: function () { return chunkWIAQQNFU_cjs.ChatBubble; }
44772
+ get: function () { return chunkFS4VZUFV_cjs.ChatBubble; }
44658
44773
  });
44659
44774
  Object.defineProperty(exports, "ChevronIcon", {
44660
44775
  enumerable: true,
44661
- get: function () { return chunkWIAQQNFU_cjs.ChevronIcon; }
44776
+ get: function () { return chunkFS4VZUFV_cjs.ChevronIcon; }
44662
44777
  });
44663
44778
  Object.defineProperty(exports, "CloseIcon", {
44664
44779
  enumerable: true,
44665
- get: function () { return chunkWIAQQNFU_cjs.CloseIcon; }
44780
+ get: function () { return chunkFS4VZUFV_cjs.CloseIcon; }
44666
44781
  });
44667
44782
  Object.defineProperty(exports, "CollapsiblePill", {
44668
44783
  enumerable: true,
44669
- get: function () { return chunkWIAQQNFU_cjs.CollapsiblePill; }
44784
+ get: function () { return chunkFS4VZUFV_cjs.CollapsiblePill; }
44670
44785
  });
44671
44786
  Object.defineProperty(exports, "MCPToolCallDisplay", {
44672
44787
  enumerable: true,
44673
- get: function () { return chunkWIAQQNFU_cjs.MCPToolCallDisplay; }
44788
+ get: function () { return chunkFS4VZUFV_cjs.MCPToolCallDisplay; }
44674
44789
  });
44675
44790
  Object.defineProperty(exports, "MessageAvatar", {
44676
44791
  enumerable: true,
44677
- get: function () { return chunkWIAQQNFU_cjs.MessageAvatar; }
44792
+ get: function () { return chunkFS4VZUFV_cjs.MessageAvatar; }
44678
44793
  });
44679
44794
  Object.defineProperty(exports, "RefreshIcon", {
44680
44795
  enumerable: true,
44681
- get: function () { return chunkWIAQQNFU_cjs.RefreshIcon; }
44796
+ get: function () { return chunkFS4VZUFV_cjs.RefreshIcon; }
44682
44797
  });
44683
44798
  Object.defineProperty(exports, "ResourceLink", {
44684
44799
  enumerable: true,
44685
- get: function () { return chunkWIAQQNFU_cjs.ResourceLink; }
44800
+ get: function () { return chunkFS4VZUFV_cjs.ResourceLink; }
44686
44801
  });
44687
44802
  Object.defineProperty(exports, "SendIcon", {
44688
44803
  enumerable: true,
44689
- get: function () { return chunkWIAQQNFU_cjs.SendIcon; }
44804
+ get: function () { return chunkFS4VZUFV_cjs.SendIcon; }
44690
44805
  });
44691
44806
  Object.defineProperty(exports, "SparklesIcon", {
44692
44807
  enumerable: true,
44693
- get: function () { return chunkWIAQQNFU_cjs.SparklesIcon; }
44808
+ get: function () { return chunkFS4VZUFV_cjs.SparklesIcon; }
44694
44809
  });
44695
44810
  Object.defineProperty(exports, "SpinnerIcon", {
44696
44811
  enumerable: true,
44697
- get: function () { return chunkWIAQQNFU_cjs.SpinnerIcon; }
44812
+ get: function () { return chunkFS4VZUFV_cjs.SpinnerIcon; }
44698
44813
  });
44699
44814
  Object.defineProperty(exports, "ToolStatusIcon", {
44700
44815
  enumerable: true,
44701
- get: function () { return chunkWIAQQNFU_cjs.ToolStatusIcon; }
44816
+ get: function () { return chunkFS4VZUFV_cjs.ToolStatusIcon; }
44702
44817
  });
44703
44818
  Object.defineProperty(exports, "getToolIcon", {
44704
44819
  enumerable: true,
44705
- get: function () { return chunkWIAQQNFU_cjs.getToolIcon; }
44820
+ get: function () { return chunkFS4VZUFV_cjs.getToolIcon; }
44706
44821
  });
44707
44822
  Object.defineProperty(exports, "AttachmentPreview", {
44708
44823
  enumerable: true,
@@ -45410,51 +45525,51 @@ Object.defineProperty(exports, "spinnerVariants", {
45410
45525
  });
45411
45526
  Object.defineProperty(exports, "RTL_LOCALES", {
45412
45527
  enumerable: true,
45413
- get: function () { return chunkWNAA6CLE_cjs.RTL_LOCALES; }
45528
+ get: function () { return chunkAR7AKDM2_cjs.RTL_LOCALES; }
45414
45529
  });
45415
45530
  Object.defineProperty(exports, "isRtlLocale", {
45416
45531
  enumerable: true,
45417
- get: function () { return chunkWNAA6CLE_cjs.isRtlLocale; }
45532
+ get: function () { return chunkAR7AKDM2_cjs.isRtlLocale; }
45418
45533
  });
45419
45534
  Object.defineProperty(exports, "useCommandK", {
45420
45535
  enumerable: true,
45421
- get: function () { return chunkWNAA6CLE_cjs.useCommandK; }
45536
+ get: function () { return chunkAR7AKDM2_cjs.useCommandK; }
45422
45537
  });
45423
45538
  Object.defineProperty(exports, "useDirection", {
45424
45539
  enumerable: true,
45425
- get: function () { return chunkWNAA6CLE_cjs.useDirection; }
45540
+ get: function () { return chunkAR7AKDM2_cjs.useDirection; }
45426
45541
  });
45427
45542
  Object.defineProperty(exports, "useIsDesktop", {
45428
45543
  enumerable: true,
45429
- get: function () { return chunkWNAA6CLE_cjs.useIsDesktop; }
45544
+ get: function () { return chunkAR7AKDM2_cjs.useIsDesktop; }
45430
45545
  });
45431
45546
  Object.defineProperty(exports, "useIsLargeDesktop", {
45432
45547
  enumerable: true,
45433
- get: function () { return chunkWNAA6CLE_cjs.useIsLargeDesktop; }
45548
+ get: function () { return chunkAR7AKDM2_cjs.useIsLargeDesktop; }
45434
45549
  });
45435
45550
  Object.defineProperty(exports, "useIsMobile", {
45436
45551
  enumerable: true,
45437
- get: function () { return chunkWNAA6CLE_cjs.useIsMobile; }
45552
+ get: function () { return chunkAR7AKDM2_cjs.useIsMobile; }
45438
45553
  });
45439
45554
  Object.defineProperty(exports, "useIsMobileOrTablet", {
45440
45555
  enumerable: true,
45441
- get: function () { return chunkWNAA6CLE_cjs.useIsMobileOrTablet; }
45556
+ get: function () { return chunkAR7AKDM2_cjs.useIsMobileOrTablet; }
45442
45557
  });
45443
45558
  Object.defineProperty(exports, "useIsSmallTablet", {
45444
45559
  enumerable: true,
45445
- get: function () { return chunkWNAA6CLE_cjs.useIsSmallTablet; }
45560
+ get: function () { return chunkAR7AKDM2_cjs.useIsSmallTablet; }
45446
45561
  });
45447
45562
  Object.defineProperty(exports, "useIsTablet", {
45448
45563
  enumerable: true,
45449
- get: function () { return chunkWNAA6CLE_cjs.useIsTablet; }
45564
+ get: function () { return chunkAR7AKDM2_cjs.useIsTablet; }
45450
45565
  });
45451
45566
  Object.defineProperty(exports, "useKeyboardShortcut", {
45452
45567
  enumerable: true,
45453
- get: function () { return chunkWNAA6CLE_cjs.useKeyboardShortcut; }
45568
+ get: function () { return chunkAR7AKDM2_cjs.useKeyboardShortcut; }
45454
45569
  });
45455
45570
  Object.defineProperty(exports, "useMediaQuery", {
45456
45571
  enumerable: true,
45457
- get: function () { return chunkWNAA6CLE_cjs.useMediaQuery; }
45572
+ get: function () { return chunkAR7AKDM2_cjs.useMediaQuery; }
45458
45573
  });
45459
45574
  Object.defineProperty(exports, "useYouTubeHoverPreview", {
45460
45575
  enumerable: true,
@@ -45464,6 +45579,14 @@ Object.defineProperty(exports, "useTheme", {
45464
45579
  enumerable: true,
45465
45580
  get: function () { return chunk2O7D6F67_cjs.useTheme; }
45466
45581
  });
45582
+ Object.defineProperty(exports, "useStickToBottom", {
45583
+ enumerable: true,
45584
+ get: function () { return chunkVPTASZ2O_cjs.useStickToBottom; }
45585
+ });
45586
+ Object.defineProperty(exports, "useStreamEndedBelowFold", {
45587
+ enumerable: true,
45588
+ get: function () { return chunkVPTASZ2O_cjs.useStreamEndedBelowFold; }
45589
+ });
45467
45590
  Object.defineProperty(exports, "useScrollSpy", {
45468
45591
  enumerable: true,
45469
45592
  get: function () { return chunk7IKLGH3Z_cjs.useScrollSpy; }
@@ -45534,11 +45657,11 @@ Object.defineProperty(exports, "unformatPhoneNumber", {
45534
45657
  });
45535
45658
  Object.defineProperty(exports, "miewebUIPreset", {
45536
45659
  enumerable: true,
45537
- get: function () { return chunkXCENM6ED_cjs.miewebUIPreset; }
45660
+ get: function () { return chunkASSDGS4F_cjs.miewebUIPreset; }
45538
45661
  });
45539
45662
  Object.defineProperty(exports, "miewebUISafelist", {
45540
45663
  enumerable: true,
45541
- get: function () { return chunkXCENM6ED_cjs.miewebUISafelist; }
45664
+ get: function () { return chunkASSDGS4F_cjs.miewebUISafelist; }
45542
45665
  });
45543
45666
  Object.defineProperty(exports, "Accordion", {
45544
45667
  enumerable: true,