reachat 2.1.2 → 2.2.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.
- package/dist/{CSVFileRenderer-DXI8PDqR.js → CSVFileRenderer-BOdL4Jte.js} +2 -2
- package/dist/{CSVFileRenderer-DXI8PDqR.js.map → CSVFileRenderer-BOdL4Jte.js.map} +1 -1
- package/dist/{DefaultFileRenderer-Bi8LNDio.js → DefaultFileRenderer-C2MsQ9wz.js} +3 -3
- package/dist/{DefaultFileRenderer-Bi8LNDio.js.map → DefaultFileRenderer-C2MsQ9wz.js.map} +1 -1
- package/dist/Markdown/plugins/index.d.ts +2 -0
- package/dist/Markdown/plugins/redactMatchers.d.ts +21 -0
- package/dist/Markdown/plugins/remarkRedact.d.ts +37 -0
- package/dist/SessionMessages/SessionMessage/MessageActions.d.ts +2 -2
- package/dist/SessionMessages/SessionMessage/MessageFiles.d.ts +2 -2
- package/dist/SessionMessages/SessionMessage/MessageQuestion.d.ts +2 -2
- package/dist/SessionMessages/SessionMessage/MessageResponse.d.ts +2 -2
- package/dist/SessionMessages/SessionMessage/MessageSources.d.ts +2 -2
- package/dist/SessionMessages/SessionMessage/SessionMessage.d.ts +2 -2
- package/dist/SessionsList/SessionListItem.d.ts +2 -2
- package/dist/docs.json +5 -13
- package/dist/{index-CBHNcMyR.js → index-DdRyk11n.js} +783 -1458
- package/dist/index-DdRyk11n.js.map +1 -0
- package/dist/index.css +6 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +53 -46
- package/dist/index.umd.cjs +735 -1412
- package/dist/index.umd.cjs.map +1 -1
- package/dist/stories/AgUi.stories.tsx +118 -0
- package/dist/stories/Chat.stories.tsx +6 -1
- package/dist/stories/ChatSuggestions.stories.tsx +9 -81
- package/dist/stories/Companion.stories.tsx +7 -1
- package/dist/stories/Console.stories.tsx +66 -21
- package/dist/stories/EnhancedInput.stories.tsx +7 -1
- package/dist/stories/Redact.stories.tsx +175 -0
- package/dist/stories/examples.ts +31 -0
- package/dist/useAgUi/index.d.ts +4 -0
- package/dist/useAgUi/types.d.ts +157 -0
- package/dist/useAgUi/useAgUi.d.ts +119 -0
- package/dist/useAgUi/useAgUi.spec.d.ts +1 -0
- package/package.json +3 -1
- package/dist/index-CBHNcMyR.js.map +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { FC, ReactNode, useState } from 'react';
|
|
2
|
+
import { Meta } from '@storybook/react';
|
|
3
|
+
import {
|
|
4
|
+
Chat,
|
|
5
|
+
SessionsList,
|
|
6
|
+
NewSessionButton,
|
|
7
|
+
SessionMessages,
|
|
8
|
+
SessionGroups,
|
|
9
|
+
ChatInput,
|
|
10
|
+
SessionMessagePanel,
|
|
11
|
+
SessionMessagesHeader,
|
|
12
|
+
useAgUi,
|
|
13
|
+
UseAgUiOptions
|
|
14
|
+
} from 'reachat';
|
|
15
|
+
import { Input } from 'reablocks';
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
title: 'Demos/AG-UI Protocol',
|
|
19
|
+
component: Chat
|
|
20
|
+
} as Meta;
|
|
21
|
+
|
|
22
|
+
const AgUiStory: FC<{ options?: Partial<UseAgUiOptions>; children?: ReactNode }> = ({
|
|
23
|
+
options
|
|
24
|
+
}) => {
|
|
25
|
+
const [endpoint, setEndpoint] = useState('');
|
|
26
|
+
|
|
27
|
+
const agui = useAgUi({
|
|
28
|
+
agent: endpoint || 'http://localhost:3000/api/agent',
|
|
29
|
+
onError: err => console.error('AG-UI error:', err),
|
|
30
|
+
onEvent: event => console.log('AG-UI event:', event),
|
|
31
|
+
...options
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
className="dark:bg-gray-950 bg-white"
|
|
37
|
+
style={{
|
|
38
|
+
position: 'absolute',
|
|
39
|
+
top: 0,
|
|
40
|
+
left: 0,
|
|
41
|
+
right: 0,
|
|
42
|
+
bottom: 0,
|
|
43
|
+
padding: 20,
|
|
44
|
+
margin: 20,
|
|
45
|
+
borderRadius: 5,
|
|
46
|
+
display: 'flex',
|
|
47
|
+
flexDirection: 'column',
|
|
48
|
+
overflow: 'hidden'
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
<div style={{ paddingBottom: 8, flexShrink: 0 }}>
|
|
52
|
+
<Input
|
|
53
|
+
placeholder="AG-UI agent endpoint URL"
|
|
54
|
+
value={endpoint}
|
|
55
|
+
onChange={e => setEndpoint((e.target as HTMLInputElement).value)}
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
<Chat
|
|
59
|
+
style={{ flex: 1, minHeight: 0 }}
|
|
60
|
+
viewType="console"
|
|
61
|
+
sessions={agui.sessions}
|
|
62
|
+
activeSessionId={agui.activeSessionId}
|
|
63
|
+
isLoading={agui.isLoading}
|
|
64
|
+
onSelectSession={agui.selectSession}
|
|
65
|
+
onDeleteSession={agui.deleteSession}
|
|
66
|
+
onNewSession={agui.createSession}
|
|
67
|
+
onSendMessage={agui.sendMessage}
|
|
68
|
+
onStopMessage={agui.stopMessage}
|
|
69
|
+
>
|
|
70
|
+
<SessionsList>
|
|
71
|
+
<NewSessionButton />
|
|
72
|
+
<SessionGroups />
|
|
73
|
+
</SessionsList>
|
|
74
|
+
<SessionMessagePanel>
|
|
75
|
+
<SessionMessagesHeader />
|
|
76
|
+
<SessionMessages />
|
|
77
|
+
<ChatInput />
|
|
78
|
+
</SessionMessagePanel>
|
|
79
|
+
</Chat>
|
|
80
|
+
</div>
|
|
81
|
+
);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const Basic = () => <AgUiStory />;
|
|
85
|
+
|
|
86
|
+
export const WithToolCalls = () => (
|
|
87
|
+
<AgUiStory
|
|
88
|
+
options={{
|
|
89
|
+
tools: [
|
|
90
|
+
{
|
|
91
|
+
name: 'get_weather',
|
|
92
|
+
description: 'Get the current weather for a location',
|
|
93
|
+
parameters: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
properties: {
|
|
96
|
+
location: {
|
|
97
|
+
type: 'string',
|
|
98
|
+
description: 'City name'
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
required: ['location']
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
onToolCall: async toolCall => {
|
|
106
|
+
console.log('Tool called:', toolCall);
|
|
107
|
+
if (toolCall.toolCallName === 'get_weather') {
|
|
108
|
+
const args = JSON.parse(toolCall.args);
|
|
109
|
+
console.log('Weather result:', {
|
|
110
|
+
location: args.location,
|
|
111
|
+
temperature: 72,
|
|
112
|
+
condition: 'sunny'
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}}
|
|
117
|
+
/>
|
|
118
|
+
);
|
|
@@ -11,7 +11,8 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
fakeSessions,
|
|
13
13
|
sessionWithSources,
|
|
14
|
-
sessionsWithFiles
|
|
14
|
+
sessionsWithFiles,
|
|
15
|
+
createSendMessageHandler
|
|
15
16
|
} from './examples';
|
|
16
17
|
import { useState } from 'react';
|
|
17
18
|
import Placeholder from './assets/placeholder.svg?react';
|
|
@@ -64,6 +65,7 @@ export const Compact = () => {
|
|
|
64
65
|
}}
|
|
65
66
|
onSelectSession={setActiveId}
|
|
66
67
|
onDeleteSession={() => alert('delete!')}
|
|
68
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
67
69
|
>
|
|
68
70
|
<SessionMessagePanel>
|
|
69
71
|
<SessionMessages />
|
|
@@ -116,6 +118,7 @@ export const FullScreen = () => {
|
|
|
116
118
|
}}
|
|
117
119
|
onSelectSession={setActiveId}
|
|
118
120
|
onDeleteSession={() => alert('delete!')}
|
|
121
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
119
122
|
>
|
|
120
123
|
<SessionMessagePanel>
|
|
121
124
|
<SessionMessages />
|
|
@@ -160,6 +163,7 @@ export const Empty = () => {
|
|
|
160
163
|
}}
|
|
161
164
|
onSelectSession={setActiveId}
|
|
162
165
|
onDeleteSession={() => alert('delete!')}
|
|
166
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
163
167
|
>
|
|
164
168
|
<SessionMessagePanel>
|
|
165
169
|
<SessionMessages
|
|
@@ -229,6 +233,7 @@ export const WithAppBar = () => {
|
|
|
229
233
|
}}
|
|
230
234
|
onSelectSession={setActiveId}
|
|
231
235
|
onDeleteSession={() => alert('delete!')}
|
|
236
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
232
237
|
>
|
|
233
238
|
<div className="flex flex-col h-full">
|
|
234
239
|
<AppBar
|
|
@@ -13,7 +13,11 @@ import {
|
|
|
13
13
|
ChatSuggestions,
|
|
14
14
|
Suggestion
|
|
15
15
|
} from 'reachat';
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
defaultSuggestions,
|
|
18
|
+
sessionWithSuggestions,
|
|
19
|
+
createSendMessageHandler
|
|
20
|
+
} from './examples';
|
|
17
21
|
import Placeholder from './assets/placeholder.svg?react';
|
|
18
22
|
import PlaceholderDark from './assets/placeholder-dark.svg?react';
|
|
19
23
|
import SparklesIcon from './assets/sparkles.svg?react';
|
|
@@ -46,26 +50,7 @@ export const Basic = () => {
|
|
|
46
50
|
sessions={sessions}
|
|
47
51
|
activeSessionId={activeId}
|
|
48
52
|
onSelectSession={setActiveId}
|
|
49
|
-
onSendMessage={
|
|
50
|
-
setSessions(prev =>
|
|
51
|
-
prev.map(session =>
|
|
52
|
-
session.id === activeId
|
|
53
|
-
? {
|
|
54
|
-
...session,
|
|
55
|
-
conversations: [
|
|
56
|
-
...session.conversations,
|
|
57
|
-
{
|
|
58
|
-
id: Date.now().toString(),
|
|
59
|
-
question: message,
|
|
60
|
-
response: 'This is a response to your question.',
|
|
61
|
-
createdAt: new Date()
|
|
62
|
-
}
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
: session
|
|
66
|
-
)
|
|
67
|
-
);
|
|
68
|
-
}}
|
|
53
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
69
54
|
onDeleteSession={() => alert('delete!')}
|
|
70
55
|
>
|
|
71
56
|
<SessionsList>
|
|
@@ -128,26 +113,7 @@ export const LongSuggestions = () => {
|
|
|
128
113
|
sessions={sessions}
|
|
129
114
|
activeSessionId={activeId}
|
|
130
115
|
onSelectSession={setActiveId}
|
|
131
|
-
onSendMessage={
|
|
132
|
-
setSessions(prev =>
|
|
133
|
-
prev.map(session =>
|
|
134
|
-
session.id === activeId
|
|
135
|
-
? {
|
|
136
|
-
...session,
|
|
137
|
-
conversations: [
|
|
138
|
-
...session.conversations,
|
|
139
|
-
{
|
|
140
|
-
id: Date.now().toString(),
|
|
141
|
-
question: message,
|
|
142
|
-
response: 'This is a response to your question.',
|
|
143
|
-
createdAt: new Date()
|
|
144
|
-
}
|
|
145
|
-
]
|
|
146
|
-
}
|
|
147
|
-
: session
|
|
148
|
-
)
|
|
149
|
-
);
|
|
150
|
-
}}
|
|
116
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
151
117
|
onDeleteSession={() => alert('delete!')}
|
|
152
118
|
>
|
|
153
119
|
<SessionsList>
|
|
@@ -294,26 +260,7 @@ export const Companion = () => {
|
|
|
294
260
|
sessions={sessions}
|
|
295
261
|
activeSessionId={activeId}
|
|
296
262
|
onSelectSession={setActiveId}
|
|
297
|
-
onSendMessage={
|
|
298
|
-
setSessions(prev =>
|
|
299
|
-
prev.map(session =>
|
|
300
|
-
session.id === activeId
|
|
301
|
-
? {
|
|
302
|
-
...session,
|
|
303
|
-
conversations: [
|
|
304
|
-
...session.conversations,
|
|
305
|
-
{
|
|
306
|
-
id: Date.now().toString(),
|
|
307
|
-
question: message,
|
|
308
|
-
response: 'This is a response to your question.',
|
|
309
|
-
createdAt: new Date()
|
|
310
|
-
}
|
|
311
|
-
]
|
|
312
|
-
}
|
|
313
|
-
: session
|
|
314
|
-
)
|
|
315
|
-
);
|
|
316
|
-
}}
|
|
263
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
317
264
|
onDeleteSession={() => alert('delete!')}
|
|
318
265
|
>
|
|
319
266
|
<SessionsList>
|
|
@@ -360,26 +307,7 @@ export const CustomItemRendering = () => {
|
|
|
360
307
|
sessions={sessions}
|
|
361
308
|
activeSessionId={activeId}
|
|
362
309
|
onSelectSession={setActiveId}
|
|
363
|
-
onSendMessage={
|
|
364
|
-
setSessions(prev =>
|
|
365
|
-
prev.map(session =>
|
|
366
|
-
session.id === activeId
|
|
367
|
-
? {
|
|
368
|
-
...session,
|
|
369
|
-
conversations: [
|
|
370
|
-
...session.conversations,
|
|
371
|
-
{
|
|
372
|
-
id: Date.now().toString(),
|
|
373
|
-
question: message,
|
|
374
|
-
response: 'This is a response to your question.',
|
|
375
|
-
createdAt: new Date()
|
|
376
|
-
}
|
|
377
|
-
]
|
|
378
|
-
}
|
|
379
|
-
: session
|
|
380
|
-
)
|
|
381
|
-
);
|
|
382
|
-
}}
|
|
310
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
383
311
|
onDeleteSession={() => alert('delete!')}
|
|
384
312
|
>
|
|
385
313
|
<SessionsList>
|
|
@@ -16,7 +16,8 @@ import {
|
|
|
16
16
|
fakeSessions,
|
|
17
17
|
sessionWithSources,
|
|
18
18
|
sessionsWithFiles,
|
|
19
|
-
chatTemplates
|
|
19
|
+
chatTemplates,
|
|
20
|
+
createSendMessageHandler
|
|
20
21
|
} from './examples';
|
|
21
22
|
import { useState, memo, useCallback } from 'react';
|
|
22
23
|
import { IconButton } from 'reablocks';
|
|
@@ -69,6 +70,7 @@ export const Basic = () => {
|
|
|
69
70
|
}}
|
|
70
71
|
onSelectSession={setActiveId}
|
|
71
72
|
onDeleteSession={() => alert('delete!')}
|
|
73
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
72
74
|
>
|
|
73
75
|
<SessionsList>
|
|
74
76
|
<NewSessionButton />
|
|
@@ -161,6 +163,7 @@ export const WithAppBar = () => {
|
|
|
161
163
|
}}
|
|
162
164
|
onSelectSession={setActiveId}
|
|
163
165
|
onDeleteSession={() => alert('delete!')}
|
|
166
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
164
167
|
>
|
|
165
168
|
<AppBar
|
|
166
169
|
content={
|
|
@@ -256,6 +259,7 @@ export const TemplatesView = () => {
|
|
|
256
259
|
activeSessionId={activeId}
|
|
257
260
|
onSelectSession={setActiveId}
|
|
258
261
|
onDeleteSession={() => alert('delete!')}
|
|
262
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
259
263
|
>
|
|
260
264
|
<div className="flex flex-col h-full">
|
|
261
265
|
<div className="flex-1 overflow-y-auto">
|
|
@@ -321,6 +325,7 @@ export const TemplatesViewWithTitle = () => {
|
|
|
321
325
|
activeSessionId={activeId}
|
|
322
326
|
onSelectSession={setActiveId}
|
|
323
327
|
onDeleteSession={() => alert('delete!')}
|
|
328
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
324
329
|
>
|
|
325
330
|
<div className="dark:text-white text-gray-500 w-full h-full overflow-hidden flex flex-col">
|
|
326
331
|
<div className="flex-1 overflow-y-auto">
|
|
@@ -398,6 +403,7 @@ export const TemplatesViewWithAppBar = () => {
|
|
|
398
403
|
activeSessionId={activeId}
|
|
399
404
|
onSelectSession={setActiveId}
|
|
400
405
|
onDeleteSession={() => alert('delete!')}
|
|
406
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
401
407
|
>
|
|
402
408
|
<div className="dark:text-white text-gray-500 w-full h-full overflow-hidden flex flex-col">
|
|
403
409
|
<div className="flex-1 overflow-y-auto">
|
|
@@ -47,7 +47,8 @@ import {
|
|
|
47
47
|
sessionWithSources,
|
|
48
48
|
sessionsWithFiles,
|
|
49
49
|
sessionsWithPartialConversation,
|
|
50
|
-
sessionWithCSVFiles
|
|
50
|
+
sessionWithCSVFiles,
|
|
51
|
+
createSendMessageHandler
|
|
51
52
|
} from './examples';
|
|
52
53
|
|
|
53
54
|
export default {
|
|
@@ -56,6 +57,9 @@ export default {
|
|
|
56
57
|
} as Meta;
|
|
57
58
|
|
|
58
59
|
export const Basic = () => {
|
|
60
|
+
const [activeId, setActiveId] = useState<string>(fakeSessions[0].id);
|
|
61
|
+
const [sessions, setSessions] = useState<Session[]>(fakeSessions);
|
|
62
|
+
|
|
59
63
|
return (
|
|
60
64
|
<div
|
|
61
65
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -71,9 +75,12 @@ export const Basic = () => {
|
|
|
71
75
|
}}
|
|
72
76
|
>
|
|
73
77
|
<Chat
|
|
74
|
-
sessions={
|
|
78
|
+
sessions={sessions}
|
|
79
|
+
activeSessionId={activeId}
|
|
75
80
|
viewType="console"
|
|
81
|
+
onSelectSession={setActiveId}
|
|
76
82
|
onDeleteSession={() => alert('delete!')}
|
|
83
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
77
84
|
>
|
|
78
85
|
<SessionsList>
|
|
79
86
|
<NewSessionButton />
|
|
@@ -90,6 +97,9 @@ export const Basic = () => {
|
|
|
90
97
|
};
|
|
91
98
|
|
|
92
99
|
export const Embeds = () => {
|
|
100
|
+
const [activeId, setActiveId] = useState<string>('1');
|
|
101
|
+
const [sessions, setSessions] = useState<Session[]>(fakeSessionsWithEmbeds);
|
|
102
|
+
|
|
93
103
|
return (
|
|
94
104
|
<div
|
|
95
105
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -105,9 +115,11 @@ export const Embeds = () => {
|
|
|
105
115
|
}}
|
|
106
116
|
>
|
|
107
117
|
<Chat
|
|
108
|
-
sessions={
|
|
109
|
-
activeSessionId=
|
|
118
|
+
sessions={sessions}
|
|
119
|
+
activeSessionId={activeId}
|
|
120
|
+
onSelectSession={setActiveId}
|
|
110
121
|
onDeleteSession={() => alert('delete!')}
|
|
122
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
111
123
|
>
|
|
112
124
|
<SessionsList>
|
|
113
125
|
<NewSessionButton />
|
|
@@ -124,6 +136,9 @@ export const Embeds = () => {
|
|
|
124
136
|
};
|
|
125
137
|
|
|
126
138
|
export const DefaultSession = () => {
|
|
139
|
+
const [activeId, setActiveId] = useState<string>('1');
|
|
140
|
+
const [sessions, setSessions] = useState<Session[]>(fakeSessions);
|
|
141
|
+
|
|
127
142
|
return (
|
|
128
143
|
<div
|
|
129
144
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -140,9 +155,11 @@ export const DefaultSession = () => {
|
|
|
140
155
|
>
|
|
141
156
|
<Chat
|
|
142
157
|
viewType="console"
|
|
143
|
-
sessions={
|
|
144
|
-
activeSessionId=
|
|
158
|
+
sessions={sessions}
|
|
159
|
+
activeSessionId={activeId}
|
|
160
|
+
onSelectSession={setActiveId}
|
|
145
161
|
onDeleteSession={() => alert('delete!')}
|
|
162
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
146
163
|
>
|
|
147
164
|
<SessionsList>
|
|
148
165
|
<NewSessionButton />
|
|
@@ -258,6 +275,9 @@ export const FileUploads = () => {
|
|
|
258
275
|
};
|
|
259
276
|
|
|
260
277
|
export const DefaultInputValue = () => {
|
|
278
|
+
const [activeId, setActiveId] = useState<string>('1');
|
|
279
|
+
const [sessions, setSessions] = useState<Session[]>(fakeSessions);
|
|
280
|
+
|
|
261
281
|
return (
|
|
262
282
|
<div
|
|
263
283
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -274,9 +294,11 @@ export const DefaultInputValue = () => {
|
|
|
274
294
|
>
|
|
275
295
|
<Chat
|
|
276
296
|
viewType="console"
|
|
277
|
-
sessions={
|
|
278
|
-
activeSessionId=
|
|
297
|
+
sessions={sessions}
|
|
298
|
+
activeSessionId={activeId}
|
|
299
|
+
onSelectSession={setActiveId}
|
|
279
300
|
onDeleteSession={() => alert('delete!')}
|
|
301
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
280
302
|
>
|
|
281
303
|
<SessionsList>
|
|
282
304
|
<NewSessionButton />
|
|
@@ -294,6 +316,9 @@ export const DefaultInputValue = () => {
|
|
|
294
316
|
};
|
|
295
317
|
|
|
296
318
|
export const UndeleteableSessions = () => {
|
|
319
|
+
const [activeId, setActiveId] = useState<string>('1');
|
|
320
|
+
const [sessions, setSessions] = useState<Session[]>(fakeSessions);
|
|
321
|
+
|
|
297
322
|
return (
|
|
298
323
|
<div
|
|
299
324
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -308,7 +333,13 @@ export const UndeleteableSessions = () => {
|
|
|
308
333
|
borderRadius: 5
|
|
309
334
|
}}
|
|
310
335
|
>
|
|
311
|
-
<Chat
|
|
336
|
+
<Chat
|
|
337
|
+
viewType="console"
|
|
338
|
+
sessions={sessions}
|
|
339
|
+
activeSessionId={activeId}
|
|
340
|
+
onSelectSession={setActiveId}
|
|
341
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
342
|
+
>
|
|
312
343
|
<SessionsList>
|
|
313
344
|
<NewSessionButton />
|
|
314
345
|
<SessionGroups>
|
|
@@ -818,6 +849,9 @@ export const Empty = () => {
|
|
|
818
849
|
};
|
|
819
850
|
|
|
820
851
|
export const ConversationSources = () => {
|
|
852
|
+
const [activeId, setActiveId] = useState<string>('session-sources');
|
|
853
|
+
const [sessions, setSessions] = useState<Session[]>(sessionWithSources);
|
|
854
|
+
|
|
821
855
|
return (
|
|
822
856
|
<div
|
|
823
857
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -834,8 +868,10 @@ export const ConversationSources = () => {
|
|
|
834
868
|
>
|
|
835
869
|
<Chat
|
|
836
870
|
viewType="console"
|
|
837
|
-
sessions={
|
|
838
|
-
activeSessionId=
|
|
871
|
+
sessions={sessions}
|
|
872
|
+
activeSessionId={activeId}
|
|
873
|
+
onSelectSession={setActiveId}
|
|
874
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
839
875
|
>
|
|
840
876
|
<SessionsList>
|
|
841
877
|
<NewSessionButton />
|
|
@@ -955,6 +991,13 @@ const CustomSessionListItem: FC<SessionListItemProps> = ({
|
|
|
955
991
|
};
|
|
956
992
|
|
|
957
993
|
export const CustomComponents = () => {
|
|
994
|
+
const [activeId, setActiveId] = useState<string>('1');
|
|
995
|
+
const [sessions, setSessions] = useState<Session[]>([
|
|
996
|
+
...fakeSessions,
|
|
997
|
+
...sessionsWithFiles,
|
|
998
|
+
...sessionWithSources
|
|
999
|
+
]);
|
|
1000
|
+
|
|
958
1001
|
return (
|
|
959
1002
|
<div
|
|
960
1003
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -970,12 +1013,10 @@ export const CustomComponents = () => {
|
|
|
970
1013
|
}}
|
|
971
1014
|
>
|
|
972
1015
|
<Chat
|
|
973
|
-
sessions={
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
]}
|
|
978
|
-
activeSessionId="1"
|
|
1016
|
+
sessions={sessions}
|
|
1017
|
+
activeSessionId={activeId}
|
|
1018
|
+
onSelectSession={setActiveId}
|
|
1019
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
979
1020
|
>
|
|
980
1021
|
<SessionsList>
|
|
981
1022
|
<NewSessionButton>
|
|
@@ -1063,7 +1104,7 @@ export const ImageFiles = () => {
|
|
|
1063
1104
|
}
|
|
1064
1105
|
];
|
|
1065
1106
|
|
|
1066
|
-
const
|
|
1107
|
+
const [sessions, setSessions] = useState<Session[]>([
|
|
1067
1108
|
{
|
|
1068
1109
|
id: 'session-images',
|
|
1069
1110
|
title: 'Multiple Image Files Showcase',
|
|
@@ -1088,7 +1129,7 @@ export const ImageFiles = () => {
|
|
|
1088
1129
|
}
|
|
1089
1130
|
]
|
|
1090
1131
|
}
|
|
1091
|
-
];
|
|
1132
|
+
]);
|
|
1092
1133
|
|
|
1093
1134
|
return (
|
|
1094
1135
|
<div
|
|
@@ -1106,8 +1147,9 @@ export const ImageFiles = () => {
|
|
|
1106
1147
|
>
|
|
1107
1148
|
<Chat
|
|
1108
1149
|
viewType="console"
|
|
1109
|
-
sessions={
|
|
1150
|
+
sessions={sessions}
|
|
1110
1151
|
activeSessionId="session-images"
|
|
1152
|
+
onSendMessage={createSendMessageHandler(setSessions, 'session-images')}
|
|
1111
1153
|
>
|
|
1112
1154
|
<SessionsList>
|
|
1113
1155
|
<NewSessionButton />
|
|
@@ -1125,6 +1167,8 @@ export const ImageFiles = () => {
|
|
|
1125
1167
|
};
|
|
1126
1168
|
|
|
1127
1169
|
export const CSVPreview = () => {
|
|
1170
|
+
const [sessions, setSessions] = useState<Session[]>(sessionWithCSVFiles);
|
|
1171
|
+
|
|
1128
1172
|
return (
|
|
1129
1173
|
<div
|
|
1130
1174
|
className="dark:bg-gray-950 bg-white"
|
|
@@ -1137,9 +1181,10 @@ export const CSVPreview = () => {
|
|
|
1137
1181
|
}}
|
|
1138
1182
|
>
|
|
1139
1183
|
<Chat
|
|
1140
|
-
sessions={
|
|
1184
|
+
sessions={sessions}
|
|
1141
1185
|
activeSessionId="1"
|
|
1142
1186
|
onDeleteSession={() => alert('delete!')}
|
|
1187
|
+
onSendMessage={createSendMessageHandler(setSessions, '1')}
|
|
1143
1188
|
>
|
|
1144
1189
|
<SessionsList>
|
|
1145
1190
|
<NewSessionButton />
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
MentionItem,
|
|
10
10
|
SlashCommandItem
|
|
11
11
|
} from 'reachat';
|
|
12
|
-
import { fakeSessions } from './examples';
|
|
12
|
+
import { fakeSessions, createSendMessageHandler } from './examples';
|
|
13
13
|
|
|
14
14
|
const UserIcon = () => (
|
|
15
15
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" className="w-full h-full">
|
|
@@ -112,6 +112,7 @@ export const WithMentions: StoryFn = () => {
|
|
|
112
112
|
sessions={sessions}
|
|
113
113
|
activeSessionId={activeId}
|
|
114
114
|
onSelectSession={setActiveId}
|
|
115
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
115
116
|
>
|
|
116
117
|
<SessionMessagePanel>
|
|
117
118
|
<SessionMessages />
|
|
@@ -153,6 +154,7 @@ export const WithSlashCommands: StoryFn = () => {
|
|
|
153
154
|
sessions={sessions}
|
|
154
155
|
activeSessionId={activeId}
|
|
155
156
|
onSelectSession={setActiveId}
|
|
157
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
156
158
|
>
|
|
157
159
|
<SessionMessagePanel>
|
|
158
160
|
<SessionMessages />
|
|
@@ -195,6 +197,7 @@ export const WithAllFeatures: StoryFn = () => {
|
|
|
195
197
|
sessions={sessions}
|
|
196
198
|
activeSessionId={activeId}
|
|
197
199
|
onSelectSession={setActiveId}
|
|
200
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
198
201
|
>
|
|
199
202
|
<SessionMessagePanel>
|
|
200
203
|
<SessionMessages />
|
|
@@ -240,6 +243,7 @@ export const WithAsyncSearch: StoryFn = () => {
|
|
|
240
243
|
sessions={sessions}
|
|
241
244
|
activeSessionId={activeId}
|
|
242
245
|
onSelectSession={setActiveId}
|
|
246
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
243
247
|
>
|
|
244
248
|
<SessionMessagePanel>
|
|
245
249
|
<SessionMessages />
|
|
@@ -271,6 +275,7 @@ export const MultiLineEmpty: StoryFn = () => {
|
|
|
271
275
|
sessions={sessions}
|
|
272
276
|
activeSessionId={activeId}
|
|
273
277
|
onSelectSession={setActiveId}
|
|
278
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
274
279
|
>
|
|
275
280
|
<SessionMessagePanel>
|
|
276
281
|
<SessionMessages />
|
|
@@ -306,6 +311,7 @@ This is line six - still scrolling!`;
|
|
|
306
311
|
sessions={sessions}
|
|
307
312
|
activeSessionId={activeId}
|
|
308
313
|
onSelectSession={setActiveId}
|
|
314
|
+
onSendMessage={createSendMessageHandler(setSessions, activeId)}
|
|
309
315
|
>
|
|
310
316
|
<SessionMessagePanel>
|
|
311
317
|
<SessionMessages />
|