@liveblocks/react-ui 3.14.0 → 3.15.0-components1

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 (137) hide show
  1. package/dist/_private/index.cjs +1 -5
  2. package/dist/_private/index.cjs.map +1 -1
  3. package/dist/_private/index.d.cts +4 -4
  4. package/dist/_private/index.d.ts +4 -4
  5. package/dist/_private/index.js +1 -2
  6. package/dist/_private/index.js.map +1 -1
  7. package/dist/components/AvatarStack.cjs +115 -0
  8. package/dist/components/AvatarStack.cjs.map +1 -0
  9. package/dist/components/AvatarStack.js +113 -0
  10. package/dist/components/AvatarStack.js.map +1 -0
  11. package/dist/components/Comment.cjs +10 -28
  12. package/dist/components/Comment.cjs.map +1 -1
  13. package/dist/components/Comment.js +12 -11
  14. package/dist/components/Comment.js.map +1 -1
  15. package/dist/components/CommentPin.cjs +27 -0
  16. package/dist/components/CommentPin.cjs.map +1 -0
  17. package/dist/components/CommentPin.js +25 -0
  18. package/dist/components/CommentPin.js.map +1 -0
  19. package/dist/components/Composer.cjs +2 -4
  20. package/dist/components/Composer.cjs.map +1 -1
  21. package/dist/components/Composer.js +3 -5
  22. package/dist/components/Composer.js.map +1 -1
  23. package/dist/components/Cursor.cjs +40 -0
  24. package/dist/components/Cursor.cjs.map +1 -0
  25. package/dist/components/Cursor.js +38 -0
  26. package/dist/components/Cursor.js.map +1 -0
  27. package/dist/components/Cursors.cjs +252 -0
  28. package/dist/components/Cursors.cjs.map +1 -0
  29. package/dist/components/Cursors.js +250 -0
  30. package/dist/components/Cursors.js.map +1 -0
  31. package/dist/components/FloatingComposer.cjs +82 -0
  32. package/dist/components/FloatingComposer.cjs.map +1 -0
  33. package/dist/components/FloatingComposer.js +80 -0
  34. package/dist/components/FloatingComposer.js.map +1 -0
  35. package/dist/components/FloatingThread.cjs +82 -0
  36. package/dist/components/FloatingThread.cjs.map +1 -0
  37. package/dist/components/FloatingThread.js +80 -0
  38. package/dist/components/FloatingThread.js.map +1 -0
  39. package/dist/components/InboxNotification.cjs +4 -6
  40. package/dist/components/InboxNotification.cjs.map +1 -1
  41. package/dist/components/InboxNotification.js +5 -7
  42. package/dist/components/InboxNotification.js.map +1 -1
  43. package/dist/components/Thread.cjs +19 -26
  44. package/dist/components/Thread.cjs.map +1 -1
  45. package/dist/components/Thread.js +19 -7
  46. package/dist/components/Thread.js.map +1 -1
  47. package/dist/components/internal/AiComposer.cjs +1 -2
  48. package/dist/components/internal/AiComposer.cjs.map +1 -1
  49. package/dist/components/internal/AiComposer.js +1 -2
  50. package/dist/components/internal/AiComposer.js.map +1 -1
  51. package/dist/components/internal/CodeBlock.cjs +1 -2
  52. package/dist/components/internal/CodeBlock.cjs.map +1 -1
  53. package/dist/components/internal/CodeBlock.js +1 -2
  54. package/dist/components/internal/CodeBlock.js.map +1 -1
  55. package/dist/components/internal/Dropdown.cjs +7 -28
  56. package/dist/components/internal/Dropdown.cjs.map +1 -1
  57. package/dist/components/internal/Dropdown.js +7 -7
  58. package/dist/components/internal/Dropdown.js.map +1 -1
  59. package/dist/components/internal/EmojiPicker.cjs +6 -27
  60. package/dist/components/internal/EmojiPicker.cjs.map +1 -1
  61. package/dist/components/internal/EmojiPicker.js +6 -6
  62. package/dist/components/internal/EmojiPicker.js.map +1 -1
  63. package/dist/components/internal/List.cjs +2 -2
  64. package/dist/components/internal/List.cjs.map +1 -1
  65. package/dist/components/internal/List.js +2 -2
  66. package/dist/components/internal/List.js.map +1 -1
  67. package/dist/components/internal/Tooltip.cjs +7 -28
  68. package/dist/components/internal/Tooltip.cjs.map +1 -1
  69. package/dist/components/internal/Tooltip.js +7 -7
  70. package/dist/components/internal/Tooltip.js.map +1 -1
  71. package/dist/index.cjs +12 -0
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.d.cts +214 -125
  74. package/dist/index.d.ts +214 -125
  75. package/dist/index.js +6 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/primitives/AiComposer/index.cjs +5 -4
  78. package/dist/primitives/AiComposer/index.cjs.map +1 -1
  79. package/dist/primitives/AiComposer/index.js +5 -4
  80. package/dist/primitives/AiComposer/index.js.map +1 -1
  81. package/dist/primitives/AiMessage/index.cjs +2 -2
  82. package/dist/primitives/AiMessage/index.cjs.map +1 -1
  83. package/dist/primitives/AiMessage/index.js +2 -2
  84. package/dist/primitives/AiMessage/index.js.map +1 -1
  85. package/dist/primitives/Collapsible/index.cjs +4 -4
  86. package/dist/primitives/Collapsible/index.cjs.map +1 -1
  87. package/dist/primitives/Collapsible/index.js +4 -4
  88. package/dist/primitives/Collapsible/index.js.map +1 -1
  89. package/dist/primitives/Comment/index.cjs +4 -4
  90. package/dist/primitives/Comment/index.cjs.map +1 -1
  91. package/dist/primitives/Comment/index.js +4 -4
  92. package/dist/primitives/Comment/index.js.map +1 -1
  93. package/dist/primitives/Composer/index.cjs +23 -35
  94. package/dist/primitives/Composer/index.cjs.map +1 -1
  95. package/dist/primitives/Composer/index.js +23 -16
  96. package/dist/primitives/Composer/index.js.map +1 -1
  97. package/dist/primitives/Duration.cjs +2 -2
  98. package/dist/primitives/Duration.cjs.map +1 -1
  99. package/dist/primitives/Duration.js +2 -2
  100. package/dist/primitives/Duration.js.map +1 -1
  101. package/dist/primitives/FileSize.cjs +2 -2
  102. package/dist/primitives/FileSize.cjs.map +1 -1
  103. package/dist/primitives/FileSize.js +2 -2
  104. package/dist/primitives/FileSize.js.map +1 -1
  105. package/dist/primitives/Markdown.cjs +2 -2
  106. package/dist/primitives/Markdown.cjs.map +1 -1
  107. package/dist/primitives/Markdown.js +2 -2
  108. package/dist/primitives/Markdown.js.map +1 -1
  109. package/dist/primitives/Timestamp.cjs +2 -2
  110. package/dist/primitives/Timestamp.cjs.map +1 -1
  111. package/dist/primitives/Timestamp.js +2 -2
  112. package/dist/primitives/Timestamp.js.map +1 -1
  113. package/dist/utils/Portal.cjs +2 -2
  114. package/dist/utils/Portal.cjs.map +1 -1
  115. package/dist/utils/Portal.js +2 -2
  116. package/dist/utils/Portal.js.map +1 -1
  117. package/dist/utils/animation-loop.cjs +44 -0
  118. package/dist/utils/animation-loop.cjs.map +1 -0
  119. package/dist/utils/animation-loop.js +42 -0
  120. package/dist/utils/animation-loop.js.map +1 -0
  121. package/dist/utils/use-pre-resolve-user.cjs +18 -0
  122. package/dist/utils/use-pre-resolve-user.cjs.map +1 -0
  123. package/dist/utils/use-pre-resolve-user.js +16 -0
  124. package/dist/utils/use-pre-resolve-user.js.map +1 -0
  125. package/dist/version.cjs +1 -1
  126. package/dist/version.cjs.map +1 -1
  127. package/dist/version.js +1 -1
  128. package/dist/version.js.map +1 -1
  129. package/package.json +9 -13
  130. package/src/styles/dark/index.css +1 -1
  131. package/src/styles/index.css +252 -4
  132. package/styles/dark/attributes.css +1 -1
  133. package/styles/dark/attributes.css.map +1 -1
  134. package/styles/dark/media-query.css +1 -1
  135. package/styles/dark/media-query.css.map +1 -1
  136. package/styles.css +1 -1
  137. package/styles.css.map +1 -1
