@assistant-ui/react 0.7.91 → 0.8.0

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 (298) hide show
  1. package/dist/cloud/auiV0.js.map +1 -1
  2. package/dist/cloud/auiV0.mjs.map +1 -1
  3. package/dist/index.d.ts +0 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +0 -1
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/internal.d.ts +0 -1
  10. package/dist/internal.d.ts.map +1 -1
  11. package/dist/internal.js +0 -3
  12. package/dist/internal.js.map +1 -1
  13. package/dist/internal.mjs +0 -2
  14. package/dist/internal.mjs.map +1 -1
  15. package/dist/model-context/ModelContextTypes.d.ts +11 -0
  16. package/dist/model-context/ModelContextTypes.d.ts.map +1 -1
  17. package/dist/model-context/ModelContextTypes.js.map +1 -1
  18. package/dist/model-context/ModelContextTypes.mjs.map +1 -1
  19. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
  20. package/dist/model-context/makeAssistantVisible.js +4 -2
  21. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  22. package/dist/model-context/makeAssistantVisible.mjs +4 -2
  23. package/dist/model-context/makeAssistantVisible.mjs.map +1 -1
  24. package/dist/primitives/contentPart/index.d.ts +0 -1
  25. package/dist/primitives/contentPart/index.d.ts.map +1 -1
  26. package/dist/primitives/contentPart/index.js +0 -3
  27. package/dist/primitives/contentPart/index.js.map +1 -1
  28. package/dist/primitives/contentPart/index.mjs +0 -2
  29. package/dist/primitives/contentPart/index.mjs.map +1 -1
  30. package/dist/primitives/index.d.ts +0 -1
  31. package/dist/primitives/index.d.ts.map +1 -1
  32. package/dist/primitives/index.js +0 -3
  33. package/dist/primitives/index.js.map +1 -1
  34. package/dist/primitives/index.mjs +0 -2
  35. package/dist/primitives/index.mjs.map +1 -1
  36. package/dist/primitives/message/MessageContent.d.ts +1 -2
  37. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  38. package/dist/primitives/message/MessageContent.js +2 -7
  39. package/dist/primitives/message/MessageContent.js.map +1 -1
  40. package/dist/primitives/message/MessageContent.mjs +2 -7
  41. package/dist/primitives/message/MessageContent.mjs.map +1 -1
  42. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts.map +1 -1
  43. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +1 -3
  44. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
  45. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs +1 -3
  46. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +1 -1
  47. package/dist/runtimes/edge/converters/toCoreMessages.d.ts.map +1 -1
  48. package/dist/runtimes/edge/converters/toCoreMessages.js +1 -6
  49. package/dist/runtimes/edge/converters/toCoreMessages.js.map +1 -1
  50. package/dist/runtimes/edge/converters/toCoreMessages.mjs +1 -6
  51. package/dist/runtimes/edge/converters/toCoreMessages.mjs.map +1 -1
  52. package/dist/runtimes/edge/converters/toLanguageModelMessages.js.map +1 -1
  53. package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs.map +1 -1
  54. package/dist/runtimes/external-store/ThreadMessageLike.d.ts +2 -2
  55. package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
  56. package/dist/runtimes/external-store/ThreadMessageLike.js +0 -3
  57. package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
  58. package/dist/runtimes/external-store/ThreadMessageLike.mjs +0 -3
  59. package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
  60. package/dist/types/AssistantTypes.d.ts +3 -7
  61. package/dist/types/AssistantTypes.d.ts.map +1 -1
  62. package/dist/types/AssistantTypes.js.map +1 -1
  63. package/dist/types/ContentPartComponentTypes.d.ts +1 -3
  64. package/dist/types/ContentPartComponentTypes.d.ts.map +1 -1
  65. package/dist/types/ContentPartComponentTypes.js.map +1 -1
  66. package/dist/types/index.d.ts +1 -1
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/index.js.map +1 -1
  69. package/package.json +1 -21
  70. package/src/cloud/auiV0.ts +1 -1
  71. package/src/index.ts +0 -1
  72. package/src/internal.ts +0 -1
  73. package/src/model-context/ModelContextTypes.ts +19 -0
  74. package/src/model-context/makeAssistantVisible.tsx +4 -2
  75. package/src/primitives/contentPart/index.ts +0 -1
  76. package/src/primitives/index.ts +0 -1
  77. package/src/primitives/message/MessageContent.tsx +0 -9
  78. package/src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx +1 -3
  79. package/src/runtimes/edge/converters/toCoreMessages.ts +11 -14
  80. package/src/runtimes/edge/converters/toLanguageModelMessages.ts +2 -2
  81. package/src/runtimes/external-store/ThreadMessageLike.tsx +0 -6
  82. package/src/types/AssistantTypes.ts +4 -9
  83. package/src/types/ContentPartComponentTypes.tsx +0 -4
  84. package/src/types/index.ts +0 -2
  85. package/dist/primitives/contentPart/ContentPartDisplay.d.ts +0 -9
  86. package/dist/primitives/contentPart/ContentPartDisplay.d.ts.map +0 -1
  87. package/dist/primitives/contentPart/ContentPartDisplay.js +0 -37
  88. package/dist/primitives/contentPart/ContentPartDisplay.js.map +0 -1
  89. package/dist/primitives/contentPart/ContentPartDisplay.mjs +0 -13
  90. package/dist/primitives/contentPart/ContentPartDisplay.mjs.map +0 -1
  91. package/dist/primitives/contentPart/useContentPartDisplay.d.ts +0 -8
  92. package/dist/primitives/contentPart/useContentPartDisplay.d.ts.map +0 -1
  93. package/dist/primitives/contentPart/useContentPartDisplay.js +0 -42
  94. package/dist/primitives/contentPart/useContentPartDisplay.js.map +0 -1
  95. package/dist/primitives/contentPart/useContentPartDisplay.mjs +0 -18
  96. package/dist/primitives/contentPart/useContentPartDisplay.mjs.map +0 -1
  97. package/dist/styles/index.css +0 -1261
  98. package/dist/styles/index.css.map +0 -1
  99. package/dist/styles/modal.css +0 -143
  100. package/dist/styles/modal.css.map +0 -1
  101. package/dist/styles/tailwindcss/base-components.css +0 -69
  102. package/dist/styles/tailwindcss/base-components.css.json +0 -48
  103. package/dist/styles/tailwindcss/modal.css +0 -29
  104. package/dist/styles/tailwindcss/modal.css.json +0 -26
  105. package/dist/styles/tailwindcss/thread.css +0 -262
  106. package/dist/styles/tailwindcss/thread.css.json +0 -183
  107. package/dist/styles/themes/default.css +0 -64
  108. package/dist/styles/themes/default.css.json +0 -46
  109. package/dist/styles/themes/shadcn-extras.css +0 -4
  110. package/dist/styles/themes/shadcn-extras.css.json +0 -5
  111. package/dist/tailwindcss/index.d.ts +0 -49
  112. package/dist/tailwindcss/index.d.ts.map +0 -1
  113. package/dist/tailwindcss/index.js +0 -189
  114. package/dist/tailwindcss/index.js.map +0 -1
  115. package/dist/tailwindcss/index.mjs +0 -181
  116. package/dist/tailwindcss/index.mjs.map +0 -1
  117. package/dist/ui/assistant-action-bar.d.ts +0 -24
  118. package/dist/ui/assistant-action-bar.d.ts.map +0 -1
  119. package/dist/ui/assistant-action-bar.js +0 -193
  120. package/dist/ui/assistant-action-bar.js.map +0 -1
  121. package/dist/ui/assistant-action-bar.mjs +0 -181
  122. package/dist/ui/assistant-action-bar.mjs.map +0 -1
  123. package/dist/ui/assistant-message.d.ts +0 -13
  124. package/dist/ui/assistant-message.d.ts.map +0 -1
  125. package/dist/ui/assistant-message.js +0 -107
  126. package/dist/ui/assistant-message.js.map +0 -1
  127. package/dist/ui/assistant-message.mjs +0 -77
  128. package/dist/ui/assistant-message.mjs.map +0 -1
  129. package/dist/ui/assistant-modal.d.ts +0 -23
  130. package/dist/ui/assistant-modal.d.ts.map +0 -1
  131. package/dist/ui/assistant-modal.js +0 -126
  132. package/dist/ui/assistant-modal.js.map +0 -1
  133. package/dist/ui/assistant-modal.mjs +0 -99
  134. package/dist/ui/assistant-modal.mjs.map +0 -1
  135. package/dist/ui/attachment-ui.d.ts +0 -12
  136. package/dist/ui/attachment-ui.d.ts.map +0 -1
  137. package/dist/ui/attachment-ui.js +0 -170
  138. package/dist/ui/attachment-ui.js.map +0 -1
  139. package/dist/ui/attachment-ui.mjs +0 -160
  140. package/dist/ui/attachment-ui.mjs.map +0 -1
  141. package/dist/ui/base/CircleStopIcon.d.ts +0 -3
  142. package/dist/ui/base/CircleStopIcon.d.ts.map +0 -1
  143. package/dist/ui/base/CircleStopIcon.js +0 -45
  144. package/dist/ui/base/CircleStopIcon.js.map +0 -1
  145. package/dist/ui/base/CircleStopIcon.mjs +0 -20
  146. package/dist/ui/base/CircleStopIcon.mjs.map +0 -1
  147. package/dist/ui/base/avatar.d.ts +0 -12
  148. package/dist/ui/base/avatar.d.ts.map +0 -1
  149. package/dist/ui/base/avatar.js +0 -69
  150. package/dist/ui/base/avatar.js.map +0 -1
  151. package/dist/ui/base/avatar.mjs +0 -31
  152. package/dist/ui/base/avatar.mjs.map +0 -1
  153. package/dist/ui/base/button.d.ts +0 -16
  154. package/dist/ui/base/button.d.ts.map +0 -1
  155. package/dist/ui/base/button.js +0 -66
  156. package/dist/ui/base/button.js.map +0 -1
  157. package/dist/ui/base/button.mjs +0 -40
  158. package/dist/ui/base/button.mjs.map +0 -1
  159. package/dist/ui/base/dialog.d.ts +0 -9
  160. package/dist/ui/base/dialog.d.ts.map +0 -1
  161. package/dist/ui/base/dialog.js +0 -80
  162. package/dist/ui/base/dialog.js.map +0 -1
  163. package/dist/ui/base/dialog.mjs +0 -40
  164. package/dist/ui/base/dialog.mjs.map +0 -1
  165. package/dist/ui/base/index.d.ts +0 -6
  166. package/dist/ui/base/index.d.ts.map +0 -1
  167. package/dist/ui/base/index.js +0 -55
  168. package/dist/ui/base/index.js.map +0 -1
  169. package/dist/ui/base/index.mjs +0 -25
  170. package/dist/ui/base/index.mjs.map +0 -1
  171. package/dist/ui/base/tooltip-icon-button.d.ts +0 -17
  172. package/dist/ui/base/tooltip-icon-button.d.ts.map +0 -1
  173. package/dist/ui/base/tooltip-icon-button.js +0 -44
  174. package/dist/ui/base/tooltip-icon-button.js.map +0 -1
  175. package/dist/ui/base/tooltip-icon-button.mjs +0 -19
  176. package/dist/ui/base/tooltip-icon-button.mjs.map +0 -1
  177. package/dist/ui/base/tooltip.d.ts +0 -6
  178. package/dist/ui/base/tooltip.d.ts.map +0 -1
  179. package/dist/ui/base/tooltip.js +0 -57
  180. package/dist/ui/base/tooltip.js.map +0 -1
  181. package/dist/ui/base/tooltip.mjs +0 -20
  182. package/dist/ui/base/tooltip.mjs.map +0 -1
  183. package/dist/ui/branch-picker.d.ts +0 -15
  184. package/dist/ui/branch-picker.d.ts.map +0 -1
  185. package/dist/ui/branch-picker.js +0 -89
  186. package/dist/ui/branch-picker.js.map +0 -1
  187. package/dist/ui/branch-picker.mjs +0 -69
  188. package/dist/ui/branch-picker.mjs.map +0 -1
  189. package/dist/ui/composer.d.ts +0 -25
  190. package/dist/ui/composer.d.ts.map +0 -1
  191. package/dist/ui/composer.js +0 -168
  192. package/dist/ui/composer.js.map +0 -1
  193. package/dist/ui/composer.mjs +0 -138
  194. package/dist/ui/composer.mjs.map +0 -1
  195. package/dist/ui/content-part.d.ts +0 -7
  196. package/dist/ui/content-part.d.ts.map +0 -1
  197. package/dist/ui/content-part.js +0 -61
  198. package/dist/ui/content-part.js.map +0 -1
  199. package/dist/ui/content-part.mjs +0 -27
  200. package/dist/ui/content-part.mjs.map +0 -1
  201. package/dist/ui/edit-composer.d.ts +0 -22
  202. package/dist/ui/edit-composer.d.ts.map +0 -1
  203. package/dist/ui/edit-composer.js +0 -77
  204. package/dist/ui/edit-composer.js.map +0 -1
  205. package/dist/ui/edit-composer.mjs +0 -57
  206. package/dist/ui/edit-composer.mjs.map +0 -1
  207. package/dist/ui/index.d.ts +0 -75
  208. package/dist/ui/index.d.ts.map +0 -1
  209. package/dist/ui/index.js +0 -86
  210. package/dist/ui/index.js.map +0 -1
  211. package/dist/ui/index.mjs +0 -38
  212. package/dist/ui/index.mjs.map +0 -1
  213. package/dist/ui/thread-config.d.ts +0 -162
  214. package/dist/ui/thread-config.d.ts.map +0 -1
  215. package/dist/ui/thread-config.js +0 -63
  216. package/dist/ui/thread-config.js.map +0 -1
  217. package/dist/ui/thread-config.mjs +0 -41
  218. package/dist/ui/thread-config.mjs.map +0 -1
  219. package/dist/ui/thread-list-item.d.ts +0 -13
  220. package/dist/ui/thread-list-item.d.ts.map +0 -1
  221. package/dist/ui/thread-list-item.js +0 -94
  222. package/dist/ui/thread-list-item.js.map +0 -1
  223. package/dist/ui/thread-list-item.mjs +0 -64
  224. package/dist/ui/thread-list-item.mjs.map +0 -1
  225. package/dist/ui/thread-list.d.ts +0 -27
  226. package/dist/ui/thread-list.d.ts.map +0 -1
  227. package/dist/ui/thread-list.js +0 -91
  228. package/dist/ui/thread-list.js.map +0 -1
  229. package/dist/ui/thread-list.mjs +0 -61
  230. package/dist/ui/thread-list.mjs.map +0 -1
  231. package/dist/ui/thread-welcome.d.ts +0 -21
  232. package/dist/ui/thread-welcome.d.ts.map +0 -1
  233. package/dist/ui/thread-welcome.js +0 -101
  234. package/dist/ui/thread-welcome.js.map +0 -1
  235. package/dist/ui/thread-welcome.mjs +0 -81
  236. package/dist/ui/thread-welcome.mjs.map +0 -1
  237. package/dist/ui/thread.d.ts +0 -30
  238. package/dist/ui/thread.d.ts.map +0 -1
  239. package/dist/ui/thread.js +0 -152
  240. package/dist/ui/thread.js.map +0 -1
  241. package/dist/ui/thread.mjs +0 -125
  242. package/dist/ui/thread.mjs.map +0 -1
  243. package/dist/ui/user-action-bar.d.ts +0 -16
  244. package/dist/ui/user-action-bar.d.ts.map +0 -1
  245. package/dist/ui/user-action-bar.js +0 -63
  246. package/dist/ui/user-action-bar.js.map +0 -1
  247. package/dist/ui/user-action-bar.mjs +0 -43
  248. package/dist/ui/user-action-bar.mjs.map +0 -1
  249. package/dist/ui/user-message.d.ts +0 -13
  250. package/dist/ui/user-message.d.ts.map +0 -1
  251. package/dist/ui/user-message.js +0 -96
  252. package/dist/ui/user-message.js.map +0 -1
  253. package/dist/ui/user-message.mjs +0 -65
  254. package/dist/ui/user-message.mjs.map +0 -1
  255. package/dist/ui/utils/withDefaults.d.ts +0 -7
  256. package/dist/ui/utils/withDefaults.d.ts.map +0 -1
  257. package/dist/ui/utils/withDefaults.js +0 -66
  258. package/dist/ui/utils/withDefaults.js.map +0 -1
  259. package/dist/ui/utils/withDefaults.mjs +0 -30
  260. package/dist/ui/utils/withDefaults.mjs.map +0 -1
  261. package/src/primitives/contentPart/ContentPartDisplay.tsx +0 -20
  262. package/src/primitives/contentPart/useContentPartDisplay.tsx +0 -21
  263. package/src/styles/base.css +0 -37
  264. package/src/styles/index.css +0 -4
  265. package/src/styles/modal.css +0 -1
  266. package/src/styles/tailwindcss/base-components.css +0 -69
  267. package/src/styles/tailwindcss/modal.css +0 -29
  268. package/src/styles/tailwindcss/thread.css +0 -262
  269. package/src/styles/themes/default.css +0 -64
  270. package/src/styles/themes/shadcn-extras.css +0 -4
  271. package/src/tailwindcss/index.ts +0 -149
  272. package/src/ui/assistant-action-bar.tsx +0 -301
  273. package/src/ui/assistant-message.tsx +0 -96
  274. package/src/ui/assistant-modal.tsx +0 -146
  275. package/src/ui/attachment-ui.tsx +0 -211
  276. package/src/ui/base/CircleStopIcon.tsx +0 -17
  277. package/src/ui/base/avatar.tsx +0 -41
  278. package/src/ui/base/button.tsx +0 -42
  279. package/src/ui/base/dialog.tsx +0 -113
  280. package/src/ui/base/index.ts +0 -15
  281. package/src/ui/base/tooltip-icon-button.tsx +0 -29
  282. package/src/ui/base/tooltip.tsx +0 -22
  283. package/src/ui/branch-picker.tsx +0 -117
  284. package/src/ui/composer.tsx +0 -210
  285. package/src/ui/content-part.tsx +0 -23
  286. package/src/ui/edit-composer.tsx +0 -98
  287. package/src/ui/index.ts +0 -98
  288. package/src/ui/thread-config.tsx +0 -246
  289. package/src/ui/thread-list-item.tsx +0 -91
  290. package/src/ui/thread-list.tsx +0 -78
  291. package/src/ui/thread-welcome.tsx +0 -140
  292. package/src/ui/thread.tsx +0 -176
  293. package/src/ui/user-action-bar.tsx +0 -66
  294. package/src/ui/user-message.tsx +0 -92
  295. package/src/ui/utils/withDefaults.tsx +0 -35
  296. package/tailwindcss/README.md +0 -1
  297. package/tailwindcss/package-lock.json +0 -6
  298. package/tailwindcss/package.json +0 -5
