@talk2view/sdk 0.14.0 → 0.16.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 (290) hide show
  1. package/README.md +336 -69
  2. package/dist/assistant-ui/convert.d.ts +40 -0
  3. package/dist/assistant-ui/convert.d.ts.map +1 -0
  4. package/dist/assistant-ui/convert.js +113 -0
  5. package/dist/assistant-ui/convert.js.map +1 -0
  6. package/dist/assistant-ui/dictation.d.ts +39 -0
  7. package/dist/assistant-ui/dictation.d.ts.map +1 -0
  8. package/dist/assistant-ui/dictation.js +128 -0
  9. package/dist/assistant-ui/dictation.js.map +1 -0
  10. package/dist/assistant-ui/index.d.ts +43 -0
  11. package/dist/assistant-ui/index.d.ts.map +1 -0
  12. package/dist/assistant-ui/index.js +227 -0
  13. package/dist/assistant-ui/index.js.map +1 -0
  14. package/dist/auth.d.ts +38 -3
  15. package/dist/auth.d.ts.map +1 -1
  16. package/dist/auth.js +101 -16
  17. package/dist/auth.js.map +1 -1
  18. package/dist/chat/auth-gate.d.ts +42 -0
  19. package/dist/chat/auth-gate.d.ts.map +1 -0
  20. package/dist/chat/auth-gate.js +93 -0
  21. package/dist/chat/auth-gate.js.map +1 -0
  22. package/dist/chat/chat.d.ts +36 -0
  23. package/dist/chat/chat.d.ts.map +1 -0
  24. package/dist/chat/chat.js +124 -0
  25. package/dist/chat/chat.js.map +1 -0
  26. package/dist/chat/composer-extras.d.ts +23 -0
  27. package/dist/chat/composer-extras.d.ts.map +1 -0
  28. package/dist/chat/composer-extras.js +48 -0
  29. package/dist/chat/composer-extras.js.map +1 -0
  30. package/dist/chat/hooks/use-attachment-src.d.ts +2 -0
  31. package/dist/chat/hooks/use-attachment-src.d.ts.map +1 -0
  32. package/dist/chat/hooks/use-attachment-src.js +38 -0
  33. package/dist/chat/hooks/use-attachment-src.js.map +1 -0
  34. package/dist/chat/hooks/use-copy-to-clipboard.d.ts +8 -0
  35. package/dist/chat/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  36. package/dist/chat/hooks/use-copy-to-clipboard.js +16 -0
  37. package/dist/chat/hooks/use-copy-to-clipboard.js.map +1 -0
  38. package/dist/chat/index.d.ts +32 -0
  39. package/dist/chat/index.d.ts.map +1 -0
  40. package/dist/chat/index.js +35 -0
  41. package/dist/chat/index.js.map +1 -0
  42. package/dist/chat/inject-styles.d.ts +2 -0
  43. package/dist/chat/inject-styles.d.ts.map +1 -0
  44. package/dist/chat/inject-styles.js +23 -0
  45. package/dist/chat/inject-styles.js.map +1 -0
  46. package/dist/chat/launcher.d.ts +37 -0
  47. package/dist/chat/launcher.d.ts.map +1 -0
  48. package/dist/chat/launcher.js +343 -0
  49. package/dist/chat/launcher.js.map +1 -0
  50. package/dist/chat/lib/cn.d.ts +19 -0
  51. package/dist/chat/lib/cn.d.ts.map +1 -0
  52. package/dist/chat/lib/cn.js +20 -0
  53. package/dist/chat/lib/cn.js.map +1 -0
  54. package/dist/chat/lib/dictation-phase.d.ts +9 -0
  55. package/dist/chat/lib/dictation-phase.d.ts.map +1 -0
  56. package/dist/chat/lib/dictation-phase.js +33 -0
  57. package/dist/chat/lib/dictation-phase.js.map +1 -0
  58. package/dist/chat/lib/guard.d.ts +4 -0
  59. package/dist/chat/lib/guard.d.ts.map +1 -0
  60. package/dist/chat/lib/guard.js +41 -0
  61. package/dist/chat/lib/guard.js.map +1 -0
  62. package/dist/chat/lib/launcher-variant.d.ts +33 -0
  63. package/dist/chat/lib/launcher-variant.d.ts.map +1 -0
  64. package/dist/chat/lib/launcher-variant.js +109 -0
  65. package/dist/chat/lib/launcher-variant.js.map +1 -0
  66. package/dist/chat/lib/portal-host.d.ts +13 -0
  67. package/dist/chat/lib/portal-host.d.ts.map +1 -0
  68. package/dist/chat/lib/portal-host.js +58 -0
  69. package/dist/chat/lib/portal-host.js.map +1 -0
  70. package/dist/chat/markdown.d.ts +32 -0
  71. package/dist/chat/markdown.d.ts.map +1 -0
  72. package/dist/chat/markdown.js +18 -0
  73. package/dist/chat/markdown.js.map +1 -0
  74. package/dist/chat/provider.d.ts +113 -0
  75. package/dist/chat/provider.d.ts.map +1 -0
  76. package/dist/chat/provider.js +176 -0
  77. package/dist/chat/provider.js.map +1 -0
  78. package/dist/chat/tool-fallback.d.ts +39 -0
  79. package/dist/chat/tool-fallback.d.ts.map +1 -0
  80. package/dist/chat/tool-fallback.js +167 -0
  81. package/dist/chat/tool-fallback.js.map +1 -0
  82. package/dist/chat/ui/avatar.d.ts +12 -0
  83. package/dist/chat/ui/avatar.d.ts.map +1 -0
  84. package/dist/chat/ui/avatar.js +24 -0
  85. package/dist/chat/ui/avatar.js.map +1 -0
  86. package/dist/chat/ui/button.d.ts +9 -0
  87. package/dist/chat/ui/button.d.ts.map +1 -0
  88. package/dist/chat/ui/button.js +35 -0
  89. package/dist/chat/ui/button.js.map +1 -0
  90. package/dist/chat/ui/collapsible.d.ts +6 -0
  91. package/dist/chat/ui/collapsible.d.ts.map +1 -0
  92. package/dist/chat/ui/collapsible.js +13 -0
  93. package/dist/chat/ui/collapsible.js.map +1 -0
  94. package/dist/chat/ui/dialog.d.ts +18 -0
  95. package/dist/chat/ui/dialog.d.ts.map +1 -0
  96. package/dist/chat/ui/dialog.js +42 -0
  97. package/dist/chat/ui/dialog.js.map +1 -0
  98. package/dist/chat/ui/input.d.ts +4 -0
  99. package/dist/chat/ui/input.d.ts.map +1 -0
  100. package/dist/chat/ui/input.js +8 -0
  101. package/dist/chat/ui/input.js.map +1 -0
  102. package/dist/chat/ui/skeleton.d.ts +3 -0
  103. package/dist/chat/ui/skeleton.d.ts.map +1 -0
  104. package/dist/chat/ui/skeleton.js +7 -0
  105. package/dist/chat/ui/skeleton.js.map +1 -0
  106. package/dist/chat/ui/textarea.d.ts +4 -0
  107. package/dist/chat/ui/textarea.d.ts.map +1 -0
  108. package/dist/chat/ui/textarea.js +7 -0
  109. package/dist/chat/ui/textarea.js.map +1 -0
  110. package/dist/chat/ui/tooltip.d.ts +7 -0
  111. package/dist/chat/ui/tooltip.d.ts.map +1 -0
  112. package/dist/chat/ui/tooltip.js +22 -0
  113. package/dist/chat/ui/tooltip.js.map +1 -0
  114. package/dist/chat/vendor/attachment.aui.d.ts +5 -0
  115. package/dist/chat/vendor/attachment.aui.d.ts.map +1 -0
  116. package/dist/chat/vendor/attachment.aui.js +79 -0
  117. package/dist/chat/vendor/attachment.aui.js.map +1 -0
  118. package/dist/chat/vendor/file.d.ts +41 -0
  119. package/dist/chat/vendor/file.d.ts.map +1 -0
  120. package/dist/chat/vendor/file.js +137 -0
  121. package/dist/chat/vendor/file.js.map +1 -0
  122. package/dist/chat/vendor/follow-up-suggestions.aui.d.ts +3 -0
  123. package/dist/chat/vendor/follow-up-suggestions.aui.d.ts.map +1 -0
  124. package/dist/chat/vendor/follow-up-suggestions.aui.js +45 -0
  125. package/dist/chat/vendor/follow-up-suggestions.aui.js.map +1 -0
  126. package/dist/chat/vendor/image.d.ts +47 -0
  127. package/dist/chat/vendor/image.d.ts.map +1 -0
  128. package/dist/chat/vendor/image.js +258 -0
  129. package/dist/chat/vendor/image.js.map +1 -0
  130. package/dist/chat/vendor/markdown-text.d.ts +8 -0
  131. package/dist/chat/vendor/markdown-text.d.ts.map +1 -0
  132. package/dist/chat/vendor/markdown-text.js +73 -0
  133. package/dist/chat/vendor/markdown-text.js.map +1 -0
  134. package/dist/chat/vendor/reasoning.aui.d.ts +22 -0
  135. package/dist/chat/vendor/reasoning.aui.d.ts.map +1 -0
  136. package/dist/chat/vendor/reasoning.aui.js +56 -0
  137. package/dist/chat/vendor/reasoning.aui.js.map +1 -0
  138. package/dist/chat/vendor/reasoning.d.ts +35 -0
  139. package/dist/chat/vendor/reasoning.d.ts.map +1 -0
  140. package/dist/chat/vendor/reasoning.js +112 -0
  141. package/dist/chat/vendor/reasoning.js.map +1 -0
  142. package/dist/chat/vendor/thread-list.aui.d.ts +37 -0
  143. package/dist/chat/vendor/thread-list.aui.d.ts.map +1 -0
  144. package/dist/chat/vendor/thread-list.aui.js +154 -0
  145. package/dist/chat/vendor/thread-list.aui.js.map +1 -0
  146. package/dist/chat/vendor/thread.aui.d.ts +47 -0
  147. package/dist/chat/vendor/thread.aui.d.ts.map +1 -0
  148. package/dist/chat/vendor/thread.aui.js +176 -0
  149. package/dist/chat/vendor/thread.aui.js.map +1 -0
  150. package/dist/chat/vendor/tool-fallback.aui.d.ts +39 -0
  151. package/dist/chat/vendor/tool-fallback.aui.d.ts.map +1 -0
  152. package/dist/chat/vendor/tool-fallback.aui.js +251 -0
  153. package/dist/chat/vendor/tool-fallback.aui.js.map +1 -0
  154. package/dist/chat/vendor/tool-group.aui.d.ts +34 -0
  155. package/dist/chat/vendor/tool-group.aui.d.ts.map +1 -0
  156. package/dist/chat/vendor/tool-group.aui.js +60 -0
  157. package/dist/chat/vendor/tool-group.aui.js.map +1 -0
  158. package/dist/chat/vendor/tooltip-icon-button.d.ts +8 -0
  159. package/dist/chat/vendor/tooltip-icon-button.d.ts.map +1 -0
  160. package/dist/chat/vendor/tooltip-icon-button.js +11 -0
  161. package/dist/chat/vendor/tooltip-icon-button.js.map +1 -0
  162. package/dist/chat/views/account.d.ts +6 -0
  163. package/dist/chat/views/account.d.ts.map +1 -0
  164. package/dist/chat/views/account.js +128 -0
  165. package/dist/chat/views/account.js.map +1 -0
  166. package/dist/chat/views/settings.d.ts +2 -0
  167. package/dist/chat/views/settings.d.ts.map +1 -0
  168. package/dist/chat/views/settings.js +104 -0
  169. package/dist/chat/views/settings.js.map +1 -0
  170. package/dist/chat/views/thread-list.d.ts +10 -0
  171. package/dist/chat/views/thread-list.d.ts.map +1 -0
  172. package/dist/chat/views/thread-list.js +21 -0
  173. package/dist/chat/views/thread-list.js.map +1 -0
  174. package/dist/chat/welcome.d.ts +10 -0
  175. package/dist/chat/welcome.d.ts.map +1 -0
  176. package/dist/chat/welcome.js +9 -0
  177. package/dist/chat/welcome.js.map +1 -0
  178. package/dist/chat-css.d.ts +1 -0
  179. package/dist/chat-css.js +1 -0
  180. package/dist/chat.css +2 -0
  181. package/dist/chat.isolated.css +3819 -0
  182. package/dist/chat.raw.css +3829 -0
  183. package/dist/client.d.ts +1 -1
  184. package/dist/client.d.ts.map +1 -1
  185. package/dist/client.js +4 -4
  186. package/dist/client.js.map +1 -1
  187. package/dist/errors.d.ts +5 -3
  188. package/dist/errors.d.ts.map +1 -1
  189. package/dist/errors.js +28 -6
  190. package/dist/errors.js.map +1 -1
  191. package/dist/index.d.ts +68 -13
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +236 -35
  194. package/dist/index.js.map +1 -1
  195. package/dist/react/T2VProvider.d.ts +2 -2
  196. package/dist/react/T2VProvider.d.ts.map +1 -1
  197. package/dist/react/T2VProvider.js +1 -1
  198. package/dist/react/T2VProvider.js.map +1 -1
  199. package/dist/react/index.d.ts +14 -14
  200. package/dist/react/index.d.ts.map +1 -1
  201. package/dist/react/index.js +7 -7
  202. package/dist/react/index.js.map +1 -1
  203. package/dist/react/usePartnerConfig.d.ts +1 -1
  204. package/dist/react/usePartnerConfig.d.ts.map +1 -1
  205. package/dist/react/usePartnerConfig.js +1 -1
  206. package/dist/react/usePartnerConfig.js.map +1 -1
  207. package/dist/react/useT2VAuth.d.ts +8 -1
  208. package/dist/react/useT2VAuth.d.ts.map +1 -1
  209. package/dist/react/useT2VAuth.js +25 -6
  210. package/dist/react/useT2VAuth.js.map +1 -1
  211. package/dist/react/useT2VChat.d.ts +3 -3
  212. package/dist/react/useT2VChat.d.ts.map +1 -1
  213. package/dist/react/useT2VChat.js +1 -1
  214. package/dist/react/useT2VChat.js.map +1 -1
  215. package/dist/react/useT2VTools.d.ts +1 -1
  216. package/dist/react/useT2VTools.d.ts.map +1 -1
  217. package/dist/react/useT2VTools.js +1 -1
  218. package/dist/react/useT2VTools.js.map +1 -1
  219. package/dist/react/useUserPreferences.d.ts +1 -1
  220. package/dist/react/useUserPreferences.d.ts.map +1 -1
  221. package/dist/react/useUserPreferences.js +1 -1
  222. package/dist/react/useUserPreferences.js.map +1 -1
  223. package/dist/sessions.d.ts +3 -3
  224. package/dist/sessions.d.ts.map +1 -1
  225. package/dist/sessions.js +6 -2
  226. package/dist/sessions.js.map +1 -1
  227. package/dist/skills.d.ts +2 -2
  228. package/dist/skills.d.ts.map +1 -1
  229. package/dist/streaming.d.ts +1 -1
  230. package/dist/streaming.d.ts.map +1 -1
  231. package/dist/tools.d.ts +2 -2
  232. package/dist/tools.d.ts.map +1 -1
  233. package/dist/types.d.ts +119 -2
  234. package/dist/types.d.ts.map +1 -1
  235. package/dist/ui/components/ApprovalCard.d.ts +1 -1
  236. package/dist/ui/components/ApprovalCard.d.ts.map +1 -1
  237. package/dist/ui/components/ChatHeader.js +1 -1
  238. package/dist/ui/components/ChatHeader.js.map +1 -1
  239. package/dist/ui/components/ChatPanel.d.ts +1 -1
  240. package/dist/ui/components/ChatPanel.d.ts.map +1 -1
  241. package/dist/ui/components/ChatPanel.js +14 -13
  242. package/dist/ui/components/ChatPanel.js.map +1 -1
  243. package/dist/ui/components/ChatWidget.d.ts +1 -1
  244. package/dist/ui/components/ChatWidget.d.ts.map +1 -1
  245. package/dist/ui/components/ChatWidget.js +2 -2
  246. package/dist/ui/components/ChatWidget.js.map +1 -1
  247. package/dist/ui/components/Composer.d.ts.map +1 -1
  248. package/dist/ui/components/Composer.js +13 -6
  249. package/dist/ui/components/Composer.js.map +1 -1
  250. package/dist/ui/components/LoginForm.d.ts.map +1 -1
  251. package/dist/ui/components/LoginForm.js +19 -5
  252. package/dist/ui/components/LoginForm.js.map +1 -1
  253. package/dist/ui/components/MarkdownRenderer.d.ts +4 -0
  254. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
  255. package/dist/ui/components/MarkdownRenderer.js +7 -35
  256. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  257. package/dist/ui/components/MessageActions.js +1 -1
  258. package/dist/ui/components/MessageActions.js.map +1 -1
  259. package/dist/ui/components/MessageBubble.d.ts +1 -1
  260. package/dist/ui/components/MessageBubble.d.ts.map +1 -1
  261. package/dist/ui/components/MessageBubble.js +9 -9
  262. package/dist/ui/components/MessageBubble.js.map +1 -1
  263. package/dist/ui/components/MessageList.js +2 -2
  264. package/dist/ui/components/MessageList.js.map +1 -1
  265. package/dist/ui/components/SettingsPanel.js +4 -4
  266. package/dist/ui/components/SettingsPanel.js.map +1 -1
  267. package/dist/ui/components/Talk2View.d.ts +1 -1
  268. package/dist/ui/components/Talk2View.d.ts.map +1 -1
  269. package/dist/ui/components/Talk2View.js +16 -12
  270. package/dist/ui/components/Talk2View.js.map +1 -1
  271. package/dist/ui/components/ThinkingBlock.js +2 -2
  272. package/dist/ui/components/ThinkingBlock.js.map +1 -1
  273. package/dist/ui/components/WelcomeScreen.js +2 -2
  274. package/dist/ui/components/WelcomeScreen.js.map +1 -1
  275. package/dist/ui/context.d.ts +4 -2
  276. package/dist/ui/context.d.ts.map +1 -1
  277. package/dist/ui/context.js.map +1 -1
  278. package/dist/ui/index.d.ts +27 -26
  279. package/dist/ui/index.d.ts.map +1 -1
  280. package/dist/ui/index.js +21 -20
  281. package/dist/ui/index.js.map +1 -1
  282. package/dist/ui/safeMarkdown.d.ts +17 -0
  283. package/dist/ui/safeMarkdown.d.ts.map +1 -0
  284. package/dist/ui/safeMarkdown.js +196 -0
  285. package/dist/ui/safeMarkdown.js.map +1 -0
  286. package/dist/ui/theme.d.ts +1 -1
  287. package/dist/ui/theme.d.ts.map +1 -1
  288. package/dist/ui/utils.d.ts +1 -1
  289. package/dist/ui/utils.d.ts.map +1 -1
  290. package/package.json +64 -5