@@ -20,7 +20,6 @@ var contexts = require('../primitives/AiComposer/contexts.cjs');
20
20
  var index$1 = require('../primitives/AiMessage/index.cjs');
21
21
  var index$2 = require('../primitives/Collapsible/index.cjs');
22
22
  var Markdown = require('../primitives/Markdown.cjs');
23
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
24
23
  var ArrowCornerDownRight = require('../icons/ArrowCornerDownRight.cjs');
25
24
  var ArrowCornerUpRight = require('../icons/ArrowCornerUpRight.cjs');
26
25
  var ArrowDown = require('../icons/ArrowDown.cjs');
@@ -88,6 +87,7 @@ exports.List = List.List;
88
87
  exports.Prose = Prose.Prose;
89
88
  exports.ShortcutTooltip = Tooltip.ShortcutTooltip;
90
89
  exports.Tooltip = Tooltip.Tooltip;
90
+ exports.TooltipProvider = Tooltip.TooltipProvider;
91
91
  exports.User = User.User;
92
92
  exports.useLiveblocksUiConfig = config.useLiveblocksUiConfig;
93
93
  exports.capitalize = capitalize.capitalize;
@@ -100,10 +100,6 @@ exports.useAiComposer = contexts.useAiComposer;
100
100
  exports.AiMessage = index$1;
