@liveblocks/react-ui 2.25.0-aiprivatebeta8 → 2.25.0-aiprivatebeta9

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 (113) hide show
  1. package/dist/_private/index.cjs +10 -12
  2. package/dist/_private/index.cjs.map +1 -1
  3. package/dist/_private/index.d.cts +141 -112
  4. package/dist/_private/index.d.ts +141 -112
  5. package/dist/_private/index.js +8 -5
  6. package/dist/_private/index.js.map +1 -1
  7. package/dist/components/AiChat.cjs +74 -106
  8. package/dist/components/AiChat.cjs.map +1 -1
  9. package/dist/components/AiChat.js +75 -107
  10. package/dist/components/AiChat.js.map +1 -1
  11. package/dist/components/AiTool.cjs +164 -0
  12. package/dist/components/AiTool.cjs.map +1 -0
  13. package/dist/components/AiTool.js +162 -0
  14. package/dist/components/AiTool.js.map +1 -0
  15. package/dist/components/Comment.cjs +5 -3
  16. package/dist/components/Comment.cjs.map +1 -1
  17. package/dist/components/Comment.js +6 -4
  18. package/dist/components/Comment.js.map +1 -1
  19. package/dist/components/InboxNotificationList.cjs +11 -3
  20. package/dist/components/InboxNotificationList.cjs.map +1 -1
  21. package/dist/components/InboxNotificationList.js +12 -4
  22. package/dist/components/InboxNotificationList.js.map +1 -1
  23. package/dist/components/internal/AiChatAssistantMessage.cjs +43 -199
  24. package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
  25. package/dist/components/internal/AiChatAssistantMessage.js +44 -200
  26. package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
  27. package/dist/components/internal/AiChatComposer.cjs +1 -1
  28. package/dist/components/internal/AiChatComposer.cjs.map +1 -1
  29. package/dist/components/internal/AiChatComposer.js +1 -1
  30. package/dist/components/internal/AiChatComposer.js.map +1 -1
  31. package/dist/components/internal/AiChatUserMessage.cjs +17 -10
  32. package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
  33. package/dist/components/internal/AiChatUserMessage.js +17 -10
  34. package/dist/components/internal/AiChatUserMessage.js.map +1 -1
  35. package/dist/components/internal/Button.cjs.map +1 -1
  36. package/dist/components/internal/Button.js.map +1 -1
  37. package/dist/components/internal/CodeBlock.cjs +72 -0
  38. package/dist/components/internal/CodeBlock.cjs.map +1 -0
  39. package/dist/components/internal/CodeBlock.js +70 -0
  40. package/dist/components/internal/CodeBlock.js.map +1 -0
  41. package/dist/components/internal/Emoji.cjs +12 -4
  42. package/dist/components/internal/Emoji.cjs.map +1 -1
  43. package/dist/components/internal/Emoji.js +12 -4
  44. package/dist/components/internal/Emoji.js.map +1 -1
  45. package/dist/components/internal/Prose.cjs +37 -0
  46. package/dist/components/internal/Prose.cjs.map +1 -0
  47. package/dist/components/internal/Prose.js +35 -0
  48. package/dist/components/internal/Prose.js.map +1 -0
  49. package/dist/index.cjs +2 -2
  50. package/dist/index.cjs.map +1 -1
  51. package/dist/index.d.cts +50 -9
  52. package/dist/index.d.ts +50 -9
  53. package/dist/index.js +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/overrides.cjs +2 -4
  56. package/dist/overrides.cjs.map +1 -1
  57. package/dist/overrides.js +2 -4
  58. package/dist/overrides.js.map +1 -1
  59. package/dist/primitives/AiMessage/contexts.cjs +18 -0
  60. package/dist/primitives/AiMessage/contexts.cjs.map +1 -0
  61. package/dist/primitives/AiMessage/contexts.js +15 -0
  62. package/dist/primitives/AiMessage/contexts.js.map +1 -0
  63. package/dist/primitives/AiMessage/index.cjs +133 -0
  64. package/dist/primitives/AiMessage/index.cjs.map +1 -0
  65. package/dist/primitives/AiMessage/index.js +131 -0
  66. package/dist/primitives/AiMessage/index.js.map +1 -0
  67. package/dist/primitives/{internal/Collapsible → Collapsible}/index.cjs +39 -17
  68. package/dist/primitives/Collapsible/index.cjs.map +1 -0
  69. package/dist/primitives/{internal/Collapsible → Collapsible}/index.js +37 -15
  70. package/dist/primitives/Collapsible/index.js.map +1 -0
  71. package/dist/primitives/{internal/Markdown.cjs → Markdown.cjs} +99 -63
  72. package/dist/primitives/Markdown.cjs.map +1 -0
  73. package/dist/primitives/{internal/Markdown.js → Markdown.js} +100 -63
  74. package/dist/primitives/Markdown.js.map +1 -0
  75. package/dist/primitives/index.cjs +4 -6
  76. package/dist/primitives/index.cjs.map +1 -1
  77. package/dist/primitives/index.d.cts +2 -75
  78. package/dist/primitives/index.d.ts +2 -75
  79. package/dist/primitives/index.js +4 -6
  80. package/dist/primitives/index.js.map +1 -1
  81. package/dist/utils/ErrorBoundary.cjs +48 -0
  82. package/dist/utils/ErrorBoundary.cjs.map +1 -0
  83. package/dist/utils/ErrorBoundary.js +45 -0
  84. package/dist/utils/ErrorBoundary.js.map +1 -0
  85. package/dist/utils/use-visible.cjs +63 -45
  86. package/dist/utils/use-visible.cjs.map +1 -1
  87. package/dist/utils/use-visible.js +64 -46
  88. package/dist/utils/use-visible.js.map +1 -1
  89. package/dist/version.cjs +1 -1
  90. package/dist/version.js +1 -1
  91. package/package.json +4 -4
  92. package/src/styles/constants.css +1 -1
  93. package/src/styles/dark/index.css +7 -3
  94. package/src/styles/index.css +555 -253
  95. package/src/styles/utils.css +1 -1
  96. package/styles/dark/attributes.css +1 -1
  97. package/styles/dark/attributes.css.map +1 -1
  98. package/styles/dark/media-query.css +1 -1
  99. package/styles/dark/media-query.css.map +1 -1
  100. package/styles.css +1 -1
  101. package/styles.css.map +1 -1
  102. package/dist/components/AiToolDebugger.cjs +0 -74
  103. package/dist/components/AiToolDebugger.cjs.map +0 -1
  104. package/dist/components/AiToolDebugger.js +0 -72
  105. package/dist/components/AiToolDebugger.js.map +0 -1
  106. package/dist/primitives/internal/Collapsible/index.cjs.map +0 -1
  107. package/dist/primitives/internal/Collapsible/index.js.map +0 -1
  108. package/dist/primitives/internal/Emoji.cjs +0 -32
  109. package/dist/primitives/internal/Emoji.cjs.map +0 -1
  110. package/dist/primitives/internal/Emoji.js +0 -30
  111. package/dist/primitives/internal/Emoji.js.map +0 -1
  112. package/dist/primitives/internal/Markdown.cjs.map +0 -1
  113. package/dist/primitives/internal/Markdown.js.map +0 -1
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var components = require('../components.cjs');
4
- var AiChatAssistantMessage = require('../components/internal/AiChatAssistantMessage.cjs');
5
- var AiChatComposer = require('../components/internal/AiChatComposer.cjs');
6
- var AiChatUserMessage = require('../components/internal/AiChatUserMessage.cjs');
7
3
  var Button = require('../components/internal/Button.cjs');
