@talk2view/sdk 0.16.2 → 0.17.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 (65) hide show
  1. package/dist/assistant-ui/index.d.ts +13 -2
  2. package/dist/assistant-ui/index.d.ts.map +1 -1
  3. package/dist/assistant-ui/index.js +15 -12
  4. package/dist/assistant-ui/index.js.map +1 -1
  5. package/dist/chat/chat.d.ts.map +1 -1
  6. package/dist/chat/chat.js +8 -3
  7. package/dist/chat/chat.js.map +1 -1
  8. package/dist/chat/lib/conversation-store.d.ts +105 -0
  9. package/dist/chat/lib/conversation-store.d.ts.map +1 -0
  10. package/dist/chat/lib/conversation-store.js +278 -0
  11. package/dist/chat/lib/conversation-store.js.map +1 -0
  12. package/dist/chat/lib/use-conversations.d.ts +13 -0
  13. package/dist/chat/lib/use-conversations.d.ts.map +1 -0
  14. package/dist/chat/lib/use-conversations.js +365 -0
  15. package/dist/chat/lib/use-conversations.js.map +1 -0
  16. package/dist/chat/provider.d.ts.map +1 -1
  17. package/dist/chat/provider.js +6 -0
  18. package/dist/chat/provider.js.map +1 -1
  19. package/dist/chat/ui/avatar.d.ts +7 -8
  20. package/dist/chat/ui/avatar.d.ts.map +1 -1
  21. package/dist/chat/ui/avatar.js +30 -18
  22. package/dist/chat/ui/avatar.js.map +1 -1
  23. package/dist/chat/ui/button.d.ts +5 -2
  24. package/dist/chat/ui/button.d.ts.map +1 -1
  25. package/dist/chat/ui/button.js +10 -3
  26. package/dist/chat/ui/button.js.map +1 -1
  27. package/dist/chat/ui/collapsible.d.ts +4 -4
  28. package/dist/chat/ui/collapsible.d.ts.map +1 -1
  29. package/dist/chat/ui/collapsible.js +18 -9
  30. package/dist/chat/ui/collapsible.js.map +1 -1
  31. package/dist/chat/ui/dialog.d.ts +11 -11
  32. package/dist/chat/ui/dialog.d.ts.map +1 -1
  33. package/dist/chat/ui/dialog.js +49 -28
  34. package/dist/chat/ui/dialog.js.map +1 -1
  35. package/dist/chat/ui/input.d.ts +1 -1
  36. package/dist/chat/ui/input.d.ts.map +1 -1
  37. package/dist/chat/ui/input.js +10 -3
  38. package/dist/chat/ui/input.js.map +1 -1
  39. package/dist/chat/ui/skeleton.d.ts +2 -1
  40. package/dist/chat/ui/skeleton.d.ts.map +1 -1
  41. package/dist/chat/ui/skeleton.js +10 -3
  42. package/dist/chat/ui/skeleton.js.map +1 -1
  43. package/dist/chat/ui/textarea.d.ts +1 -1
  44. package/dist/chat/ui/textarea.d.ts.map +1 -1
  45. package/dist/chat/ui/textarea.js +10 -3
  46. package/dist/chat/ui/textarea.js.map +1 -1
  47. package/dist/chat/ui/tooltip.d.ts +3 -2
  48. package/dist/chat/ui/tooltip.d.ts.map +1 -1
  49. package/dist/chat/ui/tooltip.js +25 -8
  50. package/dist/chat/ui/tooltip.js.map +1 -1
  51. package/dist/chat/vendor/thread-list.aui.d.ts +3 -3
  52. package/dist/chat/vendor/thread-list.aui.d.ts.map +1 -1
  53. package/dist/chat/vendor/thread-list.aui.js +7 -7
  54. package/dist/chat/vendor/thread-list.aui.js.map +1 -1
  55. package/dist/chat-css.js +1 -1
  56. package/dist/chat.css +1 -1
  57. package/dist/chat.isolated.css +3 -0
  58. package/dist/chat.raw.css +3 -0
  59. package/dist/index.d.ts +56 -2
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +104 -6
  62. package/dist/index.js.map +1 -1
  63. package/dist/types.d.ts +20 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-conversations.d.ts","sourceRoot":"","sources":["../../../src/chat/lib/use-conversations.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAA2B,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAyDhD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAChC,8BAA8B,CAwPhC"}