101
101
  exports.Collapsible = index$2;
102
102
  exports.Markdown = Markdown.Markdown;
103
- Object.defineProperty(exports, 'TooltipProvider', {
104
- enumerable: true,
105
- get: function () { return TooltipPrimitive.TooltipProvider; }
106
- });
107
103
  exports.ArrowCornerDownRightIcon = ArrowCornerDownRight.ArrowCornerDownRightIcon;
108
104
  exports.ArrowCornerUpRightIcon = ArrowCornerUpRight.ArrowCornerUpRightIcon;
109
105
  exports.ArrowDownIcon = ArrowDown.ArrowDownIcon;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,8 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Relax, AiTextPart, AiReasoningPart, AiChatMessage } from '@liveblocks/core';
3
3
  import * as react from 'react';
4
4
  import { ComponentProps, ReactNode, ComponentPropsWithoutRef, ElementType, ComponentType, Ref, RefCallback, FormEvent } from 'react';
5
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
6
- export { TooltipProvider } from '@radix-ui/react-tooltip';
5
+ import { Tooltip as Tooltip$1 } from 'radix-ui';
7
6
 
8
7
  type AvatarProps = ComponentProps<"div"> & {
9
8
  icon?: ReactNode;
@@ -345,7 +344,7 @@ interface ProseProps extends ComponentProps<"div"> {
345
344
  */
346
345
  declare function Prose({ content, partial, components, className, ...props }: ProseProps): react_jsx_runtime.JSX.Element;
347
346
 
348
- interface TooltipProps extends Pick<TooltipPrimitive.TooltipTriggerProps, "children">, Omit<TooltipPrimitive.TooltipContentProps, "content"> {
347
+ interface TooltipProps extends Pick<Tooltip$1.TooltipTriggerProps, "children">, Omit<Tooltip$1.TooltipContentProps, "content"> {
349
348
  content: ReactNode;
350
349
  multiline?: boolean;
351
350
  }
@@ -354,6 +353,7 @@ interface ShortcutTooltipProps extends TooltipProps {
354
353
  }
355
354
  declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLButtonElement>>;
356
355
  declare const ShortcutTooltip: react.ForwardRefExoticComponent<ShortcutTooltipProps & react.RefAttributes<HTMLButtonElement>>;
356
+ declare const TooltipProvider: react.FC<Tooltip$1.TooltipProviderProps>;
357
357
 
358
358
  interface UserProps extends ComponentProps<"span"> {
359
359
  /**
@@ -718,4 +718,4 @@ declare namespace index {
718
718
  };
719
719
  }
720
720
 
721
- export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs };
721
+ export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TooltipProvider, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs };
@@ -2,8 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Relax, AiTextPart, AiReasoningPart, AiChatMessage } from '@liveblocks/core';
3
3
  import * as react from 'react';
4
4
  import { ComponentProps, ReactNode, ComponentPropsWithoutRef, ElementType, ComponentType, Ref, RefCallback, FormEvent } from 'react';
5
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
6
- export { TooltipProvider } from '@radix-ui/react-tooltip';
5
+ import { Tooltip as Tooltip$1 } from 'radix-ui';
7
6
 
8
7
  type AvatarProps = ComponentProps<"div"> & {
9
8
  icon?: ReactNode;
@@ -345,7 +344,7 @@ interface ProseProps extends ComponentProps<"div"> {
345
344
  */
346
345
  declare function Prose({ content, partial, components, className, ...props }: ProseProps): react_jsx_runtime.JSX.Element;
347
346
 
348
- interface TooltipProps extends Pick<TooltipPrimitive.TooltipTriggerProps, "children">, Omit<TooltipPrimitive.TooltipContentProps, "content"> {
347
+ interface TooltipProps extends Pick<Tooltip$1.TooltipTriggerProps, "children">, Omit<Tooltip$1.TooltipContentProps, "content"> {
349
348
  content: ReactNode;
350
349
  multiline?: boolean;
351
350
  }
@@ -354,6 +353,7 @@ interface ShortcutTooltipProps extends TooltipProps {
354
353
  }
355
354
  declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLButtonElement>>;
356
355
  declare const ShortcutTooltip: react.ForwardRefExoticComponent<ShortcutTooltipProps & react.RefAttributes<HTMLButtonElement>>;
356
+ declare const TooltipProvider: react.FC<Tooltip$1.TooltipProviderProps>;
357
357
 
358
358
  interface UserProps extends ComponentProps<"span"> {
359
359
  /**
@@ -718,4 +718,4 @@ declare namespace index {
718
718
  };
719
719
  }
720
720
 
721
- export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs };
721
+ export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TooltipProvider, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs };
@@ -4,7 +4,7 @@ export { Group } from '../components/internal/Group.js';
4
4
  export { GroupDescription } from '../components/internal/GroupDescription.js';
5
5
  export { List } from '../components/internal/List.js';
6
6
  export { Prose } from '../components/internal/Prose.js';
7
- export { ShortcutTooltip, Tooltip } from '../components/internal/Tooltip.js';
7
+ export { ShortcutTooltip, Tooltip, TooltipProvider } from '../components/internal/Tooltip.js';
8
8
  export { User } from '../components/internal/User.js';
9
9
  export { useLiveblocksUiConfig } from '../config.js';
10
10
  import '../icons/index.js';
@@ -21,7 +21,6 @@ export { index$1 as AiMessage };
21
21
  import * as index$2 from '../primitives/Collapsible/index.js';
22
22
  export { index$2 as Collapsible };
23
23
  export { Markdown } from '../primitives/Markdown.js';
24
- export { TooltipProvider } from '@radix-ui/react-tooltip';
25
24
  export { ArrowCornerDownRightIcon } from '../icons/ArrowCornerDownRight.js';
26
25
  export { ArrowCornerUpRightIcon } from '../icons/ArrowCornerUpRight.js';
27
26
  export { ArrowDownIcon } from '../icons/ArrowDown.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,115 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react$1 = require('@liveblocks/react');
6
+ var react = require('react');
7
+ var constants = require('../constants.cjs');
8
+ var overrides = require('../overrides.cjs');
9
+ var cn = require('../utils/cn.cjs');
10
+ var Avatar = require('./internal/Avatar.cjs');
11
+ var Tooltip = require('./internal/Tooltip.cjs');
12
+ var User = require('./internal/User.cjs');
13
+
14
+
15
+ const AvatarStack = react.forwardRef(
16
+ ({
17
+ userIds: additionalUserIds = [],
18
+ max = 3,
19
+ overrides: overrides$1,
20
+ className,
21
+ style,
22
+ ...props
23
+ }, forwardedRef) => {
24
+ const $ = overrides.useOverrides(overrides$1);
25
+ const otherIds = react$1.useOthers((others) => others.map((user) => user.id));
26
+ const selfId = react$1.useSelf((self) => self.id);
27
+ const userIds = react.useMemo(() => {
28
+ const uniqueUserIds = /* @__PURE__ */ new Set([
29
+ selfId,
30
+ ...otherIds,
31
+ ...additionalUserIds
32
+ ]);
33
+ return [...uniqueUserIds];
34
+ }, [selfId, otherIds, additionalUserIds]);
35
+ const maxAvatars = Math.max(1, Math.floor(max));
36
+ const visibleUserIds = userIds.slice(0, maxAvatars);
37
+ const hiddenUserIds = userIds.slice(visibleUserIds.length);
38
+ const remainingUsersCount = hiddenUserIds.length;
39
+ const visibleItemsCount = visibleUserIds.length + Number(remainingUsersCount > 0);
40
+ if (userIds.length === 0) {
41
+ return null;
42
+ }
43
+ return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
44
+ "div",
45
+ {
46
+ className: cn.cn("lb-root lb-avatar-stack", className),
47
+ dir: $.dir,
48
+ style: {
49
+ "--lb-avatar-stack-count": visibleItemsCount - 1,
50
+ ...style
51
+ },
52
+ ...props,
53
+ ref: forwardedRef,
54
+ children: [
55
+ visibleUserIds.map((userId, index) => {
56
+ if (!userId) {
57
+ return null;
58
+ }
59
+ return /* @__PURE__ */ jsxRuntime.jsx(
60
+ Tooltip.Tooltip,
61
+ {
62
+ content: /* @__PURE__ */ jsxRuntime.jsx(User.User, { userId }),
63
+ sideOffset: constants.FLOATING_ELEMENT_SIDE_OFFSET,
64
+ collisionPadding: constants.FLOATING_ELEMENT_COLLISION_PADDING,
65
+ side: "top",
66
+ align: "center",
67
+ children: /* @__PURE__ */ jsxRuntime.jsx(
68
+ Avatar.Avatar,
69
+ {
70
+ userId,
71
+ className: "lb-avatar-stack-avatar",
72
+ style: { "--lb-avatar-stack-index": index }
73
+ }
74
+ )
75
+ },
76
+ userId
77
+ );
78
+ }),
79
+ remainingUsersCount > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
80
+ Tooltip.Tooltip,
81
+ {
82
+ content: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "lb-users-tooltip-list", children: hiddenUserIds.map(
83
+ (userId) => userId ? /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "lb-users-tooltip-list-item", children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(Avatar.Avatar, { userId }),
85
+ /* @__PURE__ */ jsxRuntime.jsx(User.User, { userId })
86
+ ] }, userId) : null
87
+ ) }),
88
+ sideOffset: constants.FLOATING_ELEMENT_SIDE_OFFSET,
89
+ collisionPadding: constants.FLOATING_ELEMENT_COLLISION_PADDING,
90
+ side: "top",
91
+ align: "center",
92
+ className: "lb-users-tooltip",
93
+ children: /* @__PURE__ */ jsxRuntime.jsx(
94
+ "div",
95
+ {
96
+ className: "lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more",
97
+ style: {
98
+ "--lb-avatar-stack-index": visibleUserIds.length
99
+ },
100
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "lb-avatar-fallback", children: [
101
+ "+",
102
+ remainingUsersCount
103
+ ] })
104
+ }
105
+ )
106
+ }
107
+ ) : null
108
+ ]
109
+ }
110
+ ) });
111
+ }
112
+ );
113
+
114
+ exports.AvatarStack = AvatarStack;
115
+ //# sourceMappingURL=AvatarStack.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarStack.cjs","sources":["../../src/components/AvatarStack.tsx"],"sourcesContent":["\"use client\";\n\nimport { useOthers, useSelf } from \"@liveblocks/react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\nimport { forwardRef, useMemo } from \"react\";\n\nimport {\n FLOATING_ELEMENT_COLLISION_PADDING,\n FLOATING_ELEMENT_SIDE_OFFSET,\n} from \"../constants\";\nimport type { GlobalOverrides } from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { cn } from \"../utils/cn\";\nimport { Avatar } from \"./internal/Avatar\";\nimport { Tooltip, TooltipProvider } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\nexport interface AvatarStackProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Optional additional user IDs to include in the stack.\n */\n userIds?: string[];\n\n /**\n * The maximum number of visible avatars.\n */\n max?: number;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides>;\n}\n\n/**\n * Displays a stack of avatars for the users currently present in the room.\n */\nexport const AvatarStack = forwardRef<HTMLDivElement, AvatarStackProps>(\n (\n {\n userIds: additionalUserIds = [],\n max = 3,\n overrides,\n className,\n style,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const otherIds = useOthers((others) => others.map((user) => user.id));\n const selfId = useSelf((self) => self.id);\n const userIds = useMemo(() => {\n const uniqueUserIds = new Set([\n selfId,\n ...otherIds,\n ...additionalUserIds,\n ]);\n\n return [...uniqueUserIds];\n }, [selfId, otherIds, additionalUserIds]);\n const maxAvatars = Math.max(1, Math.floor(max));\n const visibleUserIds = userIds.slice(0, maxAvatars);\n const hiddenUserIds = userIds.slice(visibleUserIds.length);\n const remainingUsersCount = hiddenUserIds.length;\n const visibleItemsCount =\n visibleUserIds.length + Number(remainingUsersCount > 0);\n\n if (userIds.length === 0) {\n return null;\n }\n\n return (\n <TooltipProvider>\n <div\n className={cn(\"lb-root lb-avatar-stack\", className)}\n dir={$.dir}\n style={\n {\n \"--lb-avatar-stack-count\": visibleItemsCount - 1,\n ...style,\n } as CSSProperties\n }\n {...props}\n ref={forwardedRef}\n >\n {visibleUserIds.map((userId, index) => {\n if (!userId) {\n return null;\n }\n\n return (\n <Tooltip\n key={userId}\n content={<User userId={userId} />}\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n >\n <Avatar\n userId={userId}\n className=\"lb-avatar-stack-avatar\"\n style={{ \"--lb-avatar-stack-index\": index } as CSSProperties}\n />\n </Tooltip>\n );\n })}\n {remainingUsersCount > 0 ? (\n <Tooltip\n content={\n <ul className=\"lb-users-tooltip-list\">\n {hiddenUserIds.map((userId) =>\n userId ? (\n <li key={userId} className=\"lb-users-tooltip-list-item\">\n <Avatar userId={userId} />\n <User userId={userId} />\n </li>\n ) : null\n )}\n </ul>\n }\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n className=\"lb-users-tooltip\"\n >\n <div\n className=\"lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more\"\n style={\n {\n \"--lb-avatar-stack-index\": visibleUserIds.length,\n } as CSSProperties\n }\n >\n <span className=\"lb-avatar-fallback\">\n +{remainingUsersCount}\n </span>\n </div>\n </Tooltip>\n ) : null}\n </div>\n </TooltipProvider>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAqCO;AAAoB;AAEvB;AACgC;AACxB;AACN;AACA;AACA;AACG;AAIL;AACA;AACA;AACA;AACE;AAA8B;AAC5B;AACG;AACA;AAGL;AAAwB;AAE1B;AACA;AACA;AACA;AACA;AAGA;AACE;AAAO;AAGT;AAEI;AAAC;AAAA;AACmD;AAC3C;AAEL;AACiD;AAC5C;AACL;AAEE;AACC;AAEJ;AACC;AACE;AAAO;AAGT;AACE;AAAC;AAAA;AAEgC;AACnB;AACM;AACb;AACC;AAEN;AAAC;AAAA;AACC;AACU;AACgC;AAAA;AAC5C;AAAA;AAXK;AAYP;AAEH;AAEC;AAAC;AAAA;AAGoB;AAGT;AAAwB;AACF;AAEtB;AAER;AAEU;AACM;AACb;AACC;AACI;AAEV;AAAC;AAAA;AACW;AAER;AAC4C;AAC5C;AAGmC;AAAA;AACjC;AACJ;AAAA;AACF;AAAA;AAEA;AAAA;AAAA;AAER;AAGN;;"}
@@ -0,0 +1,113 @@
1
+ "use client";
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { useOthers, useSelf } from '@liveblocks/react';
4
+ import { forwardRef, useMemo } from 'react';
5
+ import { FLOATING_ELEMENT_SIDE_OFFSET, FLOATING_ELEMENT_COLLISION_PADDING } from '../constants.js';
6
+ import { useOverrides } from '../overrides.js';
7
+ import { cn } from '../utils/cn.js';
8
+ import { Avatar } from './internal/Avatar.js';
9
+ import { TooltipProvider, Tooltip } from './internal/Tooltip.js';
10
+ import { User } from './internal/User.js';
11
+
12
+
13
+ const AvatarStack = forwardRef(
14
+ ({
15
+ userIds: additionalUserIds = [],
16
+ max = 3,
17
+ overrides,
18
+ className,
19
+ style,
20
+ ...props
21
+ }, forwardedRef) => {
22
+ const $ = useOverrides(overrides);
23
+ const otherIds = useOthers((others) => others.map((user) => user.id));
24
+ const selfId = useSelf((self) => self.id);
25
+ const userIds = useMemo(() => {
26
+ const uniqueUserIds = /* @__PURE__ */ new Set([
27
+ selfId,
28
+ ...otherIds,
29
+ ...additionalUserIds
30
+ ]);
31
+ return [...uniqueUserIds];
32
+ }, [selfId, otherIds, additionalUserIds]);
33
+ const maxAvatars = Math.max(1, Math.floor(max));
34
+ const visibleUserIds = userIds.slice(0, maxAvatars);
35
+ const hiddenUserIds = userIds.slice(visibleUserIds.length);
36
+ const remainingUsersCount = hiddenUserIds.length;
37
+ const visibleItemsCount = visibleUserIds.length + Number(remainingUsersCount > 0);
38
+ if (userIds.length === 0) {
39
+ return null;
40
+ }
41
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(
42
+ "div",
43
+ {
44
+ className: cn("lb-root lb-avatar-stack", className),
45
+ dir: $.dir,
46
+ style: {
47
+ "--lb-avatar-stack-count": visibleItemsCount - 1,
48
+ ...style
49
+ },
50
+ ...props,
51
+ ref: forwardedRef,
52
+ children: [
53
+ visibleUserIds.map((userId, index) => {
54
+ if (!userId) {
55
+ return null;
56
+ }
57
+ return /* @__PURE__ */ jsx(
58
+ Tooltip,
59
+ {
60
+ content: /* @__PURE__ */ jsx(User, { userId }),
61
+ sideOffset: FLOATING_ELEMENT_SIDE_OFFSET,
62
+ collisionPadding: FLOATING_ELEMENT_COLLISION_PADDING,
63
+ side: "top",
64
+ align: "center",
65
+ children: /* @__PURE__ */ jsx(
66
+ Avatar,
67
+ {
68
+ userId,
69
+ className: "lb-avatar-stack-avatar",
70
+ style: { "--lb-avatar-stack-index": index }
71
+ }
72
+ )
73
+ },
74
+ userId
75
+ );
76
+ }),
77
+ remainingUsersCount > 0 ? /* @__PURE__ */ jsx(
78
+ Tooltip,
79
+ {
80
+ content: /* @__PURE__ */ jsx("ul", { className: "lb-users-tooltip-list", children: hiddenUserIds.map(
81
+ (userId) => userId ? /* @__PURE__ */ jsxs("li", { className: "lb-users-tooltip-list-item", children: [
82
+ /* @__PURE__ */ jsx(Avatar, { userId }),
83
+ /* @__PURE__ */ jsx(User, { userId })
84
+ ] }, userId) : null
85
+ ) }),
86
+ sideOffset: FLOATING_ELEMENT_SIDE_OFFSET,
87
+ collisionPadding: FLOATING_ELEMENT_COLLISION_PADDING,
88
+ side: "top",
89
+ align: "center",
90
+ className: "lb-users-tooltip",
91
+ children: /* @__PURE__ */ jsx(
92
+ "div",
93
+ {
94
+ className: "lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more",
95
+ style: {
96
+ "--lb-avatar-stack-index": visibleUserIds.length
97
+ },
98
+ children: /* @__PURE__ */ jsxs("span", { className: "lb-avatar-fallback", children: [
99
+ "+",
100
+ remainingUsersCount
101
+ ] })
102
+ }
103
+ )
104
+ }
105
+ ) : null
106
+ ]
107
+ }
108
+ ) });
109
+ }
110
+ );
111
+
112
+ export { AvatarStack };
113
+ //# sourceMappingURL=AvatarStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarStack.js","sources":["../../src/components/AvatarStack.tsx"],"sourcesContent":["\"use client\";\n\nimport { useOthers, useSelf } from \"@liveblocks/react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\nimport { forwardRef, useMemo } from \"react\";\n\nimport {\n FLOATING_ELEMENT_COLLISION_PADDING,\n FLOATING_ELEMENT_SIDE_OFFSET,\n} from \"../constants\";\nimport type { GlobalOverrides } from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { cn } from \"../utils/cn\";\nimport { Avatar } from \"./internal/Avatar\";\nimport { Tooltip, TooltipProvider } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\nexport interface AvatarStackProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Optional additional user IDs to include in the stack.\n */\n userIds?: string[];\n\n /**\n * The maximum number of visible avatars.\n */\n max?: number;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides>;\n}\n\n/**\n * Displays a stack of avatars for the users currently present in the room.\n */\nexport const AvatarStack = forwardRef<HTMLDivElement, AvatarStackProps>(\n (\n {\n userIds: additionalUserIds = [],\n max = 3,\n overrides,\n className,\n style,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const otherIds = useOthers((others) => others.map((user) => user.id));\n const selfId = useSelf((self) => self.id);\n const userIds = useMemo(() => {\n const uniqueUserIds = new Set([\n selfId,\n ...otherIds,\n ...additionalUserIds,\n ]);\n\n return [...uniqueUserIds];\n }, [selfId, otherIds, additionalUserIds]);\n const maxAvatars = Math.max(1, Math.floor(max));\n const visibleUserIds = userIds.slice(0, maxAvatars);\n const hiddenUserIds = userIds.slice(visibleUserIds.length);\n const remainingUsersCount = hiddenUserIds.length;\n const visibleItemsCount =\n visibleUserIds.length + Number(remainingUsersCount > 0);\n\n if (userIds.length === 0) {\n return null;\n }\n\n return (\n <TooltipProvider>\n <div\n className={cn(\"lb-root lb-avatar-stack\", className)}\n dir={$.dir}\n style={\n {\n \"--lb-avatar-stack-count\": visibleItemsCount - 1,\n ...style,\n } as CSSProperties\n }\n {...props}\n ref={forwardedRef}\n >\n {visibleUserIds.map((userId, index) => {\n if (!userId) {\n return null;\n }\n\n return (\n <Tooltip\n key={userId}\n content={<User userId={userId} />}\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n >\n <Avatar\n userId={userId}\n className=\"lb-avatar-stack-avatar\"\n style={{ \"--lb-avatar-stack-index\": index } as CSSProperties}\n />\n </Tooltip>\n );\n })}\n {remainingUsersCount > 0 ? (\n <Tooltip\n content={\n <ul className=\"lb-users-tooltip-list\">\n {hiddenUserIds.map((userId) =>\n userId ? (\n <li key={userId} className=\"lb-users-tooltip-list-item\">\n <Avatar userId={userId} />\n <User userId={userId} />\n </li>\n ) : null\n )}\n </ul>\n }\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n className=\"lb-users-tooltip\"\n >\n <div\n className=\"lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more\"\n style={\n {\n \"--lb-avatar-stack-index\": visibleUserIds.length,\n } as CSSProperties\n }\n >\n <span className=\"lb-avatar-fallback\">\n +{remainingUsersCount}\n </span>\n </div>\n </Tooltip>\n ) : null}\n </div>\n </TooltipProvider>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;AAqCO;AAAoB;AAEvB;AACgC;AACxB;AACN;AACA;AACA;AACG;AAIL;AACA;AACA;AACA;AACE;AAA8B;AAC5B;AACG;AACA;AAGL;AAAwB;AAE1B;AACA;AACA;AACA;AACA;AAGA;AACE;AAAO;AAGT;AAEI;AAAC;AAAA;AACmD;AAC3C;AAEL;AACiD;AAC5C;AACL;AAEE;AACC;AAEJ;AACC;AACE;AAAO;AAGT;AACE;AAAC;AAAA;AAEgC;AACnB;AACM;AACb;AACC;AAEN;AAAC;AAAA;AACC;AACU;AACgC;AAAA;AAC5C;AAAA;AAXK;AAYP;AAEH;AAEC;AAAC;AAAA;AAGoB;AAGT;AAAwB;AACF;AAEtB;AAER;AAEU;AACM;AACb;AACC;AACI;AAEV;AAAC;AAAA;AACW;AAER;AAC4C;AAC5C;AAGmC;AAAA;AACjC;AACJ;AAAA;AACF;AAAA;AAEA;AAAA;AAAA;AAER;AAGN;;"}
@@ -4,7 +4,7 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var core = require('@liveblocks/core');
6
6
  var _private = require('@liveblocks/react/_private');
