@liveblocks/react-ui 3.2.1 → 3.3.1

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 (56) hide show
  1. package/dist/_private/index.cjs +4 -2
  2. package/dist/_private/index.cjs.map +1 -1
  3. package/dist/_private/index.d.cts +100 -33
  4. package/dist/_private/index.d.ts +100 -33
  5. package/dist/_private/index.js +3 -2
  6. package/dist/_private/index.js.map +1 -1
  7. package/dist/components/AiChat.cjs +11 -9
  8. package/dist/components/AiChat.cjs.map +1 -1
  9. package/dist/components/AiChat.js +12 -10
  10. package/dist/components/AiChat.js.map +1 -1
  11. package/dist/components/Composer.cjs +1 -1
  12. package/dist/components/Composer.cjs.map +1 -1
  13. package/dist/components/Composer.js +1 -1
  14. package/dist/components/Composer.js.map +1 -1
  15. package/dist/components/Thread.cjs +58 -0
  16. package/dist/components/Thread.cjs.map +1 -1
  17. package/dist/components/Thread.js +59 -1
  18. package/dist/components/Thread.js.map +1 -1
  19. package/dist/components/internal/AiComposer.cjs +132 -0
  20. package/dist/components/internal/AiComposer.cjs.map +1 -0
  21. package/dist/components/internal/AiComposer.js +130 -0
  22. package/dist/components/internal/AiComposer.js.map +1 -0
  23. package/dist/components/internal/Button.cjs.map +1 -1
  24. package/dist/components/internal/Button.js.map +1 -1
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +113 -11
  27. package/dist/index.d.ts +113 -11
  28. package/dist/index.js.map +1 -1
  29. package/dist/overrides.cjs +4 -3
  30. package/dist/overrides.cjs.map +1 -1
  31. package/dist/overrides.js +4 -3
  32. package/dist/overrides.js.map +1 -1
  33. package/dist/primitives/AiComposer/contexts.cjs +24 -0
  34. package/dist/primitives/AiComposer/contexts.cjs.map +1 -0
  35. package/dist/primitives/AiComposer/contexts.js +19 -0
  36. package/dist/primitives/AiComposer/contexts.js.map +1 -0
  37. package/dist/primitives/AiComposer/index.cjs +348 -0
  38. package/dist/primitives/AiComposer/index.cjs.map +1 -0
  39. package/dist/primitives/AiComposer/index.js +340 -0
  40. package/dist/primitives/AiComposer/index.js.map +1 -0
  41. package/dist/primitives/index.d.cts +8 -1
  42. package/dist/primitives/index.d.ts +8 -1
  43. package/dist/version.cjs +1 -1
  44. package/dist/version.js +1 -1
  45. package/package.json +4 -4
  46. package/src/styles/index.css +36 -10
  47. package/styles.css +1 -1
  48. package/styles.css.map +1 -1
  49. package/dist/components/internal/AiChatComposer.cjs +0 -161
  50. package/dist/components/internal/AiChatComposer.cjs.map +0 -1
  51. package/dist/components/internal/AiChatComposer.js +0 -159
  52. package/dist/components/internal/AiChatComposer.js.map +0 -1
  53. package/dist/primitives/AiChatComposer/index.cjs +0 -202
  54. package/dist/primitives/AiChatComposer/index.cjs.map +0 -1
  55. package/dist/primitives/AiChatComposer/index.js +0 -195
  56. package/dist/primitives/AiChatComposer/index.js.map +0 -1
@@ -11,7 +11,8 @@ var capitalize = require('../utils/capitalize.cjs');
11
11
  var cn = require('../utils/cn.cjs');
12
12
  var useInitial = require('../utils/use-initial.cjs');
13
13
  var useRefs = require('../utils/use-refs.cjs');
14
- var index = require('../primitives/AiChatComposer/index.cjs');
14
+ var index = require('../primitives/AiComposer/index.cjs');
15
+ var contexts = require('../primitives/AiComposer/contexts.cjs');
15
16
  var index$1 = require('../primitives/AiMessage/index.cjs');
16
17
  var index$2 = require('../primitives/Collapsible/index.cjs');
17
18
  var Markdown = require('../primitives/Markdown.cjs');