@@ -1,301 +0,0 @@
1
- "use client";
2
-
3
- import { forwardRef, type FC } from "react";
4
- import {
5
- AudioLinesIcon,
6
- CheckIcon,
7
- CopyIcon,
8
- RefreshCwIcon,
9
- StopCircleIcon,
10
- ThumbsDownIcon,
11
- ThumbsUpIcon,
12
- } from "lucide-react";
13
- import { ActionBarPrimitive, MessagePrimitive } from "../primitives";
14
- import { TooltipIconButton } from "./base/tooltip-icon-button";
15
- import { withDefaults } from "./utils/withDefaults";
16
- import { useThreadConfig } from "./thread-config";
17
- import { useThread } from "../context";
18
-
19
- const useAllowCopy = (ensureCapability = false) => {
20
- const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
21
- const copySupported = useThread((t) => t.capabilities.unstable_copy);
22
- return allowCopy && (!ensureCapability || copySupported);
23
- };
24
-
25
- const useAllowSpeak = (ensureCapability = false) => {
26
- const { assistantMessage: { allowSpeak = true } = {} } = useThreadConfig();
27
- const speechSupported = useThread((t) => t.capabilities.speech);
28
- return allowSpeak && (!ensureCapability || speechSupported);
29
- };
30
-
31
- const useAllowReload = (ensureCapability = false) => {
32
- const { assistantMessage: { allowReload = true } = {} } = useThreadConfig();
33
- const reloadSupported = useThread((t) => t.capabilities.reload);
34
- return allowReload && (!ensureCapability || reloadSupported);
35
- };
36
-
37
- const useAllowFeedbackPositive = (ensureCapability = false) => {
38
- const { assistantMessage: { allowFeedbackPositive = true } = {} } =
39
- useThreadConfig();
40
- const feedbackSupported = useThread((t) => t.capabilities.feedback);
41
- return allowFeedbackPositive && (!ensureCapability || feedbackSupported);
42
- };
43
-
44
- const useAllowFeedbackNegative = (ensureCapability = false) => {
45
- const { assistantMessage: { allowFeedbackNegative = true } = {} } =
46
- useThreadConfig();
47
- const feedbackSupported = useThread((t) => t.capabilities.feedback);
48
- return allowFeedbackNegative && (!ensureCapability || feedbackSupported);
49
- };
50
-
51
- const AssistantActionBar: FC = () => {
52
- const allowCopy = useAllowCopy(true);
53
- const allowReload = useAllowReload(true);
54
- const allowSpeak = useAllowSpeak(true);
55
- const allowFeedbackPositive = useAllowFeedbackPositive(true);
56
- const allowFeedbackNegative = useAllowFeedbackNegative(true);
57
- if (
58
- !allowCopy &&
59
- !allowReload &&
60
- !allowSpeak &&
61
- !allowFeedbackPositive &&
62
- !allowFeedbackNegative
63
- )
64
- return null;
65
-
66
- return (
67
- <AssistantActionBarRoot
68
- hideWhenRunning
69
- autohide="not-last"
70
- autohideFloat="single-branch"
71
- >
72
- {allowSpeak && <AssistantActionBarSpeechControl />}
73
- {allowCopy && <AssistantActionBarCopy />}
74
- {allowReload && <AssistantActionBarReload />}
75
- {allowFeedbackPositive && <AssistantActionBarFeedbackPositive />}
76
- {allowFeedbackNegative && <AssistantActionBarFeedbackNegative />}
77
- </AssistantActionBarRoot>
78
- );
79
- };
80
-
81
- AssistantActionBar.displayName = "AssistantActionBar";
82
-
83
- const AssistantActionBarRoot = withDefaults(ActionBarPrimitive.Root, {
84
- className: "aui-assistant-action-bar-root",
85
- });
86
-
87
- AssistantActionBarRoot.displayName = "AssistantActionBarRoot";
88
-
89
- namespace AssistantActionBarCopy {
90
- export type Element = ActionBarPrimitive.Copy.Element;
91
- export type Props = Partial<TooltipIconButton.Props> & {
92
- copiedDuration?: number | undefined;
93
- };
94
- }
95
-
96
- const AssistantActionBarCopy = forwardRef<
97
- AssistantActionBarCopy.Element,
98
- AssistantActionBarCopy.Props
99
- >(({ copiedDuration, ...props }, ref) => {
100
- const {
101
- strings: {
102
- assistantMessage: { copy: { tooltip = "Copy" } = {} } = {},
103
- } = {},
104
- } = useThreadConfig();
105
-
106
- return (
107
- <ActionBarPrimitive.Copy copiedDuration={copiedDuration} asChild>
108
- <TooltipIconButton tooltip={tooltip} {...props} ref={ref}>
109
- {props.children ?? (
110
- <>
111
- <MessagePrimitive.If copied>
112
- <CheckIcon />
113
- </MessagePrimitive.If>
114
- <MessagePrimitive.If copied={false}>
115
- <CopyIcon />
116
- </MessagePrimitive.If>
117
- </>
118
- )}
119
- </TooltipIconButton>
120
- </ActionBarPrimitive.Copy>
121
- );
122
- });
123
-
124
- AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
125
-
126
- const AssistantActionBarSpeechControl: FC = () => {
127
- return (
128
- <>
129
- <MessagePrimitive.If speaking={false}>
130
- <AssistantActionBarSpeak />
131
- </MessagePrimitive.If>
132
- <MessagePrimitive.If speaking>
133
- <AssistantActionBarStopSpeaking />
134
- </MessagePrimitive.If>
135
- </>
136
- );
137
- };
138
-
139
- namespace AssistantActionBarSpeak {
140
- export type Element = ActionBarPrimitive.Speak.Element;
141
- export type Props = Partial<TooltipIconButton.Props>;
142
- }
143
-
144
- const AssistantActionBarSpeak = forwardRef<
145
- AssistantActionBarSpeak.Element,
146
- AssistantActionBarSpeak.Props
147
- >((props, ref) => {
148
- const {
149
- strings: {
150
- assistantMessage: { speak: { tooltip = "Read aloud" } = {} } = {},
151
- } = {},
152
- } = useThreadConfig();
153
- const allowSpeak = useAllowSpeak();
154
-
155
- return (
156
- <ActionBarPrimitive.Speak disabled={!allowSpeak} asChild>
157
- <TooltipIconButton tooltip={tooltip} {...props} ref={ref}>
158
- {props.children ?? <AudioLinesIcon />}
159
- </TooltipIconButton>
160
- </ActionBarPrimitive.Speak>
161
- );
162
- });
163
-
164
- AssistantActionBarSpeak.displayName = "AssistantActionBarSpeak";
165
-
166
- namespace AssistantActionBarStopSpeaking {
167
- export type Element = ActionBarPrimitive.StopSpeaking.Element;
168
- export type Props = Partial<TooltipIconButton.Props>;
169
- }
170
-
171
- const AssistantActionBarStopSpeaking = forwardRef<
172
- AssistantActionBarStopSpeaking.Element,
173
- AssistantActionBarStopSpeaking.Props
174
- >((props, ref) => {
175
- const {
176
- strings: {
177
- assistantMessage: {
178
- speak: { stop: { tooltip: stopTooltip = "Stop" } = {} } = {},
179
- } = {},
180
- } = {},
181
- } = useThreadConfig();
182
- const allowSpeak = useAllowSpeak();
183
-
184
- return (
185
- <ActionBarPrimitive.StopSpeaking disabled={!allowSpeak} asChild>
186
- <TooltipIconButton tooltip={stopTooltip} {...props} ref={ref}>
187
- {props.children ?? <StopCircleIcon />}
188
- </TooltipIconButton>
189
- </ActionBarPrimitive.StopSpeaking>
190
- );
191
- });
192
-
193
- AssistantActionBarStopSpeaking.displayName = "AssistantActionBarStopSpeaking";
194
-
195
- namespace AssistantActionBarReload {
196
- export type Element = ActionBarPrimitive.Reload.Element;
197
- export type Props = Partial<TooltipIconButton.Props>;
198
- }
199
-
200
- const AssistantActionBarReload = forwardRef<
201
- AssistantActionBarReload.Element,
202
- AssistantActionBarReload.Props
203
- >((props, ref) => {
204
- const {
205
- strings: {
206
- assistantMessage: { reload: { tooltip = "Refresh" } = {} } = {},
207
- } = {},
208
- } = useThreadConfig();
209
- const allowReload = useAllowReload();
210
- return (
211
- <ActionBarPrimitive.Reload disabled={!allowReload} asChild>
212
- <TooltipIconButton tooltip={tooltip} {...props} ref={ref}>
213
- {props.children ?? <RefreshCwIcon />}
214
- </TooltipIconButton>
215
- </ActionBarPrimitive.Reload>
216
- );
217
- });
218
-
219
- AssistantActionBarReload.displayName = "AssistantActionBarReload";
220
-
221
- namespace AssistantActionBarFeedbackPositive {
222
- export type Element = ActionBarPrimitive.FeedbackPositive.Element;
223
- export type Props = Partial<TooltipIconButton.Props>;
224
- }
225
-
226
- const AssistantActionBarFeedbackPositive = forwardRef<
227
- AssistantActionBarFeedbackPositive.Element,
228
- AssistantActionBarFeedbackPositive.Props
229
- >((props, ref) => {
230
- const {
231
- strings: {
232
- assistantMessage: {
233
- feedback: { positive: { tooltip = "Good response" } = {} } = {},
234
- } = {},
235
- } = {},
236
- } = useThreadConfig();
237
- const allowFeedbackPositive = useAllowFeedbackPositive();
238
- return (
239
- <ActionBarPrimitive.FeedbackPositive
240
- disabled={!allowFeedbackPositive}
241
- className="aui-assistant-action-bar-feedback-positive"
242
- asChild
243
- >
244
- <TooltipIconButton tooltip={tooltip} {...props} ref={ref}>
245
- {props.children ?? <ThumbsUpIcon />}
246
- </TooltipIconButton>
247
- </ActionBarPrimitive.FeedbackPositive>
248
- );
249
- });
250
-
251
- AssistantActionBarFeedbackPositive.displayName =
252
- "AssistantActionBarFeedbackPositive";
253
-
254
- namespace AssistantActionBarFeedbackNegative {
255
- export type Element = ActionBarPrimitive.FeedbackNegative.Element;
256
- export type Props = Partial<TooltipIconButton.Props>;
257
- }
258
-
259
- const AssistantActionBarFeedbackNegative = forwardRef<
260
- AssistantActionBarFeedbackNegative.Element,
261
- AssistantActionBarFeedbackNegative.Props
262
- >((props, ref) => {
263
- const {
264
- strings: {
265
- assistantMessage: {
266
- feedback: { negative: { tooltip = "Bad response" } = {} } = {},
267
- } = {},
268
- } = {},
269
- } = useThreadConfig();
270
- const allowFeedbackNegative = useAllowFeedbackNegative();
271
- return (
272
- <ActionBarPrimitive.FeedbackNegative
273
- disabled={!allowFeedbackNegative}
274
- className="aui-assistant-action-bar-feedback-negative"
275
- asChild
276
- >
277
- <TooltipIconButton tooltip={tooltip} {...props} ref={ref}>
278
- {props.children ?? <ThumbsDownIcon />}
279
- </TooltipIconButton>
280
- </ActionBarPrimitive.FeedbackNegative>
281
- );
282
- });
283
-
284
- AssistantActionBarFeedbackNegative.displayName =
285
- "AssistantActionBarFeedbackNegative";
286
-
287
- const exports = {
288
- Root: AssistantActionBarRoot,
289
- Reload: AssistantActionBarReload,
290
- Copy: AssistantActionBarCopy,
291
- Speak: AssistantActionBarSpeak,
292
- StopSpeaking: AssistantActionBarStopSpeaking,
293
- SpeechControl: AssistantActionBarSpeechControl,
294
- FeedbackPositive: AssistantActionBarFeedbackPositive,
295
- FeedbackNegative: AssistantActionBarFeedbackNegative,
296
- };
297
-
298
- export default Object.assign(
299
- AssistantActionBar,
300
- exports,
301
- ) as typeof AssistantActionBar & typeof exports;
@@ -1,96 +0,0 @@
1
- "use client";
2
-
3
- import { ComponentPropsWithoutRef, forwardRef, useMemo, type FC } from "react";
4
- import { MessagePrimitive } from "../primitives";
5
- import BranchPicker from "./branch-picker";
6
- import { Avatar } from "./base/avatar";
7
- import { withDefaults } from "./utils/withDefaults";
8
- import { useThreadConfig } from "./thread-config";
9
- import AssistantActionBar from "./assistant-action-bar";
10
- import ContentPart from "./content-part";
11
-
12
- const AssistantMessage: FC = () => {
13
- return (
14
- <AssistantMessageRoot>
15
- <AssistantMessageAvatar />
16
- <AssistantMessageContent />
17
- <BranchPicker />
18
- <AssistantActionBar />
19
- </AssistantMessageRoot>
20
- );
21
- };
22
-
23
- AssistantMessage.displayName = "AssistantMessage";
24
-
25
- const AssistantMessageAvatar: FC = () => {
26
- const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
27
- return <Avatar {...avatar} />;
28
- };
29
-
30
- const AssistantMessageRoot = withDefaults(MessagePrimitive.Root, {
31
- className: "aui-assistant-message-root",
32
- });
33
-
34
- AssistantMessageRoot.displayName = "AssistantMessageRoot";
35
-
36
- const AssistantMessageContentWrapper = withDefaults("div", {
37
- className: "aui-assistant-message-content",
38
- });
39
-
40
- namespace AssistantMessageContent {
41
- export type Element = HTMLDivElement;
42
- export type Props = MessagePrimitive.Content.Props &
43
- ComponentPropsWithoutRef<"div">;
44
- }
45
-
46
- const AssistantMessageContent = forwardRef<
47
- AssistantMessageContent.Element,
48
- AssistantMessageContent.Props
49
- >(({ components: componentsProp, ...rest }, ref) => {
50
- const { tools, assistantMessage: { components = {} } = {} } =
51
- useThreadConfig();
52
-
53
- const toolsComponents = useMemo(
54
- () => ({
55
- by_name: !tools
56
- ? undefined
57
- : Object.fromEntries(
58
- tools.map((t) => [
59
- t.unstable_tool.toolName,
60
- t.unstable_tool.render,
61
- ]),
62
- ),
63
- Fallback: components.ToolFallback,
64
- }),
65
- // eslint-disable-next-line react-hooks/exhaustive-deps
66
- [...(tools ?? []), components.ToolFallback],
67
- );
68
- const Footer = components.Footer;
69
-
70
- return (
71
- <AssistantMessageContentWrapper {...rest} ref={ref}>
72
- <MessagePrimitive.Content
73
- components={{
74
- ...componentsProp,
75
- Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,
76
- Empty: componentsProp?.Empty ?? components.Empty,
77
- tools: toolsComponents,
78
- }}
79
- />
80
- {Footer && <Footer />}
81
- </AssistantMessageContentWrapper>
82
- );
83
- });
84
-
85
- AssistantMessageContent.displayName = "AssistantMessageContent";
86
-
87
- const exports = {
88
- Root: AssistantMessageRoot,
89
- Avatar: AssistantMessageAvatar,
90
- Content: AssistantMessageContent,
91
- };
92
-
93
- export default Object.assign(
94
- AssistantMessage,
95
- exports,
96
- ) as typeof AssistantMessage & typeof exports;
@@ -1,146 +0,0 @@
1
- "use client";
2
-
3
- import { type FC, forwardRef } from "react";
4
- import { BotIcon, ChevronDownIcon } from "lucide-react";
5
-
6
- import { AssistantModalPrimitive } from "../primitives";
7
- import Thread from "./thread";
8
- import { withDefaults } from "./utils/withDefaults";
9
- import { TooltipIconButton } from "./base/tooltip-icon-button";
10
- import {
11
- ThreadConfig,
12
- ThreadConfigProvider,
13
- ThreadConfigProviderProps,
14
- useThreadConfig,
15
- } from "./thread-config";
16
-
17
- const AssistantModal: FC<ThreadConfig> = (config) => {
18
- return (
19
- <AssistantModalRoot config={config}>
20
- <AssistantModalTrigger />
21
- <AssistantModalContent>
22
- <Thread />
23
- </AssistantModalContent>
24
- </AssistantModalRoot>
25
- );
26
- };
27
-
28
- AssistantModal.displayName = "AssistantModal";
29
-
30
- namespace AssistantModalRoot {
31
- export type Props = AssistantModalPrimitive.Root.Props &
32
- ThreadConfigProviderProps;
33
- }
34
-
35
- const AssistantModalRoot: FC<AssistantModalRoot.Props> = ({
36
- config,
37
- ...props
38
- }) => {
39
- return (
40
- <ThreadConfigProvider config={config}>
41
- <AssistantModalPrimitive.Root {...props} />
42
- </ThreadConfigProvider>
43
- );
44
- };
45
-
46
- AssistantModalRoot.displayName = "AssistantModalRoot";
47
-
48
- namespace AssistantModalTrigger {
49
- export type Element = HTMLButtonElement;
50
- export type Props = Partial<TooltipIconButton.Props>;
51
- }
52
-
53
- const AssistantModalTrigger = forwardRef<
54
- AssistantModalTrigger.Element,
55
- AssistantModalTrigger.Props
56
- >((props, ref) => {
57
- return (
58
- <AssistantModalAnchor>
59
- <AssistantModalPrimitive.Trigger asChild>
60
- <AssistantModalButton {...props} ref={ref} />
61
- </AssistantModalPrimitive.Trigger>
62
- </AssistantModalAnchor>
63
- );
64
- });
65
-
66
- AssistantModalTrigger.displayName = "AssistantModalTrigger";
67
-
68
- const AssistantModalAnchor = withDefaults(AssistantModalPrimitive.Anchor, {
69
- className: "aui-root aui-modal-anchor",
70
- });
71
-
72
- AssistantModalAnchor.displayName = "AssistantModalAnchor";
73
-
74
- const ModalButtonStyled = withDefaults(TooltipIconButton, {
75
- variant: "default",
76
- className: "aui-modal-button",
77
- });
78
-
79
- namespace AssistantModalButton {
80
- export type Element = HTMLButtonElement;
81
- export type Props = Partial<TooltipIconButton.Props> & {
82
- "data-state"?: "open" | "closed";
83
- };
84
- }
85
-
86
- const AssistantModalButton = forwardRef<
87
- AssistantModalButton.Element,
88
- AssistantModalButton.Props
89
- >(({ "data-state": state, ...rest }, ref) => {
90
- const {
91
- strings: {
92
- assistantModal: {
93
- open: {
94
- button: { tooltip: openTooltip = "Close Assistant" } = {},
95
- } = {},
96
- closed: {
97
- button: { tooltip: closedTooltip = "Open Assistant" } = {},
98
- } = {},
99
- } = {},
100
- } = {},
101
- } = useThreadConfig();
102
- const tooltip = state === "open" ? openTooltip : closedTooltip;
103
-
104
- return (
105
- <ModalButtonStyled
106
- side="left"
107
- tooltip={tooltip}
108
- data-state={state}
109
- {...rest}
110
- ref={ref}
111
- >
112
- {rest.children ?? (
113
- <>
114
- <BotIcon
115
- data-state={state}
116
- className="aui-modal-button-closed-icon"
117
- />
118
- <ChevronDownIcon
119
- data-state={state}
120
- className="aui-modal-button-open-icon"
121
- />
122
- </>
123
- )}
124
- </ModalButtonStyled>
125
- );
126
- });
127
-
128
- AssistantModalButton.displayName = "AssistantModalButton";
129
-
130
- const AssistantModalContent = withDefaults(AssistantModalPrimitive.Content, {
131
- className: "aui-root aui-modal-content",
132
- sideOffset: 16,
133
- });
134
-
135
- AssistantModalContent.displayName = "AssistantModalContent";
136
-
137
- const exports = {
138
- Root: AssistantModalRoot,
139
- Trigger: AssistantModalTrigger,
140
- Content: AssistantModalContent,
141
- Button: AssistantModalButton,
142
- Anchor: AssistantModalAnchor,
143
- };
144
-
145
- export default Object.assign(AssistantModal, exports) as typeof AssistantModal &
146
- typeof exports;