7
- var TogglePrimitive = require('@radix-ui/react-toggle');
7
+ var radixUi = require('radix-ui');
8
8
  var react = require('react');
9
9
  var components = require('../components.cjs');
10
10
  var Check = require('../icons/Check.cjs');
@@ -35,28 +35,6 @@ var Group = require('./internal/Group.cjs');
35
35
  var List = require('./internal/List.cjs');
36
36
  var Tooltip = require('./internal/Tooltip.cjs');
37
37
  var User = require('./internal/User.cjs');
38
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
39
- var PopoverPrimitive = require('@radix-ui/react-popover');
40
- var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
41
-
42
- function _interopNamespaceDefault(e) {
43
- var n = Object.create(null);
44
- if (e) {
45
- Object.keys(e).forEach(function (k) {
46
- if (k !== 'default') {
47
- var d = Object.getOwnPropertyDescriptor(e, k);
48
- Object.defineProperty(n, k, d.get ? d : {
49
- enumerable: true,
50
- get: function () { return e[k]; }
51
- });
52
- }
53
- });
54
- }
55
- n.default = e;
56
- return Object.freeze(n);
57
- }
58
-
59
- var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TogglePrimitive);
60
38
 
61
39
 
62
40
  const REACTIONS_TRUNCATE = 5;