@@ -0,0 +1,167 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * How every tool call looks in the packaged chat — one component, no tool names
5
+ * hard-coded, passed to the thread as `components={{ ToolFallback }}`.
6
+ *
7
+ * Three states:
8
+ * - running — an activity row: what the host says the agent is doing
9
+ * (`describeToolActivity`) and how long it has been at it;
10
+ * - waiting on the end-user — the approval card: allow once, always allow, or
11
+ * deny with a reason, with the arguments editable first, and a warning above
12
+ * the buttons for a tool the host marks as changing the end-user's work;
13
+ * - finished — the collapsed "Used tool" line, opening to the arguments and the
14
+ * result.
15
+ *
16
+ * Two things worth knowing before restyling the card:
17
+ * - Edited arguments apply to THIS call only. "Always allow" skips the card for
18
+ * later calls, which then run with whatever the agent proposes — so the card
19
+ * does not offer it while the arguments are edited.
20
+ * - Decisions go straight to the Talk2View client (`approveToolCall`), not
21
+ * through assistant-ui's approval seam, because that seam carries a decision
22
+ * and a reason but not changed input.
23
+ */
24
+ import { useEffect, useId, useMemo, useState } from 'react';
25
+ import { LoaderIcon, ShieldAlertIcon } from 'lucide-react';
26
+ import { useToolCallElapsed, } from '@assistant-ui/react';
27
+ import { ToolFallback as VendoredToolFallback, ToolFallbackArgs, ToolFallbackContent, ToolFallbackError, ToolFallbackResult, ToolFallbackRoot, ToolFallbackTrigger, } from './vendor/tool-fallback.aui.js';
28
+ import { ToolGroupContent, ToolGroupRoot, ToolGroupTrigger } from './vendor/tool-group.aui.js';
29
+ import { CollapsibleTrigger } from './ui/collapsible.js';
30
+ import { Button } from './ui/button.js';
31
+ import { Textarea } from './ui/textarea.js';
32
+ import { cn } from './lib/cn.js';
33
+ import { useChatContext } from './provider.js';
34
+ /** True while this tool call is the one the end-user has to decide on. */
35
+ const awaitingDecision = (p) => p.approval != null && p.approval.approved === undefined && p.approval.resolution === undefined;
36
+ /** The arguments as a human reads them. `argsText` arrives as one long line. */
37
+ const prettyArgs = (args, argsText) => {
38
+ if (args && typeof args === 'object' && Object.keys(args).length > 0) {
39
+ try {
40
+ return JSON.stringify(args, null, 2);
41
+ }
42
+ catch {
43
+ /* circular or otherwise unserialisable — fall through to the raw text */
44
+ }
45
+ }
46
+ return argsText;
47
+ };
48
+ export const ToolFallback = (props) => {
49
+ if (awaitingDecision(props))
50
+ return _jsx(ApprovalCard, { ...props });
51
+ // Some other kind of pause — assistant-ui's own approval seam, a resumable
52
+ // interrupt. Upstream knows what to draw for those; we do not second-guess it.
53
+ if (props.status?.type === 'requires-action')
54
+ return _jsx(VendoredToolFallback, { ...props });
55
+ const finished = props.result !== undefined ||
56
+ props.status?.type === 'complete' ||
57
+ props.status?.type === 'incomplete';
58
+ return finished ? _jsx(FinishedCall, { ...props }) : _jsx(RunningCall, { ...props });
59
+ };
60
+ /**
61
+ * The run of tool calls in one assistant turn, as a single "2 tool calls" line.
62
+ *
63
+ * Upstream's group starts closed and stays closed, which is right for a finished
64
+ * turn and wrong for a live one: an approval card inside a closed group leaves
65
+ * the end-user looking at "1 tool call" while the agent waits on them, with
66
+ * nothing to say a decision is needed. This opens the group while the run is
67
+ * under way and leaves whatever the end-user last chose standing once it settles.
68
+ */
69
+ export function ToolGroup({ group, children, }) {
70
+ const running = group.status.type === 'running';
71
+ const live = running || group.status.type === 'requires-action';
72
+ const [open, setOpen] = useState(live);
73
+ const [wasLive, setWasLive] = useState(live);
74
+ if (live !== wasLive) {
75
+ setWasLive(live);
76
+ if (live)
77
+ setOpen(true);
78
+ }
79
+ return (_jsxs(ToolGroupRoot, { variant: "ghost", open: open, onOpenChange: setOpen, children: [_jsx(ToolGroupTrigger, { count: group.indices.length, active: running }), _jsx(ToolGroupContent, { children: children })] }));
80
+ }
81
+ /**
82
+ * Seconds this call has been running. assistant-ui keeps the real clock on the
83
+ * part, but it has none for a part outside a message scope (and none at all
84
+ * until the runtime records the start), so a local tick stands in — the row must
85
+ * still count.
86
+ */
87
+ function useElapsedSeconds() {
88
+ const fromPart = useToolCallElapsed();
89
+ const [ticked, setTicked] = useState(0);
90
+ const tracked = fromPart !== undefined;
91
+ useEffect(() => {
92
+ if (tracked)
93
+ return;
94
+ const id = setInterval(() => setTicked((s) => s + 1), 1000);
95
+ return () => clearInterval(id);
96
+ }, [tracked]);
97
+ return fromPart !== undefined ? Math.floor(fromPart / 1000) : ticked;
98
+ }
99
+ function RunningCall({ toolName, args, argsText }) {
100
+ const { behaviour } = useChatContext();
101
+ const [open, setOpen] = useState(false);
102
+ const seconds = useElapsedSeconds();
103
+ const activity = behaviour.current.describeToolActivity?.(toolName, args) ?? null;
104
+ return (_jsxs(ToolFallbackRoot, { open: open, onOpenChange: setOpen, className: "t2v-tool-activity", children: [_jsxs(CollapsibleTrigger, { className: "aui-tool-fallback-trigger text-muted-foreground hover:text-foreground flex w-fit origin-left items-center gap-2 py-1.5 text-sm transition-[color,scale] active:scale-[0.98]", children: [_jsx(LoaderIcon, { "aria-hidden": "true", className: "size-4 shrink-0 animate-spin [animation-duration:0.6s] motion-reduce:animate-none" }), _jsx("span", { className: "shimmer motion-reduce:animate-none inline-block text-start leading-none", children: activity ?? 'Working…' }), _jsxs("span", { className: "text-muted-foreground text-xs tabular-nums", children: [seconds, "s"] })] }), _jsx(ToolFallbackContent, { children: _jsx(ToolFallbackArgs, { argsText: prettyArgs(args, argsText) }) })] }));
105
+ }
106
+ function FinishedCall({ toolName, args, argsText, result, status }) {
107
+ const [open, setOpen] = useState(false);
108
+ const cancelled = status?.type === 'incomplete' && status.reason === 'cancelled';
109
+ return (_jsxs(ToolFallbackRoot, { open: open, onOpenChange: setOpen, children: [_jsx(ToolFallbackTrigger, { toolName: toolName, status: status }), _jsxs(ToolFallbackContent, { children: [_jsx(ToolFallbackError, { status: status }), _jsx(ToolFallbackArgs, { argsText: prettyArgs(args, argsText), className: cn(cancelled && 'opacity-60') }), !cancelled && _jsx(ToolFallbackResult, { result: result })] })] }));
110
+ }
111
+ function ApprovalCard({ toolName, args, argsText, approval }) {
112
+ const { client, behaviour } = useChatContext();
113
+ const original = useMemo(() => prettyArgs(args, argsText) ?? '{}', [args, argsText]);
114
+ const [editing, setEditing] = useState(false);
115
+ const [draft, setDraft] = useState(original);
116
+ const [denying, setDenying] = useState(false);
117
+ const [reason, setReason] = useState('');
118
+ const [busy, setBusy] = useState(false);
119
+ const argsId = useId();
120
+ const reasonId = useId();
121
+ // Only arguments that parse as a JSON object can be sent back changed.
122
+ const parsedDraft = () => {
123
+ try {
124
+ const value = JSON.parse(draft);
125
+ return value && typeof value === 'object' && !Array.isArray(value)
126
+ ? value
127
+ : null;
128
+ }
129
+ catch {
130
+ return null;
131
+ }
132
+ };
133
+ const draftChanged = editing && draft !== original;
134
+ const draftValid = !draftChanged || parsedDraft() !== null;
135
+ const { describeToolActivity, isToolDestructive, destructiveWarning } = behaviour.current;
136
+ const activity = describeToolActivity?.(toolName, args) ?? null;
137
+ const destructive = isToolDestructive?.(toolName, args) ?? false;
138
+ const decide = (action) => {
139
+ // Answer only the gate the client is actually holding: a card left over from
140
+ // a decision that has already moved on must not answer the next one.
141
+ if (busy || client.pendingApproval?.toolCallId !== approval?.id)
142
+ return;
143
+ setBusy(true);
144
+ const updatedInput = action === 'once' && draftChanged ? (parsedDraft() ?? undefined) : undefined;
145
+ // The client clears the gate synchronously, which unmounts this card; a
146
+ // failure surfaces on the thread's own error card.
147
+ void client.approveToolCall({
148
+ action,
149
+ // The SDK forwards a reason to the assistant only when the call is denied.
150
+ ...(action === 'deny' && reason.trim() ? { feedback: reason.trim() } : {}),
151
+ ...(updatedInput ? { updatedInput } : {}),
152
+ });
153
+ };
154
+ return (
155
+ // Not a collapsible: this is a decision to make, not a detail to expand, and
156
+ // upstream's disclosure row would announce it as "Used tool" before the
157
+ // end-user has allowed anything.
158
+ _jsxs("div", { className: "t2v-tool-approval border-primary/60 bg-muted/40 my-1.5 flex w-full flex-col gap-3 border p-3 text-sm", children: [_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(ShieldAlertIcon, { className: "text-primary mt-0.5 size-4 shrink-0", "aria-hidden": "true" }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("p", { className: "font-medium", children: ["The assistant wants to run ", toolName] }), approval?.prompt ? (_jsxs("p", { className: "text-muted-foreground text-xs", children: [_jsx("span", { className: "font-medium", children: "The assistant says:" }), ' ', _jsx("q", { className: "t2v-tool-approval-prompt italic", children: approval.prompt })] })) : null] })] }), editing ? (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { htmlFor: argsId, className: "text-muted-foreground text-xs", children: "Arguments (JSON)" }), _jsx(Textarea, { id: argsId, value: draft, onChange: (e) => setDraft(e.target.value), spellCheck: false, className: cn('font-mono text-xs', !draftValid && 'border-destructive'), rows: Math.min(12, draft.split('\n').length + 1) }), !draftValid ? (_jsx("span", { className: "text-destructive text-xs", children: "Not valid JSON \u2014 fix it or deny." })) : null, draftChanged && draftValid ? (_jsx("span", { className: "text-muted-foreground text-xs", children: "Your changes apply to this call only, so \u201CAlways allow\u201D is off while they\u2019re in place." })) : null] })) : (_jsx(ToolFallbackArgs, { argsText: original })), destructive ? (_jsx(DestructiveWarning, { toolName: toolName, activity: activity, render: destructiveWarning })) : null, denying ? (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { htmlFor: reasonId, className: "text-muted-foreground text-xs", children: "Reason for denying (optional, sent to the assistant)" }), _jsx(Textarea, { id: reasonId, value: reason, onChange: (e) => setReason(e.target.value), rows: 1, placeholder: "e.g. wrong recipient", autoFocus: true })] })) : null, _jsx("div", { className: "flex flex-wrap gap-2", children: denying ? (_jsxs(_Fragment, { children: [_jsx(Button, { size: "sm", variant: "destructive", disabled: busy, onClick: () => decide('deny'), children: "Confirm deny" }), _jsx(Button, { size: "sm", variant: "ghost", disabled: busy, onClick: () => setDenying(false), children: "Back" })] })) : (_jsxs(_Fragment, { children: [_jsx(Button, { size: "sm", disabled: busy || !draftValid, onClick: () => decide('once'), children: "Allow once" }), _jsx(Button, { size: "sm", variant: "outline", disabled: busy || draftChanged, onClick: () => decide('always'), children: "Always allow" }), _jsx(Button, { size: "sm", variant: "ghost", disabled: busy, onClick: () => setDenying(true), children: "Deny" }), _jsx(Button, { size: "sm", variant: "ghost", disabled: busy, className: "ms-auto", onClick: () => {
159
+ if (editing)
160
+ setDraft(original);
161
+ setEditing(!editing);
162
+ }, children: editing ? 'Discard edits' : 'Edit arguments' })] })) })] }));
163
+ }
164
+ function DestructiveWarning({ toolName, activity, render, }) {
165
+ return (_jsx("div", { role: "alert", className: "border-accent-amber/50 bg-accent-amber/15 text-foreground flex items-start gap-2 border px-2.5 py-2 text-xs leading-relaxed", children: render ? (render(toolName, activity)) : (_jsxs("span", { children: ["This will modify your document: ", _jsx("strong", { children: activity ?? toolName }), ". Review before approving."] })) }));
166
+ }
167
+ //# sourceMappingURL=tool-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-fallback.js","sourceRoot":"","sources":["../../src/chat/tool-fallback.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
3
+ declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
4
+ size?: "default" | "sm" | "lg";
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
9
+ declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
11
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
12
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGjE,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;CAC/B,2CAYA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAWxE;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,2CAWhC;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAczE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWxE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
4
+ import { cn } from "../lib/cn.js";
5
+ function Avatar({ className, size = "default", ...props }) {
6
+ return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", "data-size": size, className: cn("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", className), ...props }));
7
+ }
8
+ function AvatarImage({ className, ...props }) {
9
+ return (_jsx(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: cn("aspect-square size-full rounded-full object-cover", className), ...props }));
10
+ }
11
+ function AvatarFallback({ className, ...props }) {
12
+ return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className), ...props }));
13
+ }
14
+ function AvatarBadge({ className, ...props }) {
15
+ return (_jsx("span", { "data-slot": "avatar-badge", className: cn("absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className), ...props }));
16
+ }
17
+ function AvatarGroup({ className, ...props }) {
18
+ return (_jsx("div", { "data-slot": "avatar-group", className: cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className), ...props }));
19
+ }
20
+ function AvatarGroupCount({ className, ...props }) {
21
+ return (_jsx("div", { "data-slot": "avatar-group-count", className: cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className), ...props }));
22
+ }
23
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
24
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/chat/ui/avatar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EAGT;IACC,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,eACP,IAAI,EACf,SAAS,EAAE,EAAE,CACX,uPAAuP,EACvP,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACuB;IAC/B,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,iBACb,iBAAiB,EAC3B,SAAS,EAAE,EAAE,CACX,oIAAoI,EACpI,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgC;IACxE,OAAO,CACL,4BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,0KAA0K,EAC1K,+EAA+E,EAC/E,2FAA2F,EAC3F,+EAA+E,EAC/E,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,2BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACoB;IAC5B,OAAO,CACL,2BACY,oBAAoB,EAC9B,SAAS,EAAE,EAAE,CACX,0VAA0V,EAC1V,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Button as ButtonPrimitive } from "@base-ui/react/button";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "link" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
5
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function Button({ className, variant, size, ...props }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>): import("react/jsx-runtime").JSX.Element;
8
+ export { Button, buttonVariants };
9
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;8EAmCnB,CAAA;AAED,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,2CAQ7D;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button as ButtonPrimitive } from "@base-ui/react/button";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn.js";
5
+ const buttonVariants = cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
6
+ variants: {
7
+ variant: {
8
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
9
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
10
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
11
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
12
+ destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
13
+ link: "text-primary underline-offset-4 hover:underline",
14
+ },
15
+ size: {
16
+ default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
17
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
18
+ sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
19
+ lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
20
+ icon: "size-8",
21
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
22
+ "icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
23
+ "icon-lg": "size-9",
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ variant: "default",
28
+ size: "default",
29
+ },
30
+ });
31
+ function Button({ className, variant = "default", size = "default", ...props }) {
32
+ return (_jsx(ButtonPrimitive, { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
33
+ }
34
+ export { Button, buttonVariants };
35
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/chat/ui/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,cAAc,GAAG,GAAG,CACxB,4lBAA4lB,EAC5lB;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,4DAA4D;YACrE,OAAO,EACL,iLAAiL;YACnL,SAAS,EACP,iIAAiI;YACnI,KAAK,EACH,kHAAkH;YACpH,WAAW,EACT,6NAA6N;YAC/N,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EACL,sFAAsF;YACxF,EAAE,EAAE,+MAA+M;YACnN,EAAE,EAAE,yNAAyN;YAC7N,EAAE,EAAE,sFAAsF;YAC1F,IAAI,EAAE,QAAQ;YACd,SAAS,EACP,yHAAyH;YAC3H,SAAS,EACP,oFAAoF;YACtF,SAAS,EAAE,QAAQ;SACpB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAA;AAED,SAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACoD;IAC5D,OAAO,CACL,KAAC,eAAe,iBACJ,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACvD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible";
2
+ declare function Collapsible({ ...props }: CollapsiblePrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
3
+ declare function CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props): import("react/jsx-runtime").JSX.Element;
5
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent };
6
+ //# sourceMappingURL=collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEhF,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,2CAEjE;AAED,iBAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,2CAI3E;AAED,iBAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,2CAIzE;AAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible";
3
+ function Collapsible({ ...props }) {
4
+ return _jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
5
+ }
6
+ function CollapsibleTrigger({ ...props }) {
7
+ return (_jsx(CollapsiblePrimitive.Trigger, { "data-slot": "collapsible-trigger", ...props }));
8
+ }
9
+ function CollapsibleContent({ ...props }) {
10
+ return (_jsx(CollapsiblePrimitive.Panel, { "data-slot": "collapsible-content", ...props }));
11
+ }
12
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent };
13
+ //# sourceMappingURL=collapsible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible.js","sourceRoot":"","sources":["../../../src/chat/ui/collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEhF,SAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAmC;IAChE,OAAO,KAAC,oBAAoB,CAAC,IAAI,iBAAW,aAAa,KAAK,KAAK,GAAI,CAAA;AACzE,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAsC;IAC1E,OAAO,CACL,KAAC,oBAAoB,CAAC,OAAO,iBAAW,qBAAqB,KAAK,KAAK,GAAI,CAC5E,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAoC;IACxE,OAAO,CACL,KAAC,oBAAoB,CAAC,KAAK,iBAAW,qBAAqB,KAAK,KAAK,GAAI,CAC1E,CAAA;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
3
+ declare function Dialog({ ...props }: DialogPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function DialogPortal({ ...props }: DialogPrimitive.Portal.Props): import("react/jsx-runtime").JSX.Element;
6
+ declare function DialogClose({ ...props }: DialogPrimitive.Close.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: DialogPrimitive.Popup.Props & {
9
+ showCloseButton?: boolean;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
12
+ declare function DialogFooter({ className, showCloseButton, children, ...props }: React.ComponentProps<"div"> & {
13
+ showCloseButton?: boolean;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ declare function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props): import("react/jsx-runtime").JSX.Element;
16
+ declare function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props): import("react/jsx-runtime").JSX.Element;
17
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
18
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAOjE,iBAAS,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,2CAEvD;AAED,iBAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,2CAEjE;AAED,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,2CAK/D;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAE7D;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,2CAWhC;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,2CAgCA;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQzE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,2CAkBA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAWxE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,2CAWnC;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAA"}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
4
+ import { cn } from "../lib/cn.js";
5
+ import { usePortalHost } from "../lib/portal-host.js";
6
+ import { Button } from "./button.js";
7
+ import { XIcon } from "lucide-react";
8
+ function Dialog({ ...props }) {
9
+ return _jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
10
+ }
11
+ function DialogTrigger({ ...props }) {
12
+ return _jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
13
+ }
14
+ function DialogPortal({ ...props }) {
15
+ // Into the chat's portal host, so the dialog is inside the scope the whole
16
+ // stylesheet is written against. Null (no chat around it) means <body>.
17
+ const portalHost = usePortalHost();
18
+ return _jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", container: portalHost, ...props });
19
+ }
20
+ function DialogClose({ ...props }) {
21
+ return _jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
22
+ }
23
+ function DialogOverlay({ className, ...props }) {
24
+ return (_jsx(DialogPrimitive.Backdrop, { "data-slot": "dialog-overlay", className: cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
25
+ }
26
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
27
+ return (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Popup, { "data-slot": "dialog-content", className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [children, showCloseButton && (_jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", render: _jsx(Button, { variant: "ghost", className: "absolute top-2 right-2", size: "icon-sm" }), children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
28
+ }
29
+ function DialogHeader({ className, ...props }) {
30
+ return (_jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props }));
31
+ }
32
+ function DialogFooter({ className, showCloseButton = false, children, ...props }) {
33
+ return (_jsxs("div", { "data-slot": "dialog-footer", className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end", className), ...props, children: [children, showCloseButton && (_jsx(DialogPrimitive.Close, { render: _jsx(Button, { variant: "outline" }), children: "Close" }))] }));
34
+ }
35
+ function DialogTitle({ className, ...props }) {
36
+ return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn("font-heading text-base leading-none font-medium", className), ...props }));
37
+ }
38
+ function DialogDescription({ className, ...props }) {
39
+ return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props }));
40
+ }
41
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
42
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/chat/ui/dialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,SAAS,MAAM,CAAC,EAAE,GAAG,KAAK,EAA8B;IACtD,OAAO,KAAC,eAAe,CAAC,IAAI,iBAAW,QAAQ,KAAK,KAAK,GAAI,CAAA;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAiC;IAChE,OAAO,KAAC,eAAe,CAAC,OAAO,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAA;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAgC;IAC9D,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,KAAC,eAAe,CAAC,MAAM,iBAAW,eAAe,EAAC,SAAS,EAAE,UAAU,KAAM,KAAK,GAAI,CAAA;AAC/F,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAA+B;IAC5D,OAAO,KAAC,eAAe,CAAC,KAAK,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAA;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACuB;IAC/B,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,iBACb,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CACX,uLAAuL,EACvL,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,eAAe,GAAG,IAAI,EACtB,GAAG,KAAK,EAGT;IACC,OAAO,CACL,MAAC,YAAY,eACX,KAAC,aAAa,KAAG,EACjB,MAAC,eAAe,CAAC,KAAK,iBACV,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CACX,wWAAwW,EACxW,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACR,eAAe,IAAI,CAClB,MAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,MAAM,EACJ,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,wBAAwB,EAClC,IAAI,EAAC,SAAS,GACd,aAGJ,KAAC,KAAK,KACJ,EACF,eAAM,SAAS,EAAC,SAAS,sBAAa,IAChB,CACzB,IACqB,IACX,CAChB,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACxE,OAAO,CACL,2BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAC3C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,SAAS,EACT,eAAe,GAAG,KAAK,EACvB,QAAQ,EACR,GAAG,KAAK,EAGT;IACC,OAAO,CACL,4BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACR,eAAe,IAAI,CAClB,KAAC,eAAe,CAAC,KAAK,IAAC,MAAM,EAAE,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,GAAG,sBAEnC,CACzB,IACG,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,iDAAiD,EACjD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EAC0B;IAClC,OAAO,CACL,KAAC,eAAe,CAAC,WAAW,iBAChB,oBAAoB,EAC9B,SAAS,EAAE,EAAE,CACX,oGAAoG,EACpG,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ declare function Input({ className, type, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element;
3
+ export { Input };
4
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAY1E;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Input as InputPrimitive } from "@base-ui/react/input";
3
+ import { cn } from "../lib/cn.js";
4
+ function Input({ className, type, ...props }) {
5
+ return (_jsx(InputPrimitive, { type: type, "data-slot": "input", className: cn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className), ...props }));
6
+ }
7
+ export { Input };
8
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/chat/ui/input.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,6oBAA6oB,EAC7oB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
2
+ export { Skeleton };
3
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/skeleton.tsx"],"names":[],"mappings":"AAEA,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQrE;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../lib/cn.js";
3
+ function Skeleton({ className, ...props }) {
4
+ return (_jsx("div", { "data-slot": "skeleton", className: cn("animate-pulse rounded-md bg-muted", className), ...props }));
5
+ }
6
+ export { Skeleton };
7
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../../src/chat/ui/skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACpE,OAAO,CACL,2BACY,UAAU,EACpB,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,SAAS,CAAC,KACzD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): import("react/jsx-runtime").JSX.Element;
3
+ export { Textarea };
4
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,2CAW1E;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../lib/cn.js";
3
+ function Textarea({ className, ...props }) {
4
+ return (_jsx("textarea", { "data-slot": "textarea", className: cn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className), ...props }));
5
+ }
6
+ export { Textarea };
7
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/chat/ui/textarea.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoC;IACzE,OAAO,CACL,gCACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,whBAAwhB,EACxhB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
2
+ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): import("react/jsx-runtime").JSX.Element;
3
+ declare function Tooltip({ ...props }: TooltipPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): import("react/jsx-runtime").JSX.Element;
6
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
7
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIpE,iBAAS,eAAe,CAAC,EACvB,KAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,2CAQjC;AAED,iBAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAEzD;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAEnE;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,IAAY,EACZ,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CACF,gBAAgB,CAAC,UAAU,CAAC,KAAK,EACjC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAChD,2CA4BF;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
3
+ import { cn } from "../lib/cn.js";
4
+ import { usePortalHost } from "../lib/portal-host.js";
5
+ function TooltipProvider({ delay = 0, ...props }) {
6
+ return (_jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delay: delay, ...props }));
7
+ }
8
+ function Tooltip({ ...props }) {
9
+ return _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
10
+ }
11
+ function TooltipTrigger({ ...props }) {
12
+ return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
13
+ }
14
+ function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
15
+ // Portals default to <body>, outside the element the whole stylesheet is
16
+ // scoped to — a tooltip there would render unstyled. Null (no chat around it)
17
+ // means the default, which is what a standalone use of this file wants.
18
+ const portalHost = usePortalHost();
19
+ return (_jsx(TooltipPrimitive.Portal, { container: portalHost, children: _jsx(TooltipPrimitive.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: "isolate z-50", children: _jsxs(TooltipPrimitive.Popup, { "data-slot": "tooltip-content", className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [children, _jsx(TooltipPrimitive.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })] }) }) }));
20
+ }
21
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
22
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/chat/ui/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,SAAS,eAAe,CAAC,EACvB,KAAK,GAAG,CAAC,EACT,GAAG,KAAK,EACwB;IAChC,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,iBACd,kBAAkB,EAC5B,KAAK,EAAE,KAAK,KACR,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAA+B;IACxD,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAkC;IAClE,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,IAAI,GAAG,KAAK,EACZ,UAAU,GAAG,CAAC,EACd,KAAK,GAAG,QAAQ,EAChB,WAAW,GAAG,CAAC,EACf,QAAQ,EACR,GAAG,KAAK,EAKP;IACD,yEAAyE;IACzE,8EAA8E;IAC9E,wEAAwE;IACxE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,IAAC,SAAS,EAAE,UAAU,YAC5C,KAAC,gBAAgB,CAAC,UAAU,IAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,cAAc,YAExB,MAAC,gBAAgB,CAAC,KAAK,iBACX,iBAAiB,EAC3B,SAAS,EAAE,EAAE,CACX,iwBAAiwB,EACjwB,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,0hBAA0hB,GAAG,IACxiB,GACG,GACN,CAC3B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { type FC } from "react";
2
+ export declare const UserMessageAttachments: FC;
3
+ export declare const ComposerAttachments: FC;
4
+ export declare const ComposerAddAttachment: FC;
5
+ //# sourceMappingURL=attachment.aui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment.aui.d.ts","sourceRoot":"","sources":["../../../src/chat/vendor/attachment.aui.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,EAAE,EAER,MAAM,OAAO,CAAC;AA2Nf,eAAO,MAAM,sBAAsB,EAAE,EAQpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,EAQjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,EAiBnC,CAAC"}