@@ -83,7 +84,8 @@ exports.capitalize = capitalize.capitalize;
83
84
  exports.cn = cn.cn;
84
85
  exports.useInitial = useInitial.useInitial;
85
86
  exports.useRefs = useRefs.useRefs;
86
- exports.AiChatComposer = index;
87
+ exports.AiComposer = index;
88
+ exports.useAiComposer = contexts.useAiComposer;
87
89
  exports.AiMessage = index$1;
88
90
  exports.Collapsible = index$2;
89
91
  exports.Markdown = Markdown.Markdown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -14,7 +14,7 @@ interface AvatarProps extends ComponentProps<"div"> {
14
14
  declare function Avatar({ userId, className, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
15
15
 
16
16
  interface ButtonProps extends ComponentProps<"button"> {
17
- variant?: "default" | "toolbar" | "outline" | "primary" | "secondary" | "destructive";
17
+ variant?: "default" | "toolbar" | "outline" | "ghost" | "primary" | "secondary" | "destructive";
18
18
  size?: "default" | "large";
19
19
  disableable?: boolean;
20
20
  icon?: ReactNode;
@@ -22,6 +22,7 @@ interface ButtonProps extends ComponentProps<"button"> {
22
22
  declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
23
23
  declare const SelectButton: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
24
24
 
25
+ type Direction = "ltr" | "rtl";
25
26
  type SlotProp = {
26
27
  /**
27
28
  * Replace the rendered element by the one passed as a child.
@@ -465,22 +466,31 @@ declare function useInitial<T>(value: T | (() => T)): T;
465
466
 
466
467
  declare function useRefs<T>(...refs: Ref<T>[]): RefCallback<T>;
467
468
 
468
- interface AiChatComposerFormProps extends ComponentPropsWithSlot<"form"> {
469
+ interface AiComposerSubmitMessage {
469
470
  /**
470
- * The event handler called when a chat message is submitted.
471
+ * The submitted message text.
471
472
  */
472
- onComposerSubmit?: (message: {
473
- /**
474
- * The submitted message text.
475
- */
476
- text: string;
477
- }, event: FormEvent<HTMLFormElement>) => void;
473
+ text: string;
474
+ }
475
+ interface AiComposerFormProps extends ComponentPropsWithSlot<"form"> {
476
+ /**
477
+ * The ID of the chat the composer belongs to.
478
+ */
479
+ chatId?: string;
480
+ /**
481
+ * The event handler called when the composer is submitted.
482
+ */
483
+ onComposerSubmit?: (message: AiComposerSubmitMessage, event: FormEvent<HTMLFormElement>) => Promise<void> | void;
478
484
  /**
479
485
  * Whether the composer is disabled.
480
486
  */
481
487
  disabled?: boolean;
482
488
  }
483
- interface AiChatComposerEditorProps extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "children"> {
489
+ interface AiComposerEditorProps extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "children"> {
490
+ /**
491
+ * The reading direction of the editor and related elements.
492
+ */
493
+ dir?: Direction;
484
494
  /**
485
495
  * The editor's initial value.
486
496
  */
@@ -498,47 +508,104 @@ interface AiChatComposerEditorProps extends Omit<ComponentPropsWithoutRef<"div">
498
508
  */
499
509
  autoFocus?: boolean;
500
510
  }
501
- type AiChatComposerSubmitProps = ComponentPropsWithSlot<"button">;
511
+ type AiComposerSubmitProps = ComponentPropsWithSlot<"button">;
502
512
 
503
513
  /**
504
- * Surrounds the chat composer's content and handles submissions.
514
+ * Surrounds the AI composer's content and handles submissions.
515
+ *
516
+ * @example
517
+ * <AiComposer.Form onComposerSubmit={({ text }) => {}}>
518
+ * <AiComposer.Editor />
519
+ * <AiComposer.Submit />
520
+ * </AiComposer.Form>
521
+ */
522
+ declare const AiComposerForm: react.ForwardRefExoticComponent<AiComposerFormProps & react.RefAttributes<HTMLFormElement>>;
523
+ /**
524
+ * Displays the AI composer's editor.
505
525
  *
506
526
  * @example
507
- * <AiChatComposer.Form onComposerSubmit={({ text }) => {}}>
508
- * <AiChatComposer.Editor />
509
- * <AiChatComposer.Submit />
510
- * </AiChatComposer.Form>
527
+ * <AiComposer.Editor placeholder="Write a message…" />
511
528
  */
512
- declare const AiChatComposerForm: react.ForwardRefExoticComponent<AiChatComposerFormProps & react.RefAttributes<HTMLFormElement>>;
529
+ declare const AiComposerEditor: react.ForwardRefExoticComponent<AiComposerEditorProps & react.RefAttributes<HTMLDivElement>>;
513
530
  /**
514
- * Displays the chat composer's editor.
531
+ * A button to submit the AI composer's content.
515
532
  *
516
533
  * @example
517
- * <AiChatComposer.Editor placeholder="Write a message…" />
534
+ * <AiComposer.Submit>Send</AiComposer.Submit>
518
535
  */
519
- declare const AiChatComposerEditor: react.ForwardRefExoticComponent<AiChatComposerEditorProps & react.RefAttributes<HTMLDivElement>>;
536
+ declare const AiComposerSubmit: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
520
537
  /**
521
- * A button to submit a chat message.
538
+ * A button to abort a response related to the AI composer.
522
539
  *
523
540
  * @example
524
- * <AiChatComposer.Submit>Send</AiChatComposer.Submit>
541
+ * <AiComposer.Abort>Cancel</AiComposer.Abort>
525
542
  */
526
- declare const AiChatComposerSubmit: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
543
+ declare const AiComposerAbort: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
527
544
 
528
- declare const index$2_AiChatComposerEditor: typeof AiChatComposerEditor;
529
- declare const index$2_AiChatComposerForm: typeof AiChatComposerForm;
530
- declare const index$2_AiChatComposerSubmit: typeof AiChatComposerSubmit;
545
+ declare const index$2_AiComposerAbort: typeof AiComposerAbort;
546
+ declare const index$2_AiComposerForm: typeof AiComposerForm;
547
+ declare const index$2_AiComposerSubmit: typeof AiComposerSubmit;
531
548
  declare namespace index$2 {
532
549
  export {
533
- index$2_AiChatComposerEditor as AiChatComposerEditor,
534
- index$2_AiChatComposerForm as AiChatComposerForm,
535
- index$2_AiChatComposerSubmit as AiChatComposerSubmit,
536
- AiChatComposerEditor as Editor,
537
- AiChatComposerForm as Form,
538
- AiChatComposerSubmit as Submit,
550
+ AiComposerAbort as Abort,
551
+ index$2_AiComposerAbort as AiComposerAbort,
552
+ index$2_AiComposerForm as AiComposerForm,
553
+ index$2_AiComposerSubmit as AiComposerSubmit,
554
+ AiComposerEditor as Editor,
555
+ AiComposerForm as Form,
556
+ AiComposerSubmit as Submit,
539
557
  };
540
558
  }
541
559
 
560
+ type AiComposerContext = {
561
+ /**
562
+ * Whether the composer is currently disabled.
563
+ */
564
+ isDisabled: boolean;
565
+ /**
566
+ * Whether the composer can currently be submitted.
567
+ */
568
+ canSubmit: boolean;
569
+ /**
570
+ * Whether the composer can currently abort a response in its related chat.
571
+ */
572
+ canAbort: boolean;
573
+ /**
574
+ * Whether the editor is currently focused.
575
+ */
576
+ isFocused: boolean;
577
+ /**
578
+ * Whether the editor is currently empty.
579
+ */
580
+ isEmpty: boolean;
581
+ /**
582
+ * Submit the composer programmatically.
583
+ */
584
+ submit: () => void;
585
+ /**
586
+ * Abort the composer's related response programmatically.
587
+ */
588
+ abort: () => void;
589
+ /**
590
+ * Clear the composer programmatically.
591
+ */
592
+ clear: () => void;
593
+ /**
594
+ * Select the editor programmatically.
595
+ */
596
+ select: () => void;
597
+ /**
598
+ * Focus the editor programmatically.
599
+ */
600
+ focus: () => void;
601
+ /**
602
+ * Blur the editor programmatically.
603
+ */
604
+ blur: () => void;
605
+ };
606
+ declare const AiComposerContext: react.Context<AiComposerContext | null>;
607
+ declare function useAiComposer(): AiComposerContext;
608
+
542
609
  type AiMessageContentTextPartProps = {
543
610
  part: AiTextPart;
544
611
  };
@@ -605,4 +672,4 @@ declare namespace index {
605
672
  };
606
673
  }
607
674
 
608
- export { index$2 as AiChatComposer, AiChatComposerEditorProps, AiChatComposerFormProps, AiChatComposerSubmitProps, 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, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, cn, useInitial, useRefs };
675
+ 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, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, cn, useAiComposer, useInitial, useRefs };
@@ -14,7 +14,7 @@ interface AvatarProps extends ComponentProps<"div"> {
14
14
  declare function Avatar({ userId, className, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
15
15
 
16
16
  interface ButtonProps extends ComponentProps<"button"> {
17
- variant?: "default" | "toolbar" | "outline" | "primary" | "secondary" | "destructive";
17
+ variant?: "default" | "toolbar" | "outline" | "ghost" | "primary" | "secondary" | "destructive";
18
18
  size?: "default" | "large";
19
19
  disableable?: boolean;
20
20
  icon?: ReactNode;
@@ -22,6 +22,7 @@ interface ButtonProps extends ComponentProps<"button"> {
22
22
  declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
23
23
  declare const SelectButton: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
24
24
 
25
+ type Direction = "ltr" | "rtl";
25
26
  type SlotProp = {
26
27
  /**
27
28
  * Replace the rendered element by the one passed as a child.
@@ -465,22 +466,31 @@ declare function useInitial<T>(value: T | (() => T)): T;
465
466
 
466
467
  declare function useRefs<T>(...refs: Ref<T>[]): RefCallback<T>;
467
468
 
468
- interface AiChatComposerFormProps extends ComponentPropsWithSlot<"form"> {
469
+ interface AiComposerSubmitMessage {
469
470
  /**
470
- * The event handler called when a chat message is submitted.
471
+ * The submitted message text.
471
472
  */
472
- onComposerSubmit?: (message: {
473
- /**
474
- * The submitted message text.
475
- */
476
- text: string;
477
- }, event: FormEvent<HTMLFormElement>) => void;
473
+ text: string;
474
+ }
475
+ interface AiComposerFormProps extends ComponentPropsWithSlot<"form"> {
476
+ /**
477
+ * The ID of the chat the composer belongs to.
478
+ */
479
+ chatId?: string;
480
+ /**
481
+ * The event handler called when the composer is submitted.
482
+ */
483
+ onComposerSubmit?: (message: AiComposerSubmitMessage, event: FormEvent<HTMLFormElement>) => Promise<void> | void;
478
484
  /**
479
485
  * Whether the composer is disabled.
480
486
  */
481
487
  disabled?: boolean;
482
488
  }
483
- interface AiChatComposerEditorProps extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "children"> {
489
+ interface AiComposerEditorProps extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "children"> {
490
+ /**
491
+ * The reading direction of the editor and related elements.
492
+ */
493
+ dir?: Direction;
484
494
  /**
485
495
  * The editor's initial value.
486
496
  */
@@ -498,47 +508,104 @@ interface AiChatComposerEditorProps extends Omit<ComponentPropsWithoutRef<"div">
498
508
  */
499
509
  autoFocus?: boolean;
500
510
  }
501
- type AiChatComposerSubmitProps = ComponentPropsWithSlot<"button">;
511
+ type AiComposerSubmitProps = ComponentPropsWithSlot<"button">;
502
512
 
503
513
  /**
504
- * Surrounds the chat composer's content and handles submissions.
514
+ * Surrounds the AI composer's content and handles submissions.
515
+ *
516
+ * @example
517
+ * <AiComposer.Form onComposerSubmit={({ text }) => {}}>
518
+ * <AiComposer.Editor />
519
+ * <AiComposer.Submit />
520
+ * </AiComposer.Form>
521
+ */
522
+ declare const AiComposerForm: react.ForwardRefExoticComponent<AiComposerFormProps & react.RefAttributes<HTMLFormElement>>;
523
+ /**
524
+ * Displays the AI composer's editor.
505
525
  *
506
526
  * @example
507
- * <AiChatComposer.Form onComposerSubmit={({ text }) => {}}>
508
- * <AiChatComposer.Editor />
509
- * <AiChatComposer.Submit />
510
- * </AiChatComposer.Form>
527
+ * <AiComposer.Editor placeholder="Write a message…" />
511
528
  */
512
- declare const AiChatComposerForm: react.ForwardRefExoticComponent<AiChatComposerFormProps & react.RefAttributes<HTMLFormElement>>;
529
+ declare const AiComposerEditor: react.ForwardRefExoticComponent<AiComposerEditorProps & react.RefAttributes<HTMLDivElement>>;
513
530
  /**
514
- * Displays the chat composer's editor.
531
+ * A button to submit the AI composer's content.
515
532
  *
516
533
  * @example
517
- * <AiChatComposer.Editor placeholder="Write a message…" />
534
+ * <AiComposer.Submit>Send</AiComposer.Submit>
518
535
  */
519
- declare const AiChatComposerEditor: react.ForwardRefExoticComponent<AiChatComposerEditorProps & react.RefAttributes<HTMLDivElement>>;
536
+ declare const AiComposerSubmit: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
520
537
  /**
521
- * A button to submit a chat message.
538
+ * A button to abort a response related to the AI composer.
522
539
  *
523
540
  * @example
524
- * <AiChatComposer.Submit>Send</AiChatComposer.Submit>
541
+ * <AiComposer.Abort>Cancel</AiComposer.Abort>
525
542
  */
526
- declare const AiChatComposerSubmit: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
543
+ declare const AiComposerAbort: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & SlotProp & react.RefAttributes<HTMLButtonElement>>;
527
544
 
528
- declare const index$2_AiChatComposerEditor: typeof AiChatComposerEditor;
529
- declare const index$2_AiChatComposerForm: typeof AiChatComposerForm;
530
- declare const index$2_AiChatComposerSubmit: typeof AiChatComposerSubmit;
545
+ declare const index$2_AiComposerAbort: typeof AiComposerAbort;
546
+ declare const index$2_AiComposerForm: typeof AiComposerForm;
547
+ declare const index$2_AiComposerSubmit: typeof AiComposerSubmit;
531
548
  declare namespace index$2 {
532
549
  export {
533
- index$2_AiChatComposerEditor as AiChatComposerEditor,
534
- index$2_AiChatComposerForm as AiChatComposerForm,
535
- index$2_AiChatComposerSubmit as AiChatComposerSubmit,
536
- AiChatComposerEditor as Editor,
537
- AiChatComposerForm as Form,
538
- AiChatComposerSubmit as Submit,
550
+ AiComposerAbort as Abort,
551
+ index$2_AiComposerAbort as AiComposerAbort,
552
+ index$2_AiComposerForm as AiComposerForm,
553
+ index$2_AiComposerSubmit as AiComposerSubmit,
554
+ AiComposerEditor as Editor,
555
+ AiComposerForm as Form,
556
+ AiComposerSubmit as Submit,
539
557
  };
540
558
  }
541
559
 
560
+ type AiComposerContext = {
561
+ /**
562
+ * Whether the composer is currently disabled.
563
+ */
564
+ isDisabled: boolean;
565
+ /**
566
+ * Whether the composer can currently be submitted.
567
+ */
568
+ canSubmit: boolean;
569
+ /**
570
+ * Whether the composer can currently abort a response in its related chat.
571
+ */
572
+ canAbort: boolean;
573
+ /**
574
+ * Whether the editor is currently focused.
575
+ */
576
+ isFocused: boolean;
577
+ /**
578
+ * Whether the editor is currently empty.
579
+ */
580
+ isEmpty: boolean;
581
+ /**
582
+ * Submit the composer programmatically.
583
+ */
584
+ submit: () => void;
585
+ /**
586
+ * Abort the composer's related response programmatically.
587
+ */
588
+ abort: () => void;
589
+ /**
590
+ * Clear the composer programmatically.
591
+ */
592
+ clear: () => void;
593
+ /**
594
+ * Select the editor programmatically.
595
+ */
596
+ select: () => void;
597
+ /**
598
+ * Focus the editor programmatically.
599
+ */
600
+ focus: () => void;
601
+ /**
602
+ * Blur the editor programmatically.
603
+ */
604
+ blur: () => void;
605
+ };
606
+ declare const AiComposerContext: react.Context<AiComposerContext | null>;
607
+ declare function useAiComposer(): AiComposerContext;
608
+
542
609
  type AiMessageContentTextPartProps = {
543
610
  part: AiTextPart;
544
611
  };
@@ -605,4 +672,4 @@ declare namespace index {
605
672
  };
606
673
  }
607
674
 
608
- export { index$2 as AiChatComposer, AiChatComposerEditorProps, AiChatComposerFormProps, AiChatComposerSubmitProps, 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, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, cn, useInitial, useRefs };
675
+ 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, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, WarningIcon, capitalize, cn, useAiComposer, useInitial, useRefs };
@@ -9,8 +9,9 @@ export { capitalize } from '../utils/capitalize.js';
9
9
  export { cn } from '../utils/cn.js';
10
10
  export { useInitial } from '../utils/use-initial.js';
11
11
  export { useRefs } from '../utils/use-refs.js';
12
- import * as index from '../primitives/AiChatComposer/index.js';
13
- export { index as AiChatComposer };
12
+ import * as index from '../primitives/AiComposer/index.js';
13
+ export { index as AiComposer };
14
+ export { useAiComposer } from '../primitives/AiComposer/contexts.js';
14
15
  import * as index$1 from '../primitives/AiMessage/index.js';
15
16
  export { index$1 as AiMessage };
16
17
  import * as index$2 from '../primitives/Collapsible/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,8 +10,8 @@ var overrides = require('../overrides.cjs');
10
10
  var cn = require('../utils/cn.cjs');
11
11
  var useVisible = require('../utils/use-visible.cjs');
12
12
  var AiChatAssistantMessage = require('./internal/AiChatAssistantMessage.cjs');
13
- var AiChatComposer = require('./internal/AiChatComposer.cjs');
14
13
  var AiChatUserMessage = require('./internal/AiChatUserMessage.cjs');
14
+ var AiComposer = require('./internal/AiComposer.cjs');
15
15
 
16
16
  const MIN_DISTANCE_BOTTOM_SCROLL_INDICATOR = 60;
17
17
  const defaultComponents = {
@@ -177,8 +177,9 @@ const AiChat = react.forwardRef(
177
177
  copilotId,
178
178
  autoFocus,
179
179
  overrides: overrides$1,
180
- knowledge,
180
+ knowledge: localKnowledge,
181
181
  tools = {},
182
+ onComposerSubmit,
182
183
  layout = "inset",
183
184
  components,
184
185
  className,
@@ -231,10 +232,6 @@ const AiChat = react.forwardRef(
231
232
  className
232
233
  ),
233
234
  children: [
234
- knowledge ? knowledge.map((source, index) => /* @__PURE__ */ jsxRuntime.jsx(react$1.RegisterAiKnowledge, {
235
- description: source.description,
236
- value: source.value
237
- }, index)) : null,
238
235
  Object.entries(tools).map(([name, tool]) => /* @__PURE__ */ jsxRuntime.jsx(react$1.RegisterAiTool, {
239
236
  chatId,
240
237
  name,
@@ -297,13 +294,18 @@ const AiChat = react.forwardRef(
297
294
  })
298
295
  })
299
296
  }),
300
- /* @__PURE__ */ jsxRuntime.jsx(AiChatComposer.AiChatComposer, {
297
+ /* @__PURE__ */ jsxRuntime.jsx(AiComposer.AiComposer, {
301
298
  chatId,
302
299
  copilotId,
303
300
  overrides: overrides$1,
304
301
  autoFocus,
305
- onUserMessageCreate: ({ id }) => setLastSentMessageId(id),
306
- className: layout === "inset" ? "lb-elevation lb-elevation-moderate" : void 0
302
+ knowledge: localKnowledge,
303
+ onComposerSubmit,
304
+ onComposerSubmitted: ({ id }) => setLastSentMessageId(id),
305
+ className: cn.cn(
306
+ "lb-ai-chat-composer",
307
+ layout === "inset" ? "lb-elevation lb-elevation-moderate" : void 0
308
+ )
307
309
  }, chatId)
308
310
  ]
309
311
  }),