@@ -206,7 +184,7 @@ const CommentReaction = react.forwardRef(({ comment, reaction, overrides: overri
206
184
  multiline: true,
207
185
  className: "lb-comment-reaction-tooltip",
208
186
  children: /* @__PURE__ */ jsxRuntime.jsx(
209
- TogglePrimitive__namespace.Root,
187
+ radixUi.Toggle.Root,
210
188
  {
211
189
  asChild: true,
212
190
  pressed: isActive,
@@ -402,6 +380,7 @@ const Comment = Object.assign(
402
380
  autoMarkReadThreadId,
403
381
  ...props
404
382
  }, forwardedRef) => {
383
+ const bodyId = `${comment.id}:body`;
405
384
  const ref = react.useRef(null);
406
385
  const mergedRefs = useRefs.useRefs(forwardedRef, ref);
407
386
  const currentUserId = shared.useCurrentUserId();
@@ -514,7 +493,7 @@ const Comment = Object.assign(
514
493
  defaultDropdownItems,
515
494
  dropdownItems
516
495
  ] });
517
- return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(components.ComponentsProvider, { components: components$1, children: [
496
+ return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(components.ComponentsProvider, { components: components$1, children: [
518
497
  autoMarkReadThreadId && /* @__PURE__ */ jsxRuntime.jsx(
519
498
  AutoMarkReadThreadIdHandler,
520
499
  {
@@ -526,6 +505,7 @@ const Comment = Object.assign(
526
505
  /* @__PURE__ */ jsxRuntime.jsxs(
527
506
  "div",
528
507
  {
508
+ role: "article",
529
509
  id: comment.id,
530
510
  className: cn.cn(
531
511
  "lb-root lb-comment",
@@ -537,6 +517,7 @@ const Comment = Object.assign(
537
517
  "data-deleted": !comment.body ? "" : void 0,
538
518
  "data-editing": isEditing ? "" : void 0,
539
519
  "data-target": isTarget ? "" : void 0,
520
+ "aria-labelledby": bodyId,
540
521
  dir: $.dir,
541
522
  ...props,
542
523
  ref: mergedRefs,
@@ -583,7 +564,7 @@ const Comment = Object.assign(
583
564
  {
584
565
  onEmojiSelect: handleReactionSelect,
585
566
  onOpenChange: setReactionActionOpen,
586
- children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
567
+ children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPickerTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
587
568
  Button.Button,
588
569
  {
589
570
  className: "lb-comment-action",
@@ -601,7 +582,7 @@ const Comment = Object.assign(
601
582
  onOpenChange: setMoreActionOpen,
602
583
  align: "end",
603
584
  content: dropdownContent,
604
- children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_MORE, children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
585
+ children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_MORE, children: /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
605
586
  Button.Button,
606
587
  {
607
588
  className: "lb-comment-action",
@@ -670,6 +651,7 @@ const Comment = Object.assign(
670
651
  index.Body,
671
652
  {
672
653
  className: "lb-comment-body",
654
+ id: bodyId,
673
655
  body: comment.body,
674
656
  components: {
675
657
  Mention: ({ mention }) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -717,7 +699,7 @@ const Comment = Object.assign(
717
699
  },
718
700
  reaction.emoji
719
701
  )),
720
- canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, { onEmojiSelect: handleReactionSelect, children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
702
+ canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, { onEmojiSelect: handleReactionSelect, children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPickerTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
721
703
  Button.Button,
722
704
  {
723
705
  className: "lb-comment-reaction lb-comment-reaction-add",