@algolia/satellite 2.2.3 → 2.3.0-rc.10

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 (220) hide show
  1. package/dist/cjs/Actions/Accordion/Accordion.d.ts +8 -0
  2. package/dist/cjs/Actions/Accordion/Accordion.js +5 -3
  3. package/dist/cjs/Actions/Button/PolymorphicButton.js +5 -5
  4. package/dist/cjs/Actions/Button/PolymorphicIconButton.js +2 -2
  5. package/dist/cjs/Actions/Button/styles.d.ts +1 -0
  6. package/dist/cjs/Actions/Button/styles.js +15 -10
  7. package/dist/cjs/Actions/ButtonLink/ButtonLink.d.ts +2 -0
  8. package/dist/cjs/Actions/ButtonLink/ButtonLink.js +4 -2
  9. package/dist/cjs/Actions/SegmentedControl/SegmentedControl.js +3 -2
  10. package/dist/cjs/Actions/SegmentedControl/SegmentedControlOption.js +6 -3
  11. package/dist/cjs/Actions/ToggleButton/ToggleButtonBase.js +3 -3
  12. package/dist/cjs/Actions/ToggleGroup/ToggleGroup.d.ts +13 -14
  13. package/dist/cjs/Chat/ChatContextAccordion/ChatContextAccordion.d.ts +23 -0
  14. package/dist/cjs/Chat/ChatContextAccordion/ChatContextAccordion.js +51 -0
  15. package/dist/cjs/Chat/ChatContextAccordion/ChatContextAccordion.styles.d.ts +86 -0
  16. package/dist/cjs/Chat/ChatContextAccordion/ChatContextAccordion.styles.js +23 -0
  17. package/dist/cjs/Chat/ChatContextAccordion/index.d.ts +1 -0
  18. package/dist/cjs/Chat/ChatContextAccordion/index.js +16 -0
  19. package/dist/cjs/Chat/ChatMessage/ChatMessage.d.ts +117 -0
  20. package/dist/cjs/Chat/ChatMessage/ChatMessage.js +92 -0
  21. package/dist/cjs/Chat/ChatMessage/ChatMessage.styles.d.ts +167 -0
  22. package/dist/cjs/Chat/ChatMessage/ChatMessage.styles.js +77 -0
  23. package/dist/cjs/Chat/ChatMessage/index.d.ts +1 -0
  24. package/dist/cjs/Chat/ChatMessage/index.js +16 -0
  25. package/dist/cjs/Chat/ChatMessageError/ChatMessageError.d.ts +62 -0
  26. package/dist/cjs/Chat/ChatMessageError/ChatMessageError.js +73 -0
  27. package/dist/cjs/Chat/ChatMessageError/ChatMessageError.styles.d.ts +253 -0
  28. package/dist/cjs/Chat/ChatMessageError/ChatMessageError.styles.js +18 -0
  29. package/dist/cjs/Chat/ChatMessageError/index.d.ts +1 -0
  30. package/dist/cjs/Chat/ChatMessageError/index.js +16 -0
  31. package/dist/cjs/Chat/ChatMessageLoader/ChatMessageLoader.d.ts +21 -0
  32. package/dist/cjs/Chat/ChatMessageLoader/ChatMessageLoader.js +68 -0
  33. package/dist/cjs/Chat/ChatMessageLoader/ChatMessageLoader.styles.d.ts +280 -0
  34. package/dist/cjs/Chat/ChatMessageLoader/ChatMessageLoader.styles.js +21 -0
  35. package/dist/cjs/Chat/ChatMessageLoader/index.d.ts +1 -0
  36. package/dist/cjs/Chat/ChatMessageLoader/index.js +16 -0
  37. package/dist/cjs/Chat/ChatMessages/ChatMessages.d.ts +141 -0
  38. package/dist/cjs/Chat/ChatMessages/ChatMessages.js +165 -0
  39. package/dist/cjs/Chat/ChatMessages/ChatMessages.styles.d.ts +69 -0
  40. package/dist/cjs/Chat/ChatMessages/ChatMessages.styles.js +29 -0
  41. package/dist/cjs/Chat/ChatMessages/index.d.ts +1 -0
  42. package/dist/cjs/Chat/ChatMessages/index.js +16 -0
  43. package/dist/cjs/Chat/ChatMessages/useLastMessageHeight.d.ts +14 -0
  44. package/dist/cjs/Chat/ChatMessages/useLastMessageHeight.js +54 -0
  45. package/dist/cjs/Chat/ChatPrompt/ChatPrompt.d.ts +105 -0
  46. package/dist/cjs/Chat/ChatPrompt/ChatPrompt.js +163 -0
  47. package/dist/cjs/Chat/ChatPrompt/ChatPrompt.styles.d.ts +63 -0
  48. package/dist/cjs/Chat/ChatPrompt/ChatPrompt.styles.js +29 -0
  49. package/dist/cjs/Chat/ChatPrompt/index.d.ts +1 -0
  50. package/dist/cjs/Chat/ChatPrompt/index.js +16 -0
  51. package/dist/cjs/Chat/ChatPrompt/useFocusTyping.d.ts +30 -0
  52. package/dist/cjs/Chat/ChatPrompt/useFocusTyping.js +65 -0
  53. package/dist/cjs/Chat/ChatPrompt/useTypewriter.d.ts +27 -0
  54. package/dist/cjs/Chat/ChatPrompt/useTypewriter.js +87 -0
  55. package/dist/cjs/Chat/index.d.ts +15 -0
  56. package/dist/cjs/Chat/index.js +47 -0
  57. package/dist/cjs/Chat/types.d.ts +7 -0
  58. package/dist/cjs/Chat/types.js +5 -0
  59. package/dist/cjs/Fields/Checkbox/Checkbox.d.ts +2 -2
  60. package/dist/cjs/Fields/Checkbox/Checkbox.js +2 -2
  61. package/dist/cjs/Fields/Dropzone/Dropzone.js +1 -1
  62. package/dist/cjs/Fields/Form/stories/Complex.js +123 -50
  63. package/dist/cjs/Fields/Input/Input.js +10 -13
  64. package/dist/cjs/Fields/RadioGroup/RadioButton.js +9 -2
  65. package/dist/cjs/Fields/RadioGroup/RadioButton.tailwind.js +1 -1
  66. package/dist/cjs/Fields/RadioGroup/RadioGroupContext.d.ts +2 -0
  67. package/dist/cjs/Fields/RadioGroup/RadioGroupItem.js +1 -1
  68. package/dist/cjs/Fields/Select/Select.tailwind.js +4 -3
  69. package/dist/cjs/Fields/SelectableCard/SelectableCard.d.ts +35 -0
  70. package/dist/cjs/Fields/SelectableCard/SelectableCard.js +105 -0
  71. package/dist/cjs/Fields/SelectableCard/SelectableCardContext.d.ts +13 -0
  72. package/dist/cjs/Fields/SelectableCard/SelectableCardContext.js +15 -0
  73. package/dist/cjs/Fields/SelectableCard/SelectableCardGroup.d.ts +13 -0
  74. package/dist/cjs/Fields/SelectableCard/SelectableCardGroup.js +55 -0
  75. package/dist/cjs/Fields/SelectableCard/index.d.ts +2 -0
  76. package/dist/cjs/Fields/SelectableCard/index.js +27 -0
  77. package/dist/cjs/Fields/Switch/Switch.js +1 -1
  78. package/dist/cjs/Fields/TextArea/TextArea.d.ts +5 -1
  79. package/dist/cjs/Fields/TextArea/TextArea.js +3 -2
  80. package/dist/cjs/Fields/TextArea/TextArea.tailwind.js +1 -1
  81. package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.d.ts +26 -0
  82. package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.js +82 -0
  83. package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.d.ts +37 -0
  84. package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.js +16 -0
  85. package/dist/cjs/Fields/TextAreaAutoSize/index.d.ts +2 -0
  86. package/dist/cjs/Fields/TextAreaAutoSize/index.js +12 -0
  87. package/dist/cjs/Fields/index.d.ts +3 -1
  88. package/dist/cjs/Fields/index.js +26 -4
  89. package/dist/cjs/Helpers/ShimmerText/ShimmerText.d.ts +3 -0
  90. package/dist/cjs/Helpers/ShimmerText/ShimmerText.js +28 -0
  91. package/dist/cjs/Helpers/ShimmerText/ShimmerText.tailwind.d.ts +5 -0
  92. package/dist/cjs/Helpers/ShimmerText/ShimmerText.tailwind.js +37 -0
  93. package/dist/cjs/Helpers/ShimmerText/index.d.ts +2 -0
  94. package/dist/cjs/Helpers/ShimmerText/index.js +12 -0
  95. package/dist/cjs/Helpers/index.d.ts +1 -0
  96. package/dist/cjs/Helpers/index.js +11 -0
  97. package/dist/cjs/Helpers/utilities/focusable.tailwind.js +1 -1
  98. package/dist/cjs/Helpers/utilities/utilities.tailwind.js +6 -1
  99. package/dist/cjs/Indicators/Skeleton/Skeleton.d.ts +2 -2
  100. package/dist/cjs/Navigation/Link/Link.d.ts +10 -0
  101. package/dist/cjs/Navigation/Link/Link.js +4 -2
  102. package/dist/cjs/Satellite/locale.d.ts +7 -1
  103. package/dist/cjs/index.d.ts +1 -0
  104. package/dist/cjs/index.js +12 -0
  105. package/dist/cjs/styles/helpers/tv.d.ts +5 -0
  106. package/dist/cjs/styles/helpers/tv.js +13 -0
  107. package/dist/cjs/styles/tailwind.config.js +1 -1
  108. package/dist/cjs/utils/getTextFromReactNode.d.ts +2 -1
  109. package/dist/cjs/utils/getTextFromReactNode.js +12 -7
  110. package/dist/esm/Actions/Accordion/Accordion.d.ts +8 -0
  111. package/dist/esm/Actions/Accordion/Accordion.js +5 -3
  112. package/dist/esm/Actions/Button/PolymorphicButton.js +6 -6
  113. package/dist/esm/Actions/Button/PolymorphicIconButton.js +2 -2
  114. package/dist/esm/Actions/Button/styles.d.ts +1 -0
  115. package/dist/esm/Actions/Button/styles.js +14 -9
  116. package/dist/esm/Actions/ButtonLink/ButtonLink.d.ts +2 -0
  117. package/dist/esm/Actions/ButtonLink/ButtonLink.js +4 -2
  118. package/dist/esm/Actions/SegmentedControl/SegmentedControl.js +3 -2
  119. package/dist/esm/Actions/SegmentedControl/SegmentedControlOption.js +6 -3
  120. package/dist/esm/Actions/ToggleButton/ToggleButtonBase.js +4 -4
  121. package/dist/esm/Actions/ToggleGroup/ToggleGroup.d.ts +13 -14
  122. package/dist/esm/Chat/ChatContextAccordion/ChatContextAccordion.d.ts +23 -0
  123. package/dist/esm/Chat/ChatContextAccordion/ChatContextAccordion.js +44 -0
  124. package/dist/esm/Chat/ChatContextAccordion/ChatContextAccordion.styles.d.ts +86 -0
  125. package/dist/esm/Chat/ChatContextAccordion/ChatContextAccordion.styles.js +16 -0
  126. package/dist/esm/Chat/ChatContextAccordion/index.d.ts +1 -0
  127. package/dist/esm/Chat/ChatContextAccordion/index.js +1 -0
  128. package/dist/esm/Chat/ChatMessage/ChatMessage.d.ts +117 -0
  129. package/dist/esm/Chat/ChatMessage/ChatMessage.js +86 -0
  130. package/dist/esm/Chat/ChatMessage/ChatMessage.styles.d.ts +167 -0
  131. package/dist/esm/Chat/ChatMessage/ChatMessage.styles.js +70 -0
  132. package/dist/esm/Chat/ChatMessage/index.d.ts +1 -0
  133. package/dist/esm/Chat/ChatMessage/index.js +1 -0
  134. package/dist/esm/Chat/ChatMessageError/ChatMessageError.d.ts +62 -0
  135. package/dist/esm/Chat/ChatMessageError/ChatMessageError.js +66 -0
  136. package/dist/esm/Chat/ChatMessageError/ChatMessageError.styles.d.ts +253 -0
  137. package/dist/esm/Chat/ChatMessageError/ChatMessageError.styles.js +11 -0
  138. package/dist/esm/Chat/ChatMessageError/index.d.ts +1 -0
  139. package/dist/esm/Chat/ChatMessageError/index.js +1 -0
  140. package/dist/esm/Chat/ChatMessageLoader/ChatMessageLoader.d.ts +21 -0
  141. package/dist/esm/Chat/ChatMessageLoader/ChatMessageLoader.js +61 -0
  142. package/dist/esm/Chat/ChatMessageLoader/ChatMessageLoader.styles.d.ts +280 -0
  143. package/dist/esm/Chat/ChatMessageLoader/ChatMessageLoader.styles.js +14 -0
  144. package/dist/esm/Chat/ChatMessageLoader/index.d.ts +1 -0
  145. package/dist/esm/Chat/ChatMessageLoader/index.js +1 -0
  146. package/dist/esm/Chat/ChatMessages/ChatMessages.d.ts +141 -0
  147. package/dist/esm/Chat/ChatMessages/ChatMessages.js +158 -0
  148. package/dist/esm/Chat/ChatMessages/ChatMessages.styles.d.ts +69 -0
  149. package/dist/esm/Chat/ChatMessages/ChatMessages.styles.js +22 -0
  150. package/dist/esm/Chat/ChatMessages/index.d.ts +1 -0
  151. package/dist/esm/Chat/ChatMessages/index.js +1 -0
  152. package/dist/esm/Chat/ChatMessages/useLastMessageHeight.d.ts +14 -0
  153. package/dist/esm/Chat/ChatMessages/useLastMessageHeight.js +48 -0
  154. package/dist/esm/Chat/ChatPrompt/ChatPrompt.d.ts +105 -0
  155. package/dist/esm/Chat/ChatPrompt/ChatPrompt.js +159 -0
  156. package/dist/esm/Chat/ChatPrompt/ChatPrompt.styles.d.ts +63 -0
  157. package/dist/esm/Chat/ChatPrompt/ChatPrompt.styles.js +22 -0
  158. package/dist/esm/Chat/ChatPrompt/index.d.ts +1 -0
  159. package/dist/esm/Chat/ChatPrompt/index.js +1 -0
  160. package/dist/esm/Chat/ChatPrompt/useFocusTyping.d.ts +30 -0
  161. package/dist/esm/Chat/ChatPrompt/useFocusTyping.js +59 -0
  162. package/dist/esm/Chat/ChatPrompt/useTypewriter.d.ts +27 -0
  163. package/dist/esm/Chat/ChatPrompt/useTypewriter.js +80 -0
  164. package/dist/esm/Chat/index.d.ts +15 -0
  165. package/dist/esm/Chat/index.js +6 -0
  166. package/dist/esm/Chat/types.d.ts +7 -0
  167. package/dist/esm/Chat/types.js +1 -0
  168. package/dist/esm/Fields/Checkbox/Checkbox.d.ts +2 -2
  169. package/dist/esm/Fields/Checkbox/Checkbox.js +2 -2
  170. package/dist/esm/Fields/Dropzone/Dropzone.js +1 -1
  171. package/dist/esm/Fields/Form/stories/Complex.js +123 -50
  172. package/dist/esm/Fields/Input/Input.js +10 -13
  173. package/dist/esm/Fields/RadioGroup/RadioButton.js +10 -3
  174. package/dist/esm/Fields/RadioGroup/RadioButton.tailwind.js +1 -1
  175. package/dist/esm/Fields/RadioGroup/RadioGroupContext.d.ts +2 -0
  176. package/dist/esm/Fields/RadioGroup/RadioGroupItem.js +1 -1
  177. package/dist/esm/Fields/Select/Select.tailwind.js +4 -3
  178. package/dist/esm/Fields/SelectableCard/SelectableCard.d.ts +35 -0
  179. package/dist/esm/Fields/SelectableCard/SelectableCard.js +100 -0
  180. package/dist/esm/Fields/SelectableCard/SelectableCardContext.d.ts +13 -0
  181. package/dist/esm/Fields/SelectableCard/SelectableCardContext.js +9 -0
  182. package/dist/esm/Fields/SelectableCard/SelectableCardGroup.d.ts +13 -0
  183. package/dist/esm/Fields/SelectableCard/SelectableCardGroup.js +48 -0
  184. package/dist/esm/Fields/SelectableCard/index.d.ts +2 -0
  185. package/dist/esm/Fields/SelectableCard/index.js +2 -0
  186. package/dist/esm/Fields/Switch/Switch.js +1 -1
  187. package/dist/esm/Fields/TextArea/TextArea.d.ts +5 -1
  188. package/dist/esm/Fields/TextArea/TextArea.js +3 -2
  189. package/dist/esm/Fields/TextArea/TextArea.tailwind.js +1 -1
  190. package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.d.ts +26 -0
  191. package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.js +75 -0
  192. package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.d.ts +37 -0
  193. package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.js +9 -0
  194. package/dist/esm/Fields/TextAreaAutoSize/index.d.ts +2 -0
  195. package/dist/esm/Fields/TextAreaAutoSize/index.js +1 -0
  196. package/dist/esm/Fields/index.d.ts +3 -1
  197. package/dist/esm/Fields/index.js +3 -1
  198. package/dist/esm/Helpers/ShimmerText/ShimmerText.d.ts +3 -0
  199. package/dist/esm/Helpers/ShimmerText/ShimmerText.js +21 -0
  200. package/dist/esm/Helpers/ShimmerText/ShimmerText.tailwind.d.ts +5 -0
  201. package/dist/esm/Helpers/ShimmerText/ShimmerText.tailwind.js +36 -0
  202. package/dist/esm/Helpers/ShimmerText/index.d.ts +2 -0
  203. package/dist/esm/Helpers/ShimmerText/index.js +1 -0
  204. package/dist/esm/Helpers/index.d.ts +1 -0
  205. package/dist/esm/Helpers/index.js +2 -1
  206. package/dist/esm/Helpers/utilities/focusable.tailwind.js +1 -1
  207. package/dist/esm/Helpers/utilities/utilities.tailwind.js +6 -1
  208. package/dist/esm/Indicators/Skeleton/Skeleton.d.ts +2 -2
  209. package/dist/esm/Navigation/Link/Link.d.ts +10 -0
  210. package/dist/esm/Navigation/Link/Link.js +4 -2
  211. package/dist/esm/Satellite/locale.d.ts +7 -1
  212. package/dist/esm/index.d.ts +1 -0
  213. package/dist/esm/index.js +1 -0
  214. package/dist/esm/styles/helpers/tv.d.ts +5 -0
  215. package/dist/esm/styles/helpers/tv.js +7 -0
  216. package/dist/esm/styles/tailwind.config.js +1 -1
  217. package/dist/esm/utils/getTextFromReactNode.d.ts +2 -1
  218. package/dist/esm/utils/getTextFromReactNode.js +13 -8
  219. package/dist/satellite.min.css +1 -1
  220. package/package.json +12 -3
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _ChatMessageLoader = require("./ChatMessageLoader");
7
+ Object.keys(_ChatMessageLoader).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ChatMessageLoader[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _ChatMessageLoader[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,141 @@
1
+ import type { HTMLAttributes, ReactElement, ReactNode, Ref } from "react";
2
+ import type { ChatMessageProps } from "../../Chat/ChatMessage";
3
+ import type { ChatMessageErrorProps } from "../../Chat/ChatMessageError";
4
+ import type { ChatMessageLoaderProps } from "../../Chat/ChatMessageLoader";
5
+ import type { ChatMessageBase, ChatStatus } from "../../Chat/types";
6
+ export declare type ChatMessageLocale = {
7
+ scrollToBottomText?: string;
8
+ };
9
+ declare type ChatMessageWithoutContent<Message extends ChatMessageBase> = Omit<ChatMessageProps<Message>, "content">;
10
+ export declare type ChatMessagesProps<Message extends ChatMessageBase = ChatMessageBase> = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
11
+ /**
12
+ * The messages to display in the chat.
13
+ */
14
+ messages: Message[];
15
+ /**
16
+ * The props for the user message.
17
+ */
18
+ userMessageProps?: ChatMessageWithoutContent<Message> | ((message: Message) => ChatMessageWithoutContent<Message>);
19
+ /**
20
+ * The props for the assistant message.
21
+ */
22
+ assistantMessageProps?: ChatMessageWithoutContent<Message> | ((message: Message) => ChatMessageWithoutContent<Message>);
23
+ /**
24
+ * The props for the loader message.
25
+ */
26
+ loaderProps?: ChatMessageLoaderProps;
27
+ /**
28
+ * The props for the error message.
29
+ */
30
+ errorProps?: Omit<ChatMessageErrorProps, "onReload">;
31
+ /**
32
+ * The function to render the message.
33
+ */
34
+ renderMessage?: (message: Message) => ReactNode;
35
+ /**
36
+ * The function to render the loader message.
37
+ */
38
+ renderLoader?: ReactNode;
39
+ /**
40
+ * The function to render the error message.
41
+ */
42
+ renderError?: ReactNode;
43
+ /**
44
+ * The status of the chat.
45
+ */
46
+ status?: ChatStatus;
47
+ /**
48
+ * The function to reload the chat.
49
+ */
50
+ onReload?: () => void;
51
+ /**
52
+ * Whether to hide the scroll to bottom button.
53
+ */
54
+ hideScrollToBottom?: boolean;
55
+ /**
56
+ * The class name for the scroll container.
57
+ */
58
+ scrollClassName?: string;
59
+ /**
60
+ * The class name for the content container.
61
+ */
62
+ contentClassName?: string;
63
+ /**
64
+ * The locale for the chat messages.
65
+ */
66
+ locale?: ChatMessageLocale;
67
+ /**
68
+ * Whether to enable right-to-left text direction.
69
+ */
70
+ rtl?: boolean;
71
+ };
72
+ /**
73
+ * The `ChatMessages` component provides a list of messages to display in the chat.
74
+ *
75
+ * See the [ChatMessages documentation page](https://satellite.algolia.com/8261d6576/p/06f740-chat-messages) for more information.
76
+ */
77
+ export declare const ChatMessages: <Message extends ChatMessageBase = ChatMessageBase>(props: Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
78
+ /**
79
+ * The messages to display in the chat.
80
+ */
81
+ messages: Message[];
82
+ /**
83
+ * The props for the user message.
84
+ */
85
+ userMessageProps?: ChatMessageWithoutContent<Message> | ((message: Message) => ChatMessageWithoutContent<Message>) | undefined;
86
+ /**
87
+ * The props for the assistant message.
88
+ */
89
+ assistantMessageProps?: ChatMessageWithoutContent<Message> | ((message: Message) => ChatMessageWithoutContent<Message>) | undefined;
90
+ /**
91
+ * The props for the loader message.
92
+ */
93
+ loaderProps?: ChatMessageLoaderProps | undefined;
94
+ /**
95
+ * The props for the error message.
96
+ */
97
+ errorProps?: Omit<ChatMessageErrorProps, "onReload"> | undefined;
98
+ /**
99
+ * The function to render the message.
100
+ */
101
+ renderMessage?: ((message: Message) => ReactNode) | undefined;
102
+ /**
103
+ * The function to render the loader message.
104
+ */
105
+ renderLoader?: ReactNode;
106
+ /**
107
+ * The function to render the error message.
108
+ */
109
+ renderError?: ReactNode;
110
+ /**
111
+ * The status of the chat.
112
+ */
113
+ status?: ChatStatus | undefined;
114
+ /**
115
+ * The function to reload the chat.
116
+ */
117
+ onReload?: (() => void) | undefined;
118
+ /**
119
+ * Whether to hide the scroll to bottom button.
120
+ */
121
+ hideScrollToBottom?: boolean | undefined;
122
+ /**
123
+ * The class name for the scroll container.
124
+ */
125
+ scrollClassName?: string | undefined;
126
+ /**
127
+ * The class name for the content container.
128
+ */
129
+ contentClassName?: string | undefined;
130
+ /**
131
+ * The locale for the chat messages.
132
+ */
133
+ locale?: ChatMessageLocale | undefined;
134
+ /**
135
+ * Whether to enable right-to-left text direction.
136
+ */
137
+ rtl?: boolean | undefined;
138
+ } & {
139
+ ref?: Ref<HTMLDivElement> | undefined;
140
+ }) => ReactElement | null;
141
+ export {};
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ChatMessages = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _react = require("react");
13
+ var _useStickToBottom2 = require("use-stick-to-bottom");
14
+ var _ChatMessages = require("./ChatMessages.styles");
15
+ var _useLastMessageHeight = require("./useLastMessageHeight");
16
+ var _Actions = require("./../../Actions");
17
+ var _ChatMessage = require("./../ChatMessage");
18
+ var _ChatMessageError = require("./../ChatMessageError");
19
+ var _ChatMessageLoader = require("./../ChatMessageLoader");
20
+ var _Icons = require("./../../Icons");
21
+ var _Satellite = require("./../../Satellite");
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+ var _excluded = ["messages", "userMessageProps", "assistantMessageProps", "loaderProps", "errorProps", "renderMessage", "renderLoader", "renderError", "status", "onReload", "hideScrollToBottom", "className", "scrollClassName", "contentClassName", "locale", "rtl"];
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
+ var DEFAULT_CHAT_MESSAGE_LOCALE = {
27
+ scrollToBottomText: "Scroll to bottom"
28
+ };
29
+ function resolveProps(propsOrFn, message) {
30
+ if (typeof propsOrFn === "function") {
31
+ return propsOrFn(message);
32
+ }
33
+ return propsOrFn;
34
+ }
35
+ var ChatMessagesBase = function ChatMessagesBase(_ref, forwardedRef) {
36
+ var messages = _ref.messages,
37
+ userMessageProps = _ref.userMessageProps,
38
+ assistantMessageProps = _ref.assistantMessageProps,
39
+ loaderProps = _ref.loaderProps,
40
+ errorProps = _ref.errorProps,
41
+ renderMessage = _ref.renderMessage,
42
+ renderLoader = _ref.renderLoader,
43
+ renderError = _ref.renderError,
44
+ status = _ref.status,
45
+ onReload = _ref.onReload,
46
+ _ref$hideScrollToBott = _ref.hideScrollToBottom,
47
+ hideScrollToBottom = _ref$hideScrollToBott === void 0 ? false : _ref$hideScrollToBott,
48
+ className = _ref.className,
49
+ scrollClassName = _ref.scrollClassName,
50
+ contentClassName = _ref.contentClassName,
51
+ propsLocale = _ref.locale,
52
+ _ref$rtl = _ref.rtl,
53
+ rtl = _ref$rtl === void 0 ? false : _ref$rtl,
54
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
55
+ var contextLocale = (0, _Satellite.useLocale)("chatMessage");
56
+ var locale = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_CHAT_MESSAGE_LOCALE), contextLocale), propsLocale);
57
+ var _useStickToBottom = (0, _useStickToBottom2.useStickToBottom)({
58
+ // @ts-expect-error - Types are wrong in use-stick-to-bottom
59
+ initial: "instant",
60
+ resize: "smooth"
61
+ }),
62
+ scrollRef = _useStickToBottom.scrollRef,
63
+ contentRef = _useStickToBottom.contentRef,
64
+ isAtBottom = _useStickToBottom.isAtBottom,
65
+ scrollToBottom = _useStickToBottom.scrollToBottom;
66
+ var styles = (0, _ChatMessages.chatMessagesStyles)();
67
+ var lastUserMessageRef = (0, _react.useRef)(null);
68
+ var _useState = (0, _react.useState)(false),
69
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
70
+ lastMessageSubmitted = _useState2[0],
71
+ setLastMessageSubmitted = _useState2[1];
72
+ var lastUserMessage = (0, _toConsumableArray2["default"])(messages).reverse().find(function (m) {
73
+ return m.role === "user";
74
+ });
75
+ var lastMessageHeight = (0, _useLastMessageHeight.useLastMessageHeight)(scrollRef, lastUserMessageRef, messages, lastMessageSubmitted, 24);
76
+ var lastMessageId = (0, _react.useMemo)(function () {
77
+ var _messages;
78
+ return (_messages = messages[messages.length - 1]) === null || _messages === void 0 ? void 0 : _messages.id;
79
+ }, [messages]);
80
+ var getMessageProps = (0, _react.useCallback)(function (message) {
81
+ var propsResult;
82
+ if (message.role === "assistant") {
83
+ propsResult = resolveProps(assistantMessageProps, message);
84
+
85
+ // If the last assistant message is streaming, we don't want to render actions or footer
86
+ if ((status === "streaming" || message.content.length === 0) && lastMessageId === message.id) {
87
+ propsResult = _objectSpread(_objectSpread({}, propsResult), {}, {
88
+ renderFooter: undefined,
89
+ renderActions: undefined,
90
+ actions: undefined
91
+ });
92
+ }
93
+ } else {
94
+ propsResult = resolveProps(userMessageProps, message);
95
+ }
96
+ return propsResult;
97
+ }, [assistantMessageProps, userMessageProps, status, lastMessageId]);
98
+ (0, _react.useEffect)(function () {
99
+ if (status === "submitted" && lastUserMessage) {
100
+ setLastMessageSubmitted(true);
101
+ void scrollToBottom();
102
+ }
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
104
+ }, [status, lastUserMessage]);
105
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, props), {}, {
106
+ ref: forwardedRef,
107
+ className: styles.base({
108
+ className: className
109
+ }),
110
+ role: "log",
111
+ "aria-live": "polite",
112
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
113
+ ref: scrollRef,
114
+ className: styles.scroll({
115
+ className: scrollClassName
116
+ }),
117
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
118
+ ref: contentRef,
119
+ className: styles.content({
120
+ className: contentClassName
121
+ }),
122
+ style: {
123
+ "--last-message-height": "".concat(lastMessageHeight, "px")
124
+ },
125
+ children: [messages.map(function (message) {
126
+ var isAssistant = message.role === "assistant";
127
+ var isLastUserMessage = (lastUserMessage === null || lastUserMessage === void 0 ? void 0 : lastUserMessage.id) === message.id;
128
+ var side = isAssistant ? "left" : "right";
129
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessage.ChatMessage, _objectSpread(_objectSpread({
130
+ rtl: rtl,
131
+ ref: isLastUserMessage ? lastUserMessageRef : undefined,
132
+ side: side,
133
+ variant: isAssistant ? "subtle" : "neutral"
134
+ }, getMessageProps(message)), {}, {
135
+ content: renderMessage ? renderMessage(message) : message.content,
136
+ actionsExtraData: message,
137
+ "data-role": message.role,
138
+ "data-key": message.id
139
+ }), message.id);
140
+ }), status === "submitted" && (renderLoader !== null && renderLoader !== void 0 ? renderLoader : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessageLoader.ChatMessageLoader, _objectSpread({}, loaderProps))), status === "error" && (renderError !== null && renderError !== void 0 ? renderError : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessageError.ChatMessageError, _objectSpread(_objectSpread({}, errorProps), {}, {
141
+ onReload: onReload
142
+ })))]
143
+ })
144
+ }), !hideScrollToBottom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Actions.IconButton, {
145
+ icon: _Icons.ChevronDownIcon,
146
+ title: locale.scrollToBottomText,
147
+ size: "small",
148
+ onClick: function onClick() {
149
+ return scrollToBottom();
150
+ },
151
+ className: styles.scrollToBottom({
152
+ isAtBottom: isAtBottom
153
+ }),
154
+ tooltipHideDelay: 0,
155
+ tabIndex: isAtBottom ? -1 : 0
156
+ })]
157
+ }));
158
+ };
159
+
160
+ /**
161
+ * The `ChatMessages` component provides a list of messages to display in the chat.
162
+ *
163
+ * See the [ChatMessages documentation page](https://satellite.algolia.com/8261d6576/p/06f740-chat-messages) for more information.
164
+ */
165
+ var ChatMessages = exports.ChatMessages = /*#__PURE__*/(0, _react.forwardRef)(ChatMessagesBase);
@@ -0,0 +1,69 @@
1
+ export declare const chatMessagesStyles: import("tailwind-variants").TVReturnType<{
2
+ isAtBottom: {
3
+ true: {
4
+ scrollToBottom: string;
5
+ };
6
+ false: {
7
+ scrollToBottom: string;
8
+ };
9
+ };
10
+ }, {
11
+ base: string;
12
+ scroll: string;
13
+ content: string;
14
+ scrollToBottom: string;
15
+ }, undefined, {
16
+ responsiveVariants?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | {
17
+ isAtBottom?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
18
+ } | undefined;
19
+ } & import("tailwind-variants/dist/config").TWMConfig & {
20
+ twMergeConfig: {
21
+ prefix: string;
22
+ };
23
+ }, {
24
+ isAtBottom: {
25
+ true: {
26
+ scrollToBottom: string;
27
+ };
28
+ false: {
29
+ scrollToBottom: string;
30
+ };
31
+ };
32
+ }, {
33
+ base: string;
34
+ scroll: string;
35
+ content: string;
36
+ scrollToBottom: string;
37
+ }, import("tailwind-variants").TVReturnType<{
38
+ isAtBottom: {
39
+ true: {
40
+ scrollToBottom: string;
41
+ };
42
+ false: {
43
+ scrollToBottom: string;
44
+ };
45
+ };
46
+ }, {
47
+ base: string;
48
+ scroll: string;
49
+ content: string;
50
+ scrollToBottom: string;
51
+ }, undefined, import("tailwind-variants/dist/config").TVConfig<{
52
+ isAtBottom: {
53
+ true: {
54
+ scrollToBottom: string;
55
+ };
56
+ false: {
57
+ scrollToBottom: string;
58
+ };
59
+ };
60
+ }, {
61
+ isAtBottom: {
62
+ true: {
63
+ scrollToBottom: string;
64
+ };
65
+ false: {
66
+ scrollToBottom: string;
67
+ };
68
+ };
69
+ }>, unknown, unknown, undefined>>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.chatMessagesStyles = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _satellitePrefixer = _interopRequireDefault(require("./../../styles/helpers/satellitePrefixer"));
10
+ var _tv = require("./../../styles/helpers/tv");
11
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
12
+ var chatMessagesStyles = exports.chatMessagesStyles = (0, _tv.tv)({
13
+ slots: {
14
+ base: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["relative flex flex-col overflow-hidden h-full"]))),
15
+ scroll: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["overflow-y-auto overflow-x-hidden thin-scrollbar size-full"]))),
16
+ content: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-6 w-full flex-1 [&>article:last-of-type]:min-h-[var(--last-message-height)]"]))),
17
+ scrollToBottom: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["absolute bottom-4 left-1/2 -translate-x-1/2 transition-[transform,opacity] duration-300 ease-out"])))
18
+ },
19
+ variants: {
20
+ isAtBottom: {
21
+ "true": {
22
+ scrollToBottom: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["pointer-events-none translate-y-4 scale-95 opacity-0"])))
23
+ },
24
+ "false": {
25
+ scrollToBottom: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["translate-y-0 scale-100 opacity-100"])))
26
+ }
27
+ }
28
+ }
29
+ });
@@ -0,0 +1 @@
1
+ export * from "./ChatMessages";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _ChatMessages = require("./ChatMessages");
7
+ Object.keys(_ChatMessages).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ChatMessages[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _ChatMessages[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,14 @@
1
+ import type { RefObject } from "react";
2
+ import type { ChatMessageBase } from "../../Chat/types";
3
+ /**
4
+ * React hook to compute the “fill” height below the last user message,
5
+ * based on the scroll container’s height, the last user‐message element’s height,
6
+ * and any CSS gap/padding offsets.
7
+ *
8
+ * @param scrollRef - The ref to the scroll container.
9
+ * @param lastUserMessageRef - The ref to the last user message.
10
+ * @param messages - The messages to display in the chat.
11
+ * @param lastMessageSubmitted - Whether the last message has been submitted.
12
+ * @param spacingOffset - The spacing offset.
13
+ */
14
+ export declare function useLastMessageHeight(scrollRef: RefObject<HTMLElement>, lastUserMessageRef: RefObject<HTMLDivElement | null>, messages: ChatMessageBase[], lastMessageSubmitted: boolean, spacingOffset?: number): number;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useLastMessageHeight = useLastMessageHeight;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ /**
11
+ * React hook to compute the “fill” height below the last user message,
12
+ * based on the scroll container’s height, the last user‐message element’s height,
13
+ * and any CSS gap/padding offsets.
14
+ *
15
+ * @param scrollRef - The ref to the scroll container.
16
+ * @param lastUserMessageRef - The ref to the last user message.
17
+ * @param messages - The messages to display in the chat.
18
+ * @param lastMessageSubmitted - Whether the last message has been submitted.
19
+ * @param spacingOffset - The spacing offset.
20
+ */
21
+ function useLastMessageHeight(scrollRef, lastUserMessageRef, messages, lastMessageSubmitted) {
22
+ var spacingOffset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
23
+ var _useState = (0, _react.useState)(0),
24
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
25
+ lastMessageHeight = _useState2[0],
26
+ setLastMessageHeight = _useState2[1];
27
+ var offsetsRef = (0, _react.useRef)(0);
28
+ function getStaticOffsets() {
29
+ if (offsetsRef.current || !scrollRef.current) return offsetsRef.current;
30
+
31
+ // Compute any CSS gap/rowGap/padding offsets by reading computed style
32
+ var computed = window.getComputedStyle(scrollRef.current);
33
+ var rowGapValue = parseFloat(computed.rowGap) || parseFloat(computed.gap) || 0;
34
+ var paddingTop = parseFloat(computed.paddingTop) || 0;
35
+ var paddingBottom = parseFloat(computed.paddingBottom) || 0;
36
+ offsetsRef.current = spacingOffset + rowGapValue + paddingTop + paddingBottom;
37
+ return offsetsRef.current;
38
+ }
39
+ var updateLastMessageHeight = function updateLastMessageHeight() {
40
+ var scrollEl = scrollRef.current;
41
+ var lastUserMessageEl = lastUserMessageRef.current;
42
+ if (!scrollEl || messages.length === 0 || !lastMessageSubmitted || !lastUserMessageEl) return;
43
+ var height = Math.max(scrollEl.clientHeight - lastUserMessageEl.offsetHeight - getStaticOffsets(), 0);
44
+ setLastMessageHeight(height);
45
+ };
46
+
47
+ // Recompute whenever messages change and a new user message has just been submitted
48
+ (0, _react.useLayoutEffect)(function () {
49
+ if (!lastMessageSubmitted) return;
50
+ updateLastMessageHeight();
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, [messages.length, lastMessageSubmitted]);
53
+ return lastMessageHeight;
54
+ }
@@ -0,0 +1,105 @@
1
+ import type { FormEvent, KeyboardEvent, ReactNode } from "react";
2
+ import type { ChatStatus } from "../../Chat/types";
3
+ import type { TextAreaAutoSizeProps } from "../../Fields/TextAreaAutoSize/TextAreaAutoSize";
4
+ export declare type ChatPromptLocale = {
5
+ textareaLabel?: string;
6
+ emptyMessageTooltip?: string;
7
+ stopResponseTooltip?: string;
8
+ sendMessageTooltip?: string;
9
+ disabledTooltip?: string;
10
+ };
11
+ export declare type ChatPromptProps = Omit<TextAreaAutoSizeProps, "onSubmit"> & {
12
+ /**
13
+ * Content to render above the textarea (e.g., a title or instructions).
14
+ */
15
+ renderHeader?: ReactNode;
16
+ /**
17
+ * Content to render below the textarea (e.g., additional controls or hints).
18
+ */
19
+ renderFooter?: ReactNode;
20
+ /**
21
+ * An optional array of placeholder strings to cycle through with a typewriter effect.
22
+ * If provided and non-empty, the component will use the dynamic, animated placeholder
23
+ * text instead of any static `placeholder` prop passed in.
24
+ */
25
+ placeholders?: string[];
26
+ /**
27
+ * The current status of the chat prompt submit button:
28
+ * - "submitted": The message has been sent to the API and we're awaiting the start of the response stream.
29
+ * - "streaming": The response is actively streaming in from the API, receiving chunks of data.
30
+ * - "ready": The full response has been received and processed; a new user message can be submitted.
31
+ * - "error": An error occurred during the API request, preventing successful completion.
32
+ */
33
+ status?: ChatStatus;
34
+ /**
35
+ * Whether to automatically focus the textarea when the user starts typing.
36
+ */
37
+ autoFocusOnTyping?: boolean;
38
+ /**
39
+ * Whether to enable right-to-left (RTL) layout support.
40
+ */
41
+ rtl?: boolean;
42
+ /**
43
+ * Optional locale.
44
+ */
45
+ locale?: ChatPromptLocale;
46
+ /**
47
+ * Callback invoked when the user submits the form, either by clicking
48
+ * the submit button or pressing Enter (without Shift) inside the textarea.
49
+ */
50
+ onSubmit?: (e: KeyboardEvent<HTMLTextAreaElement> | FormEvent<HTMLFormElement>) => void;
51
+ /**
52
+ * Callback invoked when the user requests to stop the current chat response stream.
53
+ */
54
+ onStop?: () => void;
55
+ };
56
+ /**
57
+ * The `ChatPrompt` component provides a textarea for users to type messages and a button to submit them.
58
+ *
59
+ * See the [ChatPrompt documentation page](https://satellite.algolia.com/8261d6576/p/06f740-chat-prompt) for more information.
60
+ */
61
+ export declare const ChatPrompt: import("react").ForwardRefExoticComponent<Omit<TextAreaAutoSizeProps, "onSubmit"> & {
62
+ /**
63
+ * Content to render above the textarea (e.g., a title or instructions).
64
+ */
65
+ renderHeader?: ReactNode;
66
+ /**
67
+ * Content to render below the textarea (e.g., additional controls or hints).
68
+ */
69
+ renderFooter?: ReactNode;
70
+ /**
71
+ * An optional array of placeholder strings to cycle through with a typewriter effect.
72
+ * If provided and non-empty, the component will use the dynamic, animated placeholder
73
+ * text instead of any static `placeholder` prop passed in.
74
+ */
75
+ placeholders?: string[] | undefined;
76
+ /**
77
+ * The current status of the chat prompt submit button:
78
+ * - "submitted": The message has been sent to the API and we're awaiting the start of the response stream.
79
+ * - "streaming": The response is actively streaming in from the API, receiving chunks of data.
80
+ * - "ready": The full response has been received and processed; a new user message can be submitted.
81
+ * - "error": An error occurred during the API request, preventing successful completion.
82
+ */
83
+ status?: ChatStatus | undefined;
84
+ /**
85
+ * Whether to automatically focus the textarea when the user starts typing.
86
+ */
87
+ autoFocusOnTyping?: boolean | undefined;
88
+ /**
89
+ * Whether to enable right-to-left (RTL) layout support.
90
+ */
91
+ rtl?: boolean | undefined;
92
+ /**
93
+ * Optional locale.
94
+ */
95
+ locale?: ChatPromptLocale | undefined;
96
+ /**
97
+ * Callback invoked when the user submits the form, either by clicking
98
+ * the submit button or pressing Enter (without Shift) inside the textarea.
99
+ */
100
+ onSubmit?: ((e: KeyboardEvent<HTMLTextAreaElement> | FormEvent<HTMLFormElement>) => void) | undefined;
101
+ /**
102
+ * Callback invoked when the user requests to stop the current chat response stream.
103
+ */
104
+ onStop?: (() => void) | undefined;
105
+ } & import("react").RefAttributes<HTMLTextAreaElement>>;