8
4
  var List = require('../components/internal/List.cjs');
5
+ var Prose = require('../components/internal/Prose.cjs');
9
6
  var Tooltip = require('../components/internal/Tooltip.cjs');
10
7
  var User = require('../components/internal/User.cjs');
11
8
  require('../icons/index.cjs');
12
- var index = require('../primitives/AiChatComposer/index.cjs');
13
9
  var capitalize = require('../utils/capitalize.cjs');
14
10
  var useInitial = require('../utils/use-initial.cjs');
15
11
  var useRefs = require('../utils/use-refs.cjs');
12
+ var index = require('../primitives/AiChatComposer/index.cjs');
13
+ var index$1 = require('../primitives/AiMessage/index.cjs');
14
+ var index$2 = require('../primitives/Collapsible/index.cjs');
15
+ var Markdown = require('../primitives/Markdown.cjs');
16
16
  var TooltipPrimitive = require('@radix-ui/react-tooltip');
17
17
  var ArrowCornerDownRight = require('../icons/ArrowCornerDownRight.cjs');
18
18
  var ArrowCornerUpRight = require('../icons/ArrowCornerUpRight.cjs');
@@ -67,22 +67,20 @@ var Warning = require('../icons/Warning.cjs');
67
67
 
68
68
 
69
69
 
70
- exports.useComponents = components.useComponents;
71
- exports.AiChatAssistantMessage = AiChatAssistantMessage.AiChatAssistantMessage;
72
- exports.AiChatComposer = AiChatComposer.AiChatComposer;
73
- exports.AiChatUserMessage = AiChatUserMessage.AiChatUserMessage;
74
70
  exports.Button = Button.Button;
75
71
  exports.SelectButton = Button.SelectButton;
76
72
  exports.List = List.List;
73
+ exports.Prose = Prose.Prose;
77
74
  exports.ShortcutTooltip = Tooltip.ShortcutTooltip;
78
75
  exports.Tooltip = Tooltip.Tooltip;
79
76
  exports.User = User.User;