@@ -0,0 +1,365 @@
1
+ 'use client';
2
+ /**
3
+ * The chat's list of conversations: what "New chat" starts, what the Chats view
4
+ * shows, and what survives a reload.
5
+ *
6
+ * It owns the list and hands assistant-ui a thread-list adapter for it. The
7
+ * runtime stays dumb: it passes the adapter through and knows nothing about
8
+ * storage. {@link conversation-store} is the storage half.
9
+ *
10
+ * ## What happens when
11
+ *
12
+ * - **New chat** — the conversation on screen is kept where it is and an empty
13
+ * one takes its place. Clicking it again on an empty chat does nothing, so
14
+ * the list does not fill up with blanks.
15
+ * - **Switching** — the client is handed the stored transcript and the engine
16
+ * session is detached, not deleted: the visitor may switch back, and the turn
17
+ * it is running may not be finished. The next message opens a new session and
18
+ * replays the transcript into it.
19
+ * - **Signing in or out** — the list follows the end-user. Whoever is there now
20
+ * sees their own conversations and an empty chat, never the last person's.
21
+ * The one exception is a visitor who started typing before anything
22
+ * authenticated: their conversation moves across with them when the guest
23
+ * session appears, because it was theirs all along.
24
+ * - **A guest becoming an account** — nothing moves. Converting keeps the same
25
+ * user id, so the conversations are already in the right bucket.
26
+ */
27
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
28
+ import { UNTITLED, identityKey, readConversations, titleFrom, writeConversations, } from './conversation-store.js';
29
+ /**
30
+ * Written this long after the last change, so a reply is stored once when it
31
+ * lands and not once per token.
32
+ */
33
+ const WRITE_DELAY_MS = 500;
34
+ /**
35
+ * …but never delayed longer than this. A reply that streams for a minute is
36
+ * checkpointed as it goes, so a reload in the middle of one keeps what arrived.
37
+ */
38
+ const WRITE_MAX_DELAY_MS = 5_000;
39
+ const EMPTY = { messages: [], history: [], threadId: null };
40
+ /**
41
+ * The thread-list adapter for `adapters.threadList`.
42
+ *
43
+ * With `enabled` false there is no list and nothing is stored, but New chat
44
+ * still works: it clears the conversation the way it always did, deleting the
45
+ * engine session too, because with no list there is no way back to it.
46
+ */
47
+ export function useConversations(client, { enabled }) {
48
+ const partnerKey = client.config.partnerKey;
49
+ // A mutable store plus a counter to re-render on: the snapshot of the
50
+ // conversation on screen changes on every streamed token, and the list only
51
+ // changes when a conversation is added, renamed, deleted or gains a message.
52
+ // Keeping them apart is what stops a reply repainting the list 60 times.
53
+ const store = useRef(null);
54
+ const [, setListVersion] = useState(0);
55
+ const publish = useCallback(() => setListVersion((n) => n + 1), []);
56
+ // Once, on the first render. Deliberately not in an effect: `start` may put a
57
+ // stored conversation back into the client, and the runtime reads the client's
58
+ // messages as its own initial state on this same render. Restoring later would
59
+ // paint the welcome screen first and replace it a frame afterwards. Nothing is
60
+ // subscribed to the client yet at this point — this hook is called before the
61
+ // runtime's — so the change this publishes reaches no other component.
62
+ if (store.current === null) {
63
+ store.current = start(client, partnerKey, enabled);
64
+ }
65
+ // ── Persistence ──────────────────────────────────────────────────────────
66
+ const timer = useRef(null);
67
+ const oldestPending = useRef(0);
68
+ const flush = useCallback(() => {
69
+ if (timer.current !== null) {
70
+ clearTimeout(timer.current);
71
+ timer.current = null;
72
+ }
73
+ oldestPending.current = 0;
74
+ const s = store.current;
75
+ if (!enabled)
76
+ return;
77
+ writeConversations(partnerKey, s.identity, s.conversations, s.currentId);
78
+ }, [enabled, partnerKey]);
79
+ const schedule = useCallback(() => {
80
+ if (!enabled)
81
+ return;
82
+ const now = Date.now();
83
+ if (oldestPending.current === 0)
84
+ oldestPending.current = now;
85
+ if (timer.current !== null)
86
+ clearTimeout(timer.current);
87
+ const wait = Math.min(WRITE_DELAY_MS, Math.max(0, oldestPending.current + WRITE_MAX_DELAY_MS - now));
88
+ timer.current = setTimeout(flush, wait);
89
+ }, [enabled, flush]);
90
+ // Closing the tab, or a phone putting the page to sleep, does not wait for a
91
+ // debounce. `pagehide` is the one that fires on the bfcache path too.
92
+ useEffect(() => {
93
+ const onHide = () => {
94
+ if (timer.current !== null)
95
+ flush();
96
+ };
97
+ const onVisibility = () => {
98
+ if (document.visibilityState === 'hidden')
99
+ onHide();
100
+ };
101
+ window.addEventListener('pagehide', onHide);
102
+ document.addEventListener('visibilitychange', onVisibility);
103
+ return () => {
104
+ window.removeEventListener('pagehide', onHide);
105
+ document.removeEventListener('visibilitychange', onVisibility);
106
+ // An unmount mid-debounce would otherwise drop the last change.
107
+ if (timer.current !== null)
108
+ flush();
109
+ };
110
+ }, [flush]);
111
+ // ── Keeping the conversation on screen up to date ────────────────────────
112
+ useEffect(() => {
113
+ if (!enabled)
114
+ return;
115
+ const sync = () => {
116
+ const s = store.current;
117
+ const current = s.conversations.find((c) => c.id === s.currentId);
118
+ if (!current)
119
+ return;
120
+ const snapshot = client.exportConversation();
121
+ current.snapshot = snapshot;
122
+ // Title and date move when the transcript gains a message, not when the
123
+ // reply in it grows by a token.
124
+ if (snapshot.messages.length !== s.seen) {
125
+ s.seen = snapshot.messages.length;
126
+ current.updatedAt = Date.now();
127
+ if (current.title === null)
128
+ current.title = titleFrom(firstUser(snapshot.messages));
129
+ reorder(s);
130
+ publish();
131
+ }
132
+ schedule();
133
+ };
134
+ const offs = [
135
+ client.on('messagesChange', sync),
136
+ // The last thing a turn does is record itself in the history the next
137
+ // message replays, and it does that after its final message change — so a
138
+ // snapshot taken on messages alone is one assistant turn short of being
139
+ // able to carry the conversation on. The loading flag drops after it.
140
+ client.on('loadingChange', (loading) => {
141
+ if (!loading)
142
+ sync();
143
+ }),
144
+ ];
145
+ return () => offs.forEach((off) => off());
146
+ }, [client, enabled, publish, schedule]);
147
+ // ── Identity ─────────────────────────────────────────────────────────────
148
+ useEffect(() => {
149
+ if (!enabled)
150
+ return;
151
+ return client.auth.onAuthStateChange((user) => {
152
+ const s = store.current;
153
+ const next = identityKey(user?.id);
154
+ if (next === s.identity)
155
+ return;
156
+ // The conversation on screen follows the end-user across exactly one
157
+ // step: out of a guest session, or out of no session at all, into the
158
+ // account they have just signed in to. That is the same person carrying
159
+ // on — the visitor who typed before anything authenticated, and the guest
160
+ // who signed up because the demo ran out.
161
+ //
162
+ // It has to be a conversation they started here, in this page's life: one
163
+ // read back out of a guest bucket may be the last visitor's, and it must
164
+ // not walk into somebody else's account. And it never crosses from one
165
+ // account to another, where the two are simply different people.
166
+ const carried = s.guest && s.fresh.has(s.currentId)
167
+ ? s.conversations.find((c) => c.id === s.currentId)
168
+ : undefined;
169
+ // What the previous identity keeps, written before we let go of it. A
170
+ // conversation that moves is taken out of it rather than left in both.
171
+ const left = carried ? s.conversations.filter((c) => c.id !== carried.id) : s.conversations;
172
+ if (timer.current !== null)
173
+ clearTimeout(timer.current);
174
+ timer.current = null;
175
+ oldestPending.current = 0;
176
+ writeConversations(partnerKey, s.identity, left, null);
177
+ s.identity = next;
178
+ s.guest = isGuest(client, next);
179
+ s.conversations = readConversations(partnerKey, next);
180
+ if (carried) {
181
+ s.conversations.unshift(carried);
182
+ reorder(s);
183
+ s.seen = client.messages.length;
184
+ }
185
+ else {
186
+ // Somebody else is in front of the chat now. They get their own list and
187
+ // an empty conversation; the last person's goes off the screen.
188
+ blank(s);
189
+ client.restoreConversation(EMPTY);
190
+ }
191
+ publish();
192
+ flush();
193
+ });
194
+ }, [client, enabled, flush, partnerKey, publish]);
195
+ // ── The adapter ──────────────────────────────────────────────────────────
196
+ const s = store.current;
197
+ const threads = useMemo(() => s.conversations
198
+ // An empty conversation is not one yet. Leaving it out is what keeps
199
+ // the Chats button off until there is something behind it, and stops
200
+ // the list opening on a single row saying "New chat".
201
+ .filter((c) => c.snapshot.messages.length > 0)
202
+ .map((c) => ({
203
+ id: c.id,
204
+ status: 'regular',
205
+ // Never left to assistant-ui's own fallback, so one word decides
206
+ // what an untitled conversation is called.
207
+ title: c.title ?? UNTITLED,
208
+ lastMessageAt: new Date(c.updatedAt),
209
+ })),
210
+ // eslint-disable-next-line react-hooks/exhaustive-deps
211
+ [s.conversations]);
212
+ const onSwitchToNewThread = useCallback(() => {
213
+ if (!enabled) {
214
+ // No list, so no way back: end the session rather than leave it behind.
215
+ client.clearMessages();
216
+ return;
217
+ }
218
+ const s = store.current;
219
+ const current = s.conversations.find((c) => c.id === s.currentId);
220
+ // Already on an empty chat. Pressing New again should not stack up blanks.
221
+ if (current && current.snapshot.messages.length === 0)
222
+ return;
223
+ blank(s);
224
+ client.restoreConversation(EMPTY);
225
+ s.seen = 0;
226
+ publish();
227
+ flush();
228
+ }, [client, enabled, flush, publish]);
229
+ const onSwitchToThread = useCallback((id) => {
230
+ const s = store.current;
231
+ const target = s.conversations.find((c) => c.id === id);
232
+ if (!target || id === s.currentId)
233
+ return;
234
+ s.currentId = id;
235
+ s.seen = target.snapshot.messages.length;
236
+ client.restoreConversation(target.snapshot);
237
+ publish();
238
+ flush();
239
+ }, [client, flush, publish]);
240
+ const onRename = useCallback((id, title) => {
241
+ const s = store.current;
242
+ const target = s.conversations.find((c) => c.id === id);
243
+ if (!target)
244
+ return;
245
+ // Renaming does not count as activity: the conversation keeps its place
246
+ // in the list instead of jumping to the top of it.
247
+ target.title = title.trim() || null;
248
+ // A new array, or the adapter would hand assistant-ui the one it already
249
+ // has and the new name would never reach the screen.
250
+ reorder(s);
251
+ publish();
252
+ flush();
253
+ }, [flush, publish]);
254
+ const onDelete = useCallback((id) => {
255
+ const s = store.current;
256
+ s.conversations = s.conversations.filter((c) => c.id !== id);
257
+ if (id === s.currentId) {
258
+ blank(s);
259
+ client.restoreConversation(EMPTY);
260
+ s.seen = 0;
261
+ }
262
+ publish();
263
+ flush();
264
+ }, [client, flush, publish]);
265
+ return useMemo(() => enabled
266
+ ? {
267
+ threadId: s.currentId,
268
+ threads,
269
+ onSwitchToNewThread,
270
+ onSwitchToThread,
271
+ onRename,
272
+ onDelete,
273
+ }
274
+ : { onSwitchToNewThread }, [enabled, s.currentId, threads, onSwitchToNewThread, onSwitchToThread, onRename, onDelete]);
275
+ }
276
+ // ── The store ──────────────────────────────────────────────────────────────
277
+ /**
278
+ * The list as it stands when the chat mounts.
279
+ *
280
+ * A client handed to the chat may already be holding a conversation — a partner
281
+ * sharing one client with the rest of their app, or a chat that unmounted and
282
+ * came back. That transcript is adopted rather than thrown away: into the
283
+ * stored conversation it came from where the last message identifies one, and
284
+ * into a new conversation where it does not.
285
+ */
286
+ function start(client, partnerKey, enabled) {
287
+ const identity = identityKey(client.auth.getUser?.()?.id);
288
+ const conversations = enabled ? readConversations(partnerKey, identity) : [];
289
+ const messages = client.messages;
290
+ const store = {
291
+ identity,
292
+ conversations,
293
+ currentId: '',
294
+ seen: 0,
295
+ fresh: new Set(),
296
+ guest: isGuest(client, identity),
297
+ };
298
+ if (messages.length > 0) {
299
+ // A transcript already in the client is one somebody is in the middle of,
300
+ // so it counts as started here however it got there.
301
+ const lastId = messages[messages.length - 1].id;
302
+ const known = conversations.find((c) => c.snapshot.messages[c.snapshot.messages.length - 1]?.id === lastId);
303
+ const conversation = known ??
304
+ {
305
+ id: newId(),
306
+ title: titleFrom(firstUser(messages)),
307
+ createdAt: Date.now(),
308
+ updatedAt: Date.now(),
309
+ snapshot: client.exportConversation(),
310
+ };
311
+ if (known)
312
+ known.snapshot = client.exportConversation();
313
+ else
314
+ conversations.unshift(conversation);
315
+ store.currentId = conversation.id;
316
+ store.seen = messages.length;
317
+ store.fresh.add(conversation.id);
318
+ return store;
319
+ }
320
+ // Nothing on screen: pick up where this device left off. The transcript is
321
+ // put back locally — the engine is not asked for anything and does not need
322
+ // to remember it. Not marked as started here: it may be an earlier visitor's.
323
+ const newest = conversations[0];
324
+ if (newest) {
325
+ client.restoreConversation(newest.snapshot);
326
+ store.currentId = newest.id;
327
+ store.seen = newest.snapshot.messages.length;
328
+ return store;
329
+ }
330
+ blank(store);
331
+ return store;
332
+ }
333
+ /** Put a fresh, empty conversation at the top of the list and make it the current one. */
334
+ function blank(store) {
335
+ const conversation = {
336
+ id: newId(),
337
+ title: null,
338
+ createdAt: Date.now(),
339
+ updatedAt: Date.now(),
340
+ snapshot: { messages: [], history: [], threadId: null },
341
+ };
342
+ store.conversations = [conversation, ...store.conversations];
343
+ store.currentId = conversation.id;
344
+ store.seen = 0;
345
+ store.fresh.add(conversation.id);
346
+ }
347
+ /** Newest first, and a new array so the adapter's `threads` is seen to have changed. */
348
+ function reorder(store) {
349
+ store.conversations = [...store.conversations].sort((a, b) => b.updatedAt - a.updatedAt);
350
+ }
351
+ function firstUser(messages) {
352
+ return messages.find((m) => m.role === 'user');
353
+ }
354
+ /** Whether there is no account behind this identity: a guest, or nobody yet. */
355
+ function isGuest(client, identity) {
356
+ return identity === identityKey(null) || client.auth.isAnonymous?.() === true;
357
+ }
358
+ /**
359
+ * `crypto.randomUUID` needs a secure context, which a partner's staging page on
360
+ * plain http is not. The id only has to be unique inside one browser's storage.
361
+ */
362
+ function newId() {
363
+ return `c_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
364
+ }
365
+ //# sourceMappingURL=use-conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-conversations.js","sourceRoot":"","sources":["../../../src/chat/lib/use-conversations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ import { assertOneAssistantUi } from './lib/guard.js';
17
17
  import { useGuestLimits } from './auth-gate.js';
18
18
  import { PortalHostContext, useCreatePortalHost } from './lib/portal-host.js';
19
19
  import { createDictationPhaseStore } from './lib/dictation-phase.js';
20
+ import { useConversations } from './lib/use-conversations.js';
20
21
  /** `dark` as a whole word, so `darkroom-theme` is not dark mode. */
21
22
  export function hasDarkClass(className) {
22
23
  return !!className && /(^|\s)dark(\s|$)/.test(className);
@@ -92,12 +93,17 @@ export function ChatProvider({ children, ...props }) {
92
93
  }, [client]);
93
94
  const dictation = useMemo(() => createDictationPhaseStore(), []);
94
95
  const { preferences } = useUserPreferences();
96
+ // Before the runtime, and it has to stay there: this may put the conversation
97
+ // this device left off on back into the client, and the runtime reads the
98
+ // client's messages as its own initial state on the same render.
99
+ const threadList = useConversations(client, { enabled: features.threadList });
95
100
  const runtime = useTalk2ViewRuntimeForClient(client, {
96
101
  systemPrompt,
97
102
  tools,
98
103
  // The end-user's choice from Settings; empty means the partner's default.
99
104
  model: preferences.model || undefined,
100
105
  attachments: features.attachments,
106
+ threadList,
101
107
  dictation: features.dictation && {
102
108
  model: preferences.sttModel || undefined,
103
109
  language: preferences.sttLanguage || undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
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 & {
2
+ declare const Avatar: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/avatar").AvatarRootProps & {
4
3
  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;
4
+ }, "ref"> & React.RefAttributes<HTMLSpanElement>>;
5
+ declare const AvatarImage: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/avatar").AvatarImageProps, "ref"> & React.RefAttributes<HTMLImageElement>>;
6
+ declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/avatar").AvatarFallbackProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
7
+ declare const AvatarBadge: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
8
+ declare const AvatarGroup: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ declare const AvatarGroupCount: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
10
  export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
12
11
  //# sourceMappingURL=avatar.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/avatar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,QAAA,MAAM,MAAM;WAGD,SAAS,GAAG,IAAI,GAAG,IAAI;iDAehC,CAAA;AAGF,QAAA,MAAM,WAAW,wIAef,CAAA;AAGF,QAAA,MAAM,cAAc,0IAelB,CAAA;AAGF,QAAA,MAAM,WAAW,sKAkBf,CAAA;AAGF,QAAA,MAAM,WAAW,mKAef,CAAA;AAGF,QAAA,MAAM,gBAAgB,mKAepB,CAAA;AAGF,OAAO,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,CAAA"}
@@ -1,24 +1,36 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ // Every component in this directory is wrapped in `forwardRef`. React 19 lets a
4
+ // plain function component read `ref` out of its props; React 18 — which this
5
+ // package still supports — strips it, warns, and the ref reaches nothing. Base
6
+ // UI hands refs to whatever it renders, so a plain function here loses them
7
+ // silently. See tests/chat/ui-refs.test.tsx.
8
+ import * as React from "react";
3
9
  import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
4
10
  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
- }
11
+ const Avatar = React.forwardRef(function Avatar({ className, size = "default", ...props }, ref) {
12
+ return (_jsx(AvatarPrimitive.Root, { ref: ref, "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 }));
13
+ });
14
+ Avatar.displayName = "Avatar";
15
+ const AvatarImage = React.forwardRef(function AvatarImage({ className, ...props }, ref) {
16
+ return (_jsx(AvatarPrimitive.Image, { ref: ref, "data-slot": "avatar-image", className: cn("aspect-square size-full rounded-full object-cover", className), ...props }));
17
+ });
18
+ AvatarImage.displayName = "AvatarImage";
19
+ const AvatarFallback = React.forwardRef(function AvatarFallback({ className, ...props }, ref) {
20
+ return (_jsx(AvatarPrimitive.Fallback, { ref: ref, "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 }));
21
+ });
22
+ AvatarFallback.displayName = "AvatarFallback";
23
+ const AvatarBadge = React.forwardRef(function AvatarBadge({ className, ...props }, ref) {
24
+ return (_jsx("span", { ref: ref, "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 }));
25
+ });
26
+ AvatarBadge.displayName = "AvatarBadge";
27
+ const AvatarGroup = React.forwardRef(function AvatarGroup({ className, ...props }, ref) {
28
+ return (_jsx("div", { ref: ref, "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 }));
29
+ });
30
+ AvatarGroup.displayName = "AvatarGroup";
31
+ const AvatarGroupCount = React.forwardRef(function AvatarGroupCount({ className, ...props }, ref) {
32
+ return (_jsx("div", { ref: ref, "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 }));
33
+ });
34
+ AvatarGroupCount.displayName = "AvatarGroupCount";
23
35
  export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
24
36
  //# sourceMappingURL=avatar.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/chat/ui/avatar.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
- import { Button as ButtonPrimitive } from "@base-ui/react/button";
1
+ import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const buttonVariants: (props?: ({
4
4
  variant?: "default" | "link" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
5
5
  size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
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;
7
+ declare const Button: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/button").ButtonProps & VariantProps<(props?: ({
8
+ variant?: "default" | "link" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
9
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
8
11
  export { Button, buttonVariants };
9
12
  //# sourceMappingURL=button.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/chat/ui/button.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;8EAmCnB,CAAA;AAED,QAAA,MAAM,MAAM;;;iIAeV,CAAA;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -1,4 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Every component in this directory is wrapped in `forwardRef`. React 19 lets a
3
+ // plain function component read `ref` out of its props; React 18 — which this
4
+ // package still supports — strips it, warns, and the ref reaches nothing. Base
5
+ // UI hands refs to whatever it renders, so a plain function here loses them
6
+ // silently. See tests/chat/ui-refs.test.tsx.
7
+ import * as React from "react";
2
8
  import { Button as ButtonPrimitive } from "@base-ui/react/button";
3
9
  import { cva } from "class-variance-authority";
4
10
  import { cn } from "../lib/cn.js";
@@ -28,8 +34,9 @@ const buttonVariants = cva("group/button inline-flex shrink-0 items-center justi
28
34
  size: "default",
29
35
  },
30
36
  });
31
- function Button({ className, variant = "default", size = "default", ...props }) {
32
- return (_jsx(ButtonPrimitive, { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
33
- }
37
+ const Button = React.forwardRef(function Button({ className, variant = "default", size = "default", ...props }, ref) {
38
+ return (_jsx(ButtonPrimitive, { ref: ref, "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
39
+ });
40
+ Button.displayName = "Button";
34
41
  export { Button, buttonVariants };
35
42
  //# sourceMappingURL=button.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/chat/ui/button.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,6CAA6C;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,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,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAG7B,SAAS,MAAM,CACf,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,EAC9D,GAAG;IAEH,OAAO,CACL,KAAC,eAAe,IACd,GAAG,EAAE,GAAG,eACE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACvD,KAAK,GACT,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}