80
- exports.AiChatComposerEditor = index.AiChatComposerEditor;
81
- exports.AiChatComposerForm = index.AiChatComposerForm;
82
- exports.AiChatComposerSubmit = index.AiChatComposerSubmit;
83
77
  exports.capitalize = capitalize.capitalize;
84
78
  exports.useInitial = useInitial.useInitial;
85
79
  exports.useRefs = useRefs.useRefs;
80
+ exports.AiChatComposer = index;
81
+ exports.AiMessage = index$1;
82
+ exports.Collapsible = index$2;
83
+ exports.Markdown = Markdown.Markdown;
86
84
  Object.defineProperty(exports, 'TooltipProvider', {
87
85
  enumerable: true,
88
86
  get: function () { return TooltipPrimitive.TooltipProvider; }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,15 +1,18 @@
1
1
  import * as react from 'react';
2
- import { ComponentType, ComponentPropsWithoutRef, ElementType, ReactNode, ComponentProps, FormEvent, Ref, RefCallback } from 'react';
3
- import { UiAssistantMessage, CopilotId, UiUserMessage } from '@liveblocks/core';
2
+ import { ComponentProps, ReactNode, ElementType, ComponentPropsWithoutRef, Ref, RefCallback, FormEvent, ComponentType } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
5
5
  export { TooltipProvider } from '@radix-ui/react-tooltip';
6
- import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { AiTextPart, AiReasoningPart, AiChatMessage } from '@liveblocks/core';
7
7
 
8
- interface GlobalComponents {
9
- Anchor: ComponentType<ComponentPropsWithoutRef<"a">> | "a";
8
+ interface ButtonProps extends ComponentProps<"button"> {
9
+ variant?: "default" | "toolbar" | "outline" | "primary" | "secondary" | "destructive";
10
+ size?: "default" | "large";
11
+ disableable?: boolean;
12
+ icon?: ReactNode;
10
13
  }
11
- type Components = GlobalComponents;
12
- declare function useComponents(components?: Partial<Components>): Components;
14
+ declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
15
+ declare const SelectButton: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
13
16
 
14
17
  type SlotProp = {
15
18
  /**
@@ -19,103 +22,6 @@ type SlotProp = {
19
22
  };
20
23
  type ComponentPropsWithSlot<TElement extends ElementType<any>> = ComponentPropsWithoutRef<TElement> & SlotProp;
21
24
 
22
- interface GlobalOverrides {
23
- USER_SELF: string;
24
- USER_UNKNOWN: string;
25
- LIST_REMAINING: (count: number) => string;
26
- LIST_REMAINING_USERS: (count: number) => string;
27
- LIST_REMAINING_COMMENTS: (count: number) => string;
28
- EMOJI_PICKER_SEARCH_PLACEHOLDER: string;
29
- EMOJI_PICKER_EMPTY: ReactNode;
30
- EMOJI_PICKER_ERROR: (error: Error) => ReactNode;
31
- EMOJI_PICKER_CHANGE_SKIN_TONE: string;
32
- ATTACHMENT_TOO_LARGE: (maxSize?: string) => string;
33
- ATTACHMENT_ERROR: (error: Error) => string;
34
- }
35
- interface AiChatComposerOverrides {
36
- AI_CHAT_COMPOSER_PLACEHOLDER: string;
37
- AI_CHAT_COMPOSER_SEND: string;
38
- AI_CHAT_COMPOSER_ABORT: string;
39
- }
40
- interface AiChatMessageOverrides {
41
- AI_CHAT_MESSAGE_DELETED: string;
42
- AI_CHAT_MESSAGE_THINKING: string;
43
- }
44
-
45
- interface AiChatAssistantMessageProps extends ComponentProps<"div"> {
46
- /**
47
- * The message to display.
48
- */
49
- message: UiAssistantMessage;
50
- /**
51
- * Override the component's strings.
52
- */
53
- overrides?: Partial<GlobalOverrides & AiChatMessageOverrides>;
54
- /**
55
- * Override the component's components.
56
- */
57
- components?: Partial<GlobalComponents>;
58
- }
59
- declare const AiChatAssistantMessage: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AiChatAssistantMessageProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
60
-
61
- interface AiChatComposerProps extends ComponentProps<"form"> {
62
- /**
63
- * The composer's initial value.
64
- */
65
- defaultValue?: string;
66
- /**
67
- * The event handler called when a chat message is submitted.
68
- */
69
- onComposerSubmit?: (message: {
70
- /**
71
- * The submitted message text.
72
- */
73
- text: string;
74
- }, event: FormEvent<HTMLFormElement>) => void;
75
- /**
76
- * Whether the composer is disabled.
77
- */
78
- disabled?: boolean;
79
- /**
80
- * Whether to focus the editor on mount.
81
- */
82
- autoFocus?: boolean;
83
- /**
84
- * Override the component's strings.
85
- */
86
- overrides?: Partial<GlobalOverrides & AiChatComposerOverrides>;
87
- /**
88
- * The id of the chat the composer belongs to.
89
- */
90
- chatId: string;
91
- /**
92
- * The id of the copilot to use to send the message.
93
- */
94
- copilotId?: CopilotId;
95
- }
96
- declare const AiChatComposer: react.ForwardRefExoticComponent<Omit<AiChatComposerProps, "ref"> & react.RefAttributes<HTMLFormElement>>;
97
-
98
- interface AiChatUserMessageProps extends ComponentProps<"div"> {
99
- /**
100
- * The message to display.
101
- */
102
- message: UiUserMessage;
103
- /**
104
- * Override the component's strings.
105
- */
106
- overrides?: Partial<GlobalOverrides>;
107
- }
108
- declare const AiChatUserMessage: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AiChatUserMessageProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
109
-
110
- interface ButtonProps extends ComponentProps<"button"> {
111
- variant?: "default" | "toolbar" | "outline" | "primary" | "secondary";
112
- size?: "default" | "large";
113
- disableable?: boolean;
114
- icon?: ReactNode;
115
- }
116
- declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
117
- declare const SelectButton: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
118
-
119
25
  interface ListProps extends ComponentPropsWithSlot<"span"> {
120
26
  values: ReactNode[];
121
27
  formatRemaining?: (amount: number) => string;
@@ -124,6 +30,15 @@ interface ListProps extends ComponentPropsWithSlot<"span"> {
124
30
  }
125
31
  declare const List: react.ForwardRefExoticComponent<ListProps & react.RefAttributes<HTMLSpanElement>>;
126
32
 
33
+ interface ProseProps extends ComponentProps<"div"> {
34
+ content: string;
35
+ }
36
+ /**
37
+ * This component renders Markdown content with `lb-prose`
38
+ * styles and custom components (code blocks, etc)
39
+ */
40
+ declare function Prose({ content, className, ...props }: ProseProps): react_jsx_runtime.JSX.Element;
41
+
127
42
  interface TooltipProps extends Pick<TooltipPrimitive.TooltipTriggerProps, "children">, Omit<TooltipPrimitive.TooltipContentProps, "content"> {
128
43
  content: ReactNode;
129
44
  multiline?: boolean;
@@ -246,6 +161,18 @@ declare function UndoIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.E
246
161
 
247
162
  declare function WarningIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
248
163
 
164
+ declare function capitalize(string: string): string;
165
+
166
+ /**
167
+ * "Freezes" a given value, so that it will return the same value/instance on
168
+ * each subsequent render. This can be used to freeze "initial" values for
169
+ * custom hooks, much like how `useState(initialState)` or
170
+ * `useRef(initialValue)` works.
171
+ */
172
+ declare function useInitial<T>(value: T | (() => T)): T;
173
+
174
+ declare function useRefs<T>(...refs: Ref<T>[]): RefCallback<T>;
175
+
249
176
  interface AiChatComposerFormProps extends ComponentPropsWithSlot<"form"> {
250
177
  /**
251
178
  * The event handler called when a chat message is submitted.
@@ -306,16 +233,118 @@ declare const AiChatComposerEditor: react.ForwardRefExoticComponent<AiChatCompos
306
233
  */
307
234
  declare const AiChatComposerSubmit: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
308
235
 
309
- declare function capitalize(string: string): string;
236
+ declare const index$2_AiChatComposerEditor: typeof AiChatComposerEditor;
237
+ declare const index$2_AiChatComposerForm: typeof AiChatComposerForm;
238
+ declare const index$2_AiChatComposerSubmit: typeof AiChatComposerSubmit;
239
+ declare namespace index$2 {
240
+ export {
241
+ index$2_AiChatComposerEditor as AiChatComposerEditor,
242
+ index$2_AiChatComposerForm as AiChatComposerForm,
243
+ index$2_AiChatComposerSubmit as AiChatComposerSubmit,
244
+ AiChatComposerEditor as Editor,
245
+ AiChatComposerForm as Form,
246
+ AiChatComposerSubmit as Submit,
247
+ };
248
+ }
249
+
250
+ type AiMessageContentTextPartProps = {
251
+ part: AiTextPart;
252
+ };
253
+ type AiMessageContentReasoningPartProps = {
254
+ part: AiReasoningPart;
255
+ };
256
+ interface AiMessageContentComponents {
257
+ /**
258
+ * The component used to display text parts.
259
+ */
260
+ TextPart: ComponentType<AiMessageContentTextPartProps>;
261
+ /**
262
+ * The component used to display reasoning parts.
263
+ */
264
+ ReasoningPart: ComponentType<AiMessageContentReasoningPartProps>;
265
+ }
266
+ interface AiMessageContentProps extends Omit<ComponentPropsWithSlot<"div">, "children"> {
267
+ /**
268
+ * The message contents to display.
269
+ */
270
+ message: AiChatMessage;
271
+ /**
272
+ * Optional overrides for the default components to render each part within
273
+ * the message content.
274
+ */
275
+ components?: Partial<AiMessageContentComponents>;
276
+ }
310
277
 
311
278
  /**
312
- * "Freezes" a given value, so that it will return the same value/instance on
313
- * each subsequent render. This can be used to freeze "initial" values for
314
- * custom hooks, much like how `useState(initialState)` or
315
- * `useRef(initialValue)` works.
279
+ * --------------------------------------------------------------------------
280
+ * @private The API for this component is not yet stable.
281
+ * --------------------------------------------------------------------------
282
+ *
283
+ * Primitive to help display an user or assistant message’s content, which is
284
+ * an array of parts.
285
+ *
286
+ * @example
287
+ * <AiMessage.Content message={message} components={{ TextPart }} />
316
288
  */
317
- declare function useInitial<T>(value: T | (() => T)): T;
289
+ declare const AiMessageContent: react.ForwardRefExoticComponent<AiMessageContentProps & react.RefAttributes<HTMLDivElement>>;
318
290
 
319
- declare function useRefs<T>(...refs: Ref<T>[]): RefCallback<T>;
291
+ declare namespace index$1 {
292
+ export {
293
+ AiMessageContent as Content,
294
+ };
295
+ }
296
+
297
+ interface RootProps extends ComponentPropsWithSlot<"div"> {
298
+ defaultOpen?: boolean;
299
+ open?: boolean;
300
+ onOpenChange?: (open: boolean) => void;
301
+ disabled?: boolean;
302
+ }
303
+
304
+ declare const CollapsibleRoot: react.ForwardRefExoticComponent<RootProps & react.RefAttributes<HTMLDivElement>>;
305
+ declare const CollapsibleTrigger: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
306
+ declare const CollapsibleContent: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & SlotProp & react.RefAttributes<HTMLDivElement>>;
307
+
308
+ declare namespace index {
309
+ export {
310
+ CollapsibleContent as Content,
311
+ CollapsibleRoot as Root,
312
+ CollapsibleTrigger as Trigger,
313
+ };
314
+ }
315
+
316
+ type MarkdownComponents = {
317
+ CodeBlock: ComponentType<MarkdownComponentsCodeBlockProps>;
318
+ Link: ComponentType<MarkdownComponentsLinkProps>;
319
+ Heading: ComponentType<MarkdownComponentsHeadingProps>;
320
+ Image: ComponentType<MarkdownComponentsImageProps>;
321
+ Blockquote: ComponentType<MarkdownComponentsBlockquoteProps>;
322
+ };
323
+ interface MarkdownComponentsBlockquoteProps {
324
+ children: ReactNode;
325
+ }
326
+ interface MarkdownComponentsImageProps {
327
+ src: string;
328
+ alt: string;
329
+ title?: string;
330
+ }
331
+ interface MarkdownComponentsHeadingProps {
332
+ level: 1 | 2 | 3 | 4 | 5 | 6;
333
+ children: ReactNode;
334
+ }
335
+ interface MarkdownComponentsLinkProps {
336
+ href: string;
337
+ title?: string;
338
+ children: ReactNode;
339
+ }
340
+ interface MarkdownComponentsCodeBlockProps {
341
+ code: string;
342
+ language?: string;
343
+ }
344
+ interface MarkdownProps extends Omit<ComponentPropsWithSlot<"div">, "children"> {
345
+ content: string;
346
+ components?: Partial<MarkdownComponents>;
347
+ }
348
+ declare const Markdown: react.ForwardRefExoticComponent<MarkdownProps & react.RefAttributes<HTMLDivElement>>;
320
349
 
321
- export { AiChatAssistantMessage, AiChatAssistantMessageProps, AiChatComposer, AiChatComposerEditor, AiChatComposerEditorProps, AiChatComposerForm, AiChatComposerFormProps, AiChatComposerProps, AiChatComposerSubmit, AiChatComposerSubmitProps, AiChatUserMessage, AiChatUserMessageProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, CommentIcon, CopyIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobalComponents, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, MentionIcon, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, useComponents, useInitial, useRefs };
350
+ export { index$2 as AiChatComposer, AiChatComposerEditorProps, AiChatComposerFormProps, AiChatComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsLinkProps, MarkdownProps, MentionIcon, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, useInitial, useRefs };
@@ -1,15 +1,18 @@
1
1
  import * as react from 'react';
2
- import { ComponentType, ComponentPropsWithoutRef, ElementType, ReactNode, ComponentProps, FormEvent, Ref, RefCallback } from 'react';
3
- import { UiAssistantMessage, CopilotId, UiUserMessage } from '@liveblocks/core';
2
+ import { ComponentProps, ReactNode, ElementType, ComponentPropsWithoutRef, Ref, RefCallback, FormEvent, ComponentType } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
5
5
  export { TooltipProvider } from '@radix-ui/react-tooltip';
6
- import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { AiTextPart, AiReasoningPart, AiChatMessage } from '@liveblocks/core';
7
7
 
8
- interface GlobalComponents {
9
- Anchor: ComponentType<ComponentPropsWithoutRef<"a">> | "a";
8
+ interface ButtonProps extends ComponentProps<"button"> {
9
+ variant?: "default" | "toolbar" | "outline" | "primary" | "secondary" | "destructive";
10
+ size?: "default" | "large";
11
+ disableable?: boolean;
12
+ icon?: ReactNode;
10
13
  }
11
- type Components = GlobalComponents;
12
- declare function useComponents(components?: Partial<Components>): Components;
14
+ declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
15
+ declare const SelectButton: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
13
16
 
14
17
  type SlotProp = {
15
18
  /**
@@ -19,103 +22,6 @@ type SlotProp = {
19
22
  };
20
23
  type ComponentPropsWithSlot<TElement extends ElementType<any>> = ComponentPropsWithoutRef<TElement> & SlotProp;
21
24
 
22
- interface GlobalOverrides {
23
- USER_SELF: string;
24
- USER_UNKNOWN: string;
25
- LIST_REMAINING: (count: number) => string;
26
- LIST_REMAINING_USERS: (count: number) => string;
27
- LIST_REMAINING_COMMENTS: (count: number) => string;
28
- EMOJI_PICKER_SEARCH_PLACEHOLDER: string;
29
- EMOJI_PICKER_EMPTY: ReactNode;
30
- EMOJI_PICKER_ERROR: (error: Error) => ReactNode;
31
- EMOJI_PICKER_CHANGE_SKIN_TONE: string;
32
- ATTACHMENT_TOO_LARGE: (maxSize?: string) => string;
33
- ATTACHMENT_ERROR: (error: Error) => string;
34
- }
35
- interface AiChatComposerOverrides {
36
- AI_CHAT_COMPOSER_PLACEHOLDER: string;
37
- AI_CHAT_COMPOSER_SEND: string;
38
- AI_CHAT_COMPOSER_ABORT: string;
39
- }
40
- interface AiChatMessageOverrides {
41
- AI_CHAT_MESSAGE_DELETED: string;
42
- AI_CHAT_MESSAGE_THINKING: string;
43
- }
44
-
45
- interface AiChatAssistantMessageProps extends ComponentProps<"div"> {
46
- /**
47
- * The message to display.
48
- */
49
- message: UiAssistantMessage;
50
- /**
51
- * Override the component's strings.
52
- */
53
- overrides?: Partial<GlobalOverrides & AiChatMessageOverrides>;
54
- /**
55
- * Override the component's components.
56
- */
57
- components?: Partial<GlobalComponents>;
58
- }
59
- declare const AiChatAssistantMessage: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AiChatAssistantMessageProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
60
-
61
- interface AiChatComposerProps extends ComponentProps<"form"> {
62
- /**
63
- * The composer's initial value.
64
- */
65
- defaultValue?: string;
66
- /**
67
- * The event handler called when a chat message is submitted.
68
- */
69
- onComposerSubmit?: (message: {
70
- /**
71
- * The submitted message text.
72
- */
73
- text: string;
74
- }, event: FormEvent<HTMLFormElement>) => void;
75
- /**
76
- * Whether the composer is disabled.
77
- */
78
- disabled?: boolean;
79
- /**
80
- * Whether to focus the editor on mount.
81
- */
82
- autoFocus?: boolean;
83
- /**
84
- * Override the component's strings.
85
- */
86
- overrides?: Partial<GlobalOverrides & AiChatComposerOverrides>;
87
- /**
88
- * The id of the chat the composer belongs to.
89
- */
90
- chatId: string;
91
- /**
92
- * The id of the copilot to use to send the message.
93
- */
94
- copilotId?: CopilotId;
95
- }
96
- declare const AiChatComposer: react.ForwardRefExoticComponent<Omit<AiChatComposerProps, "ref"> & react.RefAttributes<HTMLFormElement>>;
97
-
98
- interface AiChatUserMessageProps extends ComponentProps<"div"> {
99
- /**
100
- * The message to display.
101
- */
102
- message: UiUserMessage;
103
- /**
104
- * Override the component's strings.
105
- */
106
- overrides?: Partial<GlobalOverrides>;
107
- }
108
- declare const AiChatUserMessage: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AiChatUserMessageProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
109
-
110
- interface ButtonProps extends ComponentProps<"button"> {
111
- variant?: "default" | "toolbar" | "outline" | "primary" | "secondary";
112
- size?: "default" | "large";
113
- disableable?: boolean;
114
- icon?: ReactNode;
115
- }
116
- declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
117
- declare const SelectButton: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
118
-
119
25
  interface ListProps extends ComponentPropsWithSlot<"span"> {
120
26
  values: ReactNode[];
121
27
  formatRemaining?: (amount: number) => string;
@@ -124,6 +30,15 @@ interface ListProps extends ComponentPropsWithSlot<"span"> {
124
30
  }
125
31
  declare const List: react.ForwardRefExoticComponent<ListProps & react.RefAttributes<HTMLSpanElement>>;
126
32
 
33
+ interface ProseProps extends ComponentProps<"div"> {
34
+ content: string;
35
+ }
36
+ /**
37
+ * This component renders Markdown content with `lb-prose`
38
+ * styles and custom components (code blocks, etc)
39
+ */
40
+ declare function Prose({ content, className, ...props }: ProseProps): react_jsx_runtime.JSX.Element;
41
+
127
42
  interface TooltipProps extends Pick<TooltipPrimitive.TooltipTriggerProps, "children">, Omit<TooltipPrimitive.TooltipContentProps, "content"> {
128
43
  content: ReactNode;
129
44
  multiline?: boolean;
@@ -246,6 +161,18 @@ declare function UndoIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.E
246
161
 
247
162
  declare function WarningIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
248
163
 
164
+ declare function capitalize(string: string): string;
165
+
166
+ /**
167
+ * "Freezes" a given value, so that it will return the same value/instance on
168
+ * each subsequent render. This can be used to freeze "initial" values for
169
+ * custom hooks, much like how `useState(initialState)` or
170
+ * `useRef(initialValue)` works.
171
+ */
172
+ declare function useInitial<T>(value: T | (() => T)): T;
173
+
174
+ declare function useRefs<T>(...refs: Ref<T>[]): RefCallback<T>;
175
+
249
176
  interface AiChatComposerFormProps extends ComponentPropsWithSlot<"form"> {
250
177
  /**
251
178
  * The event handler called when a chat message is submitted.
@@ -306,16 +233,118 @@ declare const AiChatComposerEditor: react.ForwardRefExoticComponent<AiChatCompos
306
233
  */
307
234
  declare const AiChatComposerSubmit: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
308
235
 
309
- declare function capitalize(string: string): string;
236
+ declare const index$2_AiChatComposerEditor: typeof AiChatComposerEditor;
237
+ declare const index$2_AiChatComposerForm: typeof AiChatComposerForm;
238
+ declare const index$2_AiChatComposerSubmit: typeof AiChatComposerSubmit;
239
+ declare namespace index$2 {
240
+ export {
241
+ index$2_AiChatComposerEditor as AiChatComposerEditor,
242
+ index$2_AiChatComposerForm as AiChatComposerForm,
243
+ index$2_AiChatComposerSubmit as AiChatComposerSubmit,
244
+ AiChatComposerEditor as Editor,
245
+ AiChatComposerForm as Form,
246
+ AiChatComposerSubmit as Submit,
247
+ };
248
+ }
249
+
250
+ type AiMessageContentTextPartProps = {
251
+ part: AiTextPart;
252
+ };
253
+ type AiMessageContentReasoningPartProps = {
254
+ part: AiReasoningPart;
255
+ };
256
+ interface AiMessageContentComponents {
257
+ /**
258
+ * The component used to display text parts.
259
+ */
260
+ TextPart: ComponentType<AiMessageContentTextPartProps>;
261
+ /**
262
+ * The component used to display reasoning parts.
263
+ */
264
+ ReasoningPart: ComponentType<AiMessageContentReasoningPartProps>;
265
+ }
266
+ interface AiMessageContentProps extends Omit<ComponentPropsWithSlot<"div">, "children"> {
267
+ /**
268
+ * The message contents to display.
269
+ */
270
+ message: AiChatMessage;
271
+ /**
272
+ * Optional overrides for the default components to render each part within
273
+ * the message content.
274
+ */
275
+ components?: Partial<AiMessageContentComponents>;
276
+ }
310
277
 
311
278
  /**
312
- * "Freezes" a given value, so that it will return the same value/instance on
313
- * each subsequent render. This can be used to freeze "initial" values for
314
- * custom hooks, much like how `useState(initialState)` or
315
- * `useRef(initialValue)` works.
279
+ * --------------------------------------------------------------------------
280
+ * @private The API for this component is not yet stable.
281
+ * --------------------------------------------------------------------------
282
+ *
283
+ * Primitive to help display an user or assistant message’s content, which is
284
+ * an array of parts.
285
+ *
286
+ * @example
287
+ * <AiMessage.Content message={message} components={{ TextPart }} />
316
288
  */
317
- declare function useInitial<T>(value: T | (() => T)): T;
289
+ declare const AiMessageContent: react.ForwardRefExoticComponent<AiMessageContentProps & react.RefAttributes<HTMLDivElement>>;
318
290
 
319
- declare function useRefs<T>(...refs: Ref<T>[]): RefCallback<T>;
291
+ declare namespace index$1 {
292
+ export {
293
+ AiMessageContent as Content,
294
+ };
295
+ }
296
+
297
+ interface RootProps extends ComponentPropsWithSlot<"div"> {
298
+ defaultOpen?: boolean;
299
+ open?: boolean;
300
+ onOpenChange?: (open: boolean) => void;
301
+ disabled?: boolean;
302
+ }
303
+
304
+ declare const CollapsibleRoot: react.ForwardRefExoticComponent<RootProps & react.RefAttributes<HTMLDivElement>>;
305
+ declare const CollapsibleTrigger: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
306
+ declare const CollapsibleContent: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & SlotProp & react.RefAttributes<HTMLDivElement>>;
307
+
308
+ declare namespace index {
309
+ export {
310
+ CollapsibleContent as Content,
311
+ CollapsibleRoot as Root,
312
+ CollapsibleTrigger as Trigger,
313
+ };
314
+ }
315
+
316
+ type MarkdownComponents = {
317
+ CodeBlock: ComponentType<MarkdownComponentsCodeBlockProps>;
318
+ Link: ComponentType<MarkdownComponentsLinkProps>;
319
+ Heading: ComponentType<MarkdownComponentsHeadingProps>;
320
+ Image: ComponentType<MarkdownComponentsImageProps>;
321
+ Blockquote: ComponentType<MarkdownComponentsBlockquoteProps>;
322
+ };
323
+ interface MarkdownComponentsBlockquoteProps {
324
+ children: ReactNode;
325
+ }
326
+ interface MarkdownComponentsImageProps {
327
+ src: string;
328
+ alt: string;
329
+ title?: string;
330
+ }
331
+ interface MarkdownComponentsHeadingProps {
332
+ level: 1 | 2 | 3 | 4 | 5 | 6;
333
+ children: ReactNode;
334
+ }
335
+ interface MarkdownComponentsLinkProps {
336
+ href: string;
337
+ title?: string;
338
+ children: ReactNode;
339
+ }
340
+ interface MarkdownComponentsCodeBlockProps {
341
+ code: string;
342
+ language?: string;
343
+ }
344
+ interface MarkdownProps extends Omit<ComponentPropsWithSlot<"div">, "children"> {
345
+ content: string;
346
+ components?: Partial<MarkdownComponents>;
347
+ }
348
+ declare const Markdown: react.ForwardRefExoticComponent<MarkdownProps & react.RefAttributes<HTMLDivElement>>;
320
349
 
321
- export { AiChatAssistantMessage, AiChatAssistantMessageProps, AiChatComposer, AiChatComposerEditor, AiChatComposerEditorProps, AiChatComposerForm, AiChatComposerFormProps, AiChatComposerProps, AiChatComposerSubmit, AiChatComposerSubmitProps, AiChatUserMessage, AiChatUserMessageProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, CommentIcon, CopyIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobalComponents, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, MentionIcon, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, useComponents, useInitial, useRefs };
350
+ export { index$2 as AiChatComposer, AiChatComposerEditorProps, AiChatComposerFormProps, AiChatComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsLinkProps, MarkdownProps, MentionIcon, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, useInitial, useRefs };
@@ -1,16 +1,19 @@
1
- export { useComponents } from '../components.js';
2
- export { AiChatAssistantMessage } from '../components/internal/AiChatAssistantMessage.js';
3
- export { AiChatComposer } from '../components/internal/AiChatComposer.js';
4
- export { AiChatUserMessage } from '../components/internal/AiChatUserMessage.js';
5
1
  export { Button, SelectButton } from '../components/internal/Button.js';
6
2
  export { List } from '../components/internal/List.js';
3
+ export { Prose } from '../components/internal/Prose.js';
7
4
  export { ShortcutTooltip, Tooltip } from '../components/internal/Tooltip.js';
8
5
  export { User } from '../components/internal/User.js';
9
6
  import '../icons/index.js';
10
- export { AiChatComposerEditor, AiChatComposerForm, AiChatComposerSubmit } from '../primitives/AiChatComposer/index.js';
11
7
  export { capitalize } from '../utils/capitalize.js';
12
8
  export { useInitial } from '../utils/use-initial.js';
13
9
  export { useRefs } from '../utils/use-refs.js';
10
+ import * as index from '../primitives/AiChatComposer/index.js';
11
+ export { index as AiChatComposer };
12
+ import * as index$1 from '../primitives/AiMessage/index.js';
13
+ export { index$1 as AiMessage };
14
+ import * as index$2 from '../primitives/Collapsible/index.js';
15
+ export { index$2 as Collapsible };
16
+ export { Markdown } from '../primitives/Markdown.js';
14
17
  export { TooltipProvider } from '@radix-ui/react-tooltip';
15
18
  export { ArrowCornerDownRightIcon } from '../icons/ArrowCornerDownRight.js';
16
19
  export { ArrowCornerUpRightIcon } from '../icons/ArrowCornerUpRight.js';