@talk2view/sdk 0.1.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/LICENSE +7 -0
- package/README.md +594 -0
- package/dist/auth.d.ts +39 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +102 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +27 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +195 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +38 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +115 -0
- package/dist/index.js.map +1 -0
- package/dist/react/ChatInput.d.ts +13 -0
- package/dist/react/ChatInput.d.ts.map +1 -0
- package/dist/react/ChatInput.js +163 -0
- package/dist/react/ChatInput.js.map +1 -0
- package/dist/react/ChatMessage.d.ts +10 -0
- package/dist/react/ChatMessage.d.ts.map +1 -0
- package/dist/react/ChatMessage.js +53 -0
- package/dist/react/ChatMessage.js.map +1 -0
- package/dist/react/ChatPanel.d.ts +17 -0
- package/dist/react/ChatPanel.d.ts.map +1 -0
- package/dist/react/ChatPanel.js +385 -0
- package/dist/react/ChatPanel.js.map +1 -0
- package/dist/react/LoginModal.d.ts +10 -0
- package/dist/react/LoginModal.d.ts.map +1 -0
- package/dist/react/LoginModal.js +135 -0
- package/dist/react/LoginModal.js.map +1 -0
- package/dist/react/SettingsView.d.ts +9 -0
- package/dist/react/SettingsView.d.ts.map +1 -0
- package/dist/react/SettingsView.js +190 -0
- package/dist/react/SettingsView.js.map +1 -0
- package/dist/react/T2VProvider.d.ts +25 -0
- package/dist/react/T2VProvider.d.ts.map +1 -0
- package/dist/react/T2VProvider.js +38 -0
- package/dist/react/T2VProvider.js.map +1 -0
- package/dist/react/index.d.ts +38 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +28 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/theme.d.ts +32 -0
- package/dist/react/theme.d.ts.map +1 -0
- package/dist/react/theme.js +131 -0
- package/dist/react/theme.js.map +1 -0
- package/dist/react/useT2VAuth.d.ts +16 -0
- package/dist/react/useT2VAuth.d.ts.map +1 -0
- package/dist/react/useT2VAuth.js +52 -0
- package/dist/react/useT2VAuth.js.map +1 -0
- package/dist/react/useT2VChat.d.ts +28 -0
- package/dist/react/useT2VChat.d.ts.map +1 -0
- package/dist/react/useT2VChat.js +103 -0
- package/dist/react/useT2VChat.js.map +1 -0
- package/dist/react/useT2VTools.d.ts +11 -0
- package/dist/react/useT2VTools.d.ts.map +1 -0
- package/dist/react/useT2VTools.js +29 -0
- package/dist/react/useT2VTools.js.map +1 -0
- package/dist/react/useUserPreferences.d.ts +13 -0
- package/dist/react/useUserPreferences.d.ts.map +1 -0
- package/dist/react/useUserPreferences.js +40 -0
- package/dist/react/useUserPreferences.js.map +1 -0
- package/dist/sessions.d.ts +34 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +95 -0
- package/dist/sessions.js.map +1 -0
- package/dist/storage.d.ts +16 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +84 -0
- package/dist/storage.js.map +1 -0
- package/dist/streaming.d.ts +9 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +45 -0
- package/dist/streaming.js.map +1 -0
- package/dist/tools.d.ts +40 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +83 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +153 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ChatPanel — self-contained, embeddable chat panel with tool support.
|
|
4
|
+
*
|
|
5
|
+
* Drop-in chat UI that handles authentication, tool registration,
|
|
6
|
+
* streaming, and the full interrupt/resume cycle.
|
|
7
|
+
*/
|
|
8
|
+
import DOMPurify from 'dompurify';
|
|
9
|
+
import { marked } from 'marked';
|
|
10
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
11
|
+
import { ChatInput } from './ChatInput';
|
|
12
|
+
/** Parse inline markdown (bold, italic, code, links) and sanitize. */
|
|
13
|
+
function renderInline(text) {
|
|
14
|
+
const raw = marked.parseInline(text);
|
|
15
|
+
return DOMPurify.sanitize(typeof raw === 'string' ? raw : '');
|
|
16
|
+
}
|
|
17
|
+
/** Parse block markdown and sanitize. */
|
|
18
|
+
function renderBlock(text) {
|
|
19
|
+
const raw = marked.parse(text);
|
|
20
|
+
return DOMPurify.sanitize(typeof raw === 'string' ? raw : '');
|
|
21
|
+
}
|
|
22
|
+
import { ChatMessage } from './ChatMessage';
|
|
23
|
+
import { LoginModal } from './LoginModal';
|
|
24
|
+
import { SettingsView } from './SettingsView';
|
|
25
|
+
import { useT2V } from './T2VProvider';
|
|
26
|
+
import { useT2VAuth } from './useT2VAuth';
|
|
27
|
+
import { useT2VChat } from './useT2VChat';
|
|
28
|
+
import { useT2VTools } from './useT2VTools';
|
|
29
|
+
import { useUserPreferences } from './useUserPreferences';
|
|
30
|
+
import { T2V_COLORS, T2V_FONTS, T2VLogo, injectT2VFonts, injectT2VStyles } from './theme';
|
|
31
|
+
const FONT_SCALE_MAP = { small: 0.9, medium: 1.0, large: 1.1 };
|
|
32
|
+
export function ChatPanel({ tools = [], systemPrompt, signupUrl, className = '', style, }) {
|
|
33
|
+
const { t2v } = useT2V();
|
|
34
|
+
const { isAuthenticated, user, logout } = useT2VAuth();
|
|
35
|
+
const { registerTools, registeredTools, isRegistered } = useT2VTools();
|
|
36
|
+
const { messages, isLoading, error, agentStatus, todos, sendMessage, clearMessages, clearError } = useT2VChat({
|
|
37
|
+
systemPrompt,
|
|
38
|
+
});
|
|
39
|
+
const { preferences } = useUserPreferences();
|
|
40
|
+
const messagesEndRef = useRef(null);
|
|
41
|
+
const [currentView, setCurrentView] = useState('chat');
|
|
42
|
+
const [clearHover, setClearHover] = useState(false);
|
|
43
|
+
const [profileOpen, setProfileOpen] = useState(false);
|
|
44
|
+
const [toolsOpen, setToolsOpen] = useState(false);
|
|
45
|
+
const toolsRef = useRef(null);
|
|
46
|
+
const [elapsed, setElapsed] = useState(0);
|
|
47
|
+
const [todosExpanded, setTodosExpanded] = useState(true);
|
|
48
|
+
const profileRef = useRef(null);
|
|
49
|
+
const fontScale = FONT_SCALE_MAP[preferences.fontSize || 'medium'];
|
|
50
|
+
// Restore saved model preference on mount
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (preferences.model) {
|
|
53
|
+
t2v.config.model = preferences.model;
|
|
54
|
+
}
|
|
55
|
+
}, [t2v, preferences.model]);
|
|
56
|
+
const handleModelChange = useCallback((model) => {
|
|
57
|
+
t2v.config.model = model;
|
|
58
|
+
t2v.clearSession();
|
|
59
|
+
}, [t2v]);
|
|
60
|
+
// Thinking timer
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (!isLoading) {
|
|
63
|
+
setElapsed(0);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
setElapsed(0);
|
|
67
|
+
const interval = setInterval(() => setElapsed((s) => s + 1), 1000);
|
|
68
|
+
return () => clearInterval(interval);
|
|
69
|
+
}, [isLoading]);
|
|
70
|
+
// Inject fonts and keyframes once
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
injectT2VFonts();
|
|
73
|
+
injectT2VStyles();
|
|
74
|
+
}, []);
|
|
75
|
+
// Register tools when authenticated
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (isAuthenticated && tools.length > 0 && !isRegistered) {
|
|
78
|
+
registerTools(tools).catch(console.error);
|
|
79
|
+
}
|
|
80
|
+
}, [isAuthenticated, tools, isRegistered, registerTools]);
|
|
81
|
+
// Close profile menu on outside click
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (!profileOpen)
|
|
84
|
+
return;
|
|
85
|
+
const handleClick = (e) => {
|
|
86
|
+
if (profileRef.current && !profileRef.current.contains(e.target)) {
|
|
87
|
+
setProfileOpen(false);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
document.addEventListener('mousedown', handleClick);
|
|
91
|
+
return () => document.removeEventListener('mousedown', handleClick);
|
|
92
|
+
}, [profileOpen]);
|
|
93
|
+
// Close tools popover on outside click
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (!toolsOpen)
|
|
96
|
+
return;
|
|
97
|
+
const handleClick = (e) => {
|
|
98
|
+
if (toolsRef.current && !toolsRef.current.contains(e.target)) {
|
|
99
|
+
setToolsOpen(false);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
document.addEventListener('mousedown', handleClick);
|
|
103
|
+
return () => document.removeEventListener('mousedown', handleClick);
|
|
104
|
+
}, [toolsOpen]);
|
|
105
|
+
// Auto-scroll to bottom
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
|
|
108
|
+
}, [messages]);
|
|
109
|
+
const handleSend = useCallback((content) => {
|
|
110
|
+
sendMessage(content).catch(console.error);
|
|
111
|
+
}, [sendMessage]);
|
|
112
|
+
const panelShell = {
|
|
113
|
+
display: 'flex',
|
|
114
|
+
flexDirection: 'column',
|
|
115
|
+
height: fontScale === 1 ? '100%' : `${100 / fontScale}%`,
|
|
116
|
+
width: fontScale === 1 ? '100%' : `${100 / fontScale}%`,
|
|
117
|
+
backgroundColor: T2V_COLORS.light,
|
|
118
|
+
borderRadius: '12px',
|
|
119
|
+
boxShadow: '0 4px 24px rgba(1, 22, 30, 0.10)',
|
|
120
|
+
overflow: 'hidden',
|
|
121
|
+
fontFamily: T2V_FONTS.body,
|
|
122
|
+
transform: fontScale === 1 ? undefined : `scale(${fontScale})`,
|
|
123
|
+
transformOrigin: fontScale === 1 ? undefined : 'top left',
|
|
124
|
+
...style,
|
|
125
|
+
};
|
|
126
|
+
if (!isAuthenticated) {
|
|
127
|
+
return (_jsx("div", { className: `t2v-chat-panel ${className}`, style: panelShell, children: _jsx(LoginModal, { signupUrl: signupUrl }) }));
|
|
128
|
+
}
|
|
129
|
+
if (currentView === 'settings') {
|
|
130
|
+
return (_jsx("div", { className: `t2v-chat-panel ${className}`, style: panelShell, children: _jsx(SettingsView, { onBack: () => setCurrentView('chat'), onModelChange: handleModelChange }) }));
|
|
131
|
+
}
|
|
132
|
+
return (_jsxs("div", { className: `t2v-chat-panel ${className}`, style: panelShell, children: [_jsxs("div", { style: {
|
|
133
|
+
display: 'flex',
|
|
134
|
+
alignItems: 'center',
|
|
135
|
+
justifyContent: 'space-between',
|
|
136
|
+
padding: '12px 16px',
|
|
137
|
+
backgroundColor: T2V_COLORS.dark,
|
|
138
|
+
color: T2V_COLORS.light,
|
|
139
|
+
}, children: [_jsx(T2VLogo, { size: 22, variant: "horizontalDark" }), _jsxs("div", { style: { display: 'flex', gap: '10px', alignItems: 'center' }, children: [_jsx("button", { onClick: clearMessages, onMouseEnter: () => setClearHover(true), onMouseLeave: () => setClearHover(false), style: {
|
|
140
|
+
padding: '4px 10px',
|
|
141
|
+
borderRadius: '6px',
|
|
142
|
+
border: `1px solid ${clearHover ? T2V_COLORS.turquoise : 'rgba(248, 250, 252, 0.2)'}`,
|
|
143
|
+
backgroundColor: clearHover ? 'rgba(64, 212, 182, 0.1)' : 'transparent',
|
|
144
|
+
fontSize: '12px',
|
|
145
|
+
fontFamily: T2V_FONTS.heading,
|
|
146
|
+
cursor: 'pointer',
|
|
147
|
+
color: T2V_COLORS.light,
|
|
148
|
+
transition: 'all 0.15s ease',
|
|
149
|
+
}, children: "Clear" }), _jsxs("div", { ref: profileRef, style: { position: 'relative' }, children: [_jsx("button", { onClick: () => setProfileOpen((v) => !v), style: {
|
|
150
|
+
width: '30px',
|
|
151
|
+
height: '30px',
|
|
152
|
+
borderRadius: '50%',
|
|
153
|
+
border: `1.5px solid ${profileOpen ? T2V_COLORS.turquoise : 'rgba(248, 250, 252, 0.3)'}`,
|
|
154
|
+
backgroundColor: profileOpen ? 'rgba(64, 212, 182, 0.15)' : 'rgba(248, 250, 252, 0.1)',
|
|
155
|
+
cursor: 'pointer',
|
|
156
|
+
display: 'flex',
|
|
157
|
+
alignItems: 'center',
|
|
158
|
+
justifyContent: 'center',
|
|
159
|
+
padding: 0,
|
|
160
|
+
transition: 'all 0.15s ease',
|
|
161
|
+
}, title: user?.email ?? 'Profile', children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: T2V_COLORS.light, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }), _jsx("circle", { cx: "12", cy: "7", r: "4" })] }) }), profileOpen && (_jsxs("div", { style: {
|
|
162
|
+
position: 'absolute',
|
|
163
|
+
top: '100%',
|
|
164
|
+
right: 0,
|
|
165
|
+
marginTop: '6px',
|
|
166
|
+
backgroundColor: T2V_COLORS.light,
|
|
167
|
+
borderRadius: '8px',
|
|
168
|
+
boxShadow: '0 4px 16px rgba(1, 22, 30, 0.15)',
|
|
169
|
+
minWidth: '180px',
|
|
170
|
+
zIndex: 100,
|
|
171
|
+
overflow: 'hidden',
|
|
172
|
+
border: `1px solid ${T2V_COLORS.lightGray}`,
|
|
173
|
+
}, children: [user?.email && (_jsx("div", { style: {
|
|
174
|
+
padding: '10px 14px',
|
|
175
|
+
fontSize: '12px',
|
|
176
|
+
fontFamily: T2V_FONTS.body,
|
|
177
|
+
color: T2V_COLORS.midGray,
|
|
178
|
+
borderBottom: `1px solid ${T2V_COLORS.lightGray}`,
|
|
179
|
+
overflow: 'hidden',
|
|
180
|
+
textOverflow: 'ellipsis',
|
|
181
|
+
whiteSpace: 'nowrap',
|
|
182
|
+
}, children: user.email })), _jsxs("button", { onClick: () => { setProfileOpen(false); setCurrentView('settings'); }, style: {
|
|
183
|
+
display: 'flex',
|
|
184
|
+
alignItems: 'center',
|
|
185
|
+
gap: '8px',
|
|
186
|
+
width: '100%',
|
|
187
|
+
padding: '10px 14px',
|
|
188
|
+
border: 'none',
|
|
189
|
+
backgroundColor: 'transparent',
|
|
190
|
+
cursor: 'pointer',
|
|
191
|
+
fontSize: '13px',
|
|
192
|
+
fontFamily: T2V_FONTS.heading,
|
|
193
|
+
color: T2V_COLORS.dark,
|
|
194
|
+
textAlign: 'left',
|
|
195
|
+
}, onMouseEnter: (e) => { e.currentTarget.style.backgroundColor = T2V_COLORS.lightGray; }, onMouseLeave: (e) => { e.currentTarget.style.backgroundColor = 'transparent'; }, children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: T2V_COLORS.midGray, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "12", cy: "12", r: "3" }), _jsx("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z" })] }), "Settings"] }), _jsxs("button", { onClick: () => {
|
|
196
|
+
setProfileOpen(false);
|
|
197
|
+
logout().catch(console.error);
|
|
198
|
+
}, style: {
|
|
199
|
+
display: 'flex',
|
|
200
|
+
alignItems: 'center',
|
|
201
|
+
gap: '8px',
|
|
202
|
+
width: '100%',
|
|
203
|
+
padding: '10px 14px',
|
|
204
|
+
border: 'none',
|
|
205
|
+
backgroundColor: 'transparent',
|
|
206
|
+
cursor: 'pointer',
|
|
207
|
+
fontSize: '13px',
|
|
208
|
+
fontFamily: T2V_FONTS.heading,
|
|
209
|
+
color: T2V_COLORS.errorRed,
|
|
210
|
+
textAlign: 'left',
|
|
211
|
+
borderTop: `1px solid ${T2V_COLORS.lightGray}`,
|
|
212
|
+
}, onMouseEnter: (e) => { e.currentTarget.style.backgroundColor = T2V_COLORS.errorBg; }, onMouseLeave: (e) => { e.currentTarget.style.backgroundColor = 'transparent'; }, children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: T2V_COLORS.errorRed, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" }), _jsx("polyline", { points: "16 17 21 12 16 7" }), _jsx("line", { x1: "21", y1: "12", x2: "9", y2: "12" })] }), "Sign out"] })] }))] })] })] }), _jsxs("div", { style: {
|
|
213
|
+
flex: 1,
|
|
214
|
+
overflowY: 'auto',
|
|
215
|
+
padding: '16px',
|
|
216
|
+
}, children: [messages.length === 0 && (_jsxs("div", { style: {
|
|
217
|
+
display: 'flex',
|
|
218
|
+
flexDirection: 'column',
|
|
219
|
+
alignItems: 'center',
|
|
220
|
+
justifyContent: 'center',
|
|
221
|
+
height: '100%',
|
|
222
|
+
gap: '12px',
|
|
223
|
+
}, children: [_jsx(T2VLogo, { size: 40 }), _jsx("span", { style: {
|
|
224
|
+
color: T2V_COLORS.midGray,
|
|
225
|
+
fontSize: '15px',
|
|
226
|
+
fontFamily: T2V_FONTS.heading,
|
|
227
|
+
fontWeight: 500,
|
|
228
|
+
}, children: "How can I help you?" })] })), messages.map((msg) => (_jsx(ChatMessage, { message: msg }, msg.id))), isLoading && messages[messages.length - 1]?.content === '' && (_jsxs("div", { style: {
|
|
229
|
+
display: 'flex',
|
|
230
|
+
alignItems: 'center',
|
|
231
|
+
gap: '4px',
|
|
232
|
+
padding: '10px 14px',
|
|
233
|
+
color: T2V_COLORS.midGray,
|
|
234
|
+
fontSize: '13px',
|
|
235
|
+
fontFamily: T2V_FONTS.heading,
|
|
236
|
+
}, children: [_jsx("span", { children: agentStatus?.message ?? 'Thinking' }), [0, 1, 2].map((i) => (_jsx("span", { style: {
|
|
237
|
+
display: 'inline-block',
|
|
238
|
+
width: '4px',
|
|
239
|
+
height: '4px',
|
|
240
|
+
borderRadius: '50%',
|
|
241
|
+
backgroundColor: T2V_COLORS.turquoise,
|
|
242
|
+
animation: `t2v-dot-bounce 1.2s ease-in-out ${i * 0.15}s infinite`,
|
|
243
|
+
} }, i)))] })), _jsx("div", { ref: messagesEndRef })] }), todos && (_jsxs("div", { style: {
|
|
244
|
+
borderTop: `1px solid ${T2V_COLORS.lightGray}`,
|
|
245
|
+
backgroundColor: 'rgba(64, 212, 182, 0.06)',
|
|
246
|
+
}, children: [_jsxs("div", { onClick: () => setTodosExpanded((v) => !v), style: {
|
|
247
|
+
display: 'flex',
|
|
248
|
+
alignItems: 'center',
|
|
249
|
+
justifyContent: 'space-between',
|
|
250
|
+
padding: '8px 16px',
|
|
251
|
+
cursor: 'pointer',
|
|
252
|
+
userSelect: 'none',
|
|
253
|
+
}, children: [_jsx("span", { style: {
|
|
254
|
+
fontSize: '12px',
|
|
255
|
+
fontFamily: T2V_FONTS.heading,
|
|
256
|
+
fontWeight: 600,
|
|
257
|
+
color: T2V_COLORS.turquoise,
|
|
258
|
+
}, children: "Agent Plan" }), _jsx("span", { style: {
|
|
259
|
+
fontSize: '11px',
|
|
260
|
+
color: T2V_COLORS.midGray,
|
|
261
|
+
transform: todosExpanded ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
262
|
+
transition: 'transform 0.15s ease',
|
|
263
|
+
}, children: "\u25BC" })] }), todosExpanded && (_jsx("div", { style: { padding: '0 16px 10px' }, children: todos.split('\n').map((line, i) => {
|
|
264
|
+
const unchecked = line.match(/^-\s*\[\s*\]\s*(.*)/);
|
|
265
|
+
const checked = line.match(/^-\s*\[x\]\s*(.*)/i);
|
|
266
|
+
if (checked) {
|
|
267
|
+
return (_jsxs("div", { style: {
|
|
268
|
+
display: 'flex',
|
|
269
|
+
alignItems: 'flex-start',
|
|
270
|
+
gap: '8px',
|
|
271
|
+
padding: '3px 0',
|
|
272
|
+
fontSize: '13px',
|
|
273
|
+
fontFamily: T2V_FONTS.body,
|
|
274
|
+
color: T2V_COLORS.midGray,
|
|
275
|
+
textDecoration: 'line-through',
|
|
276
|
+
}, children: [_jsx("span", { style: { color: T2V_COLORS.turquoise, flexShrink: 0 }, children: "\u2713" }), _jsx("span", { dangerouslySetInnerHTML: { __html: renderInline(checked[1] ?? '') } })] }, i));
|
|
277
|
+
}
|
|
278
|
+
if (unchecked) {
|
|
279
|
+
return (_jsxs("div", { style: {
|
|
280
|
+
display: 'flex',
|
|
281
|
+
alignItems: 'flex-start',
|
|
282
|
+
gap: '8px',
|
|
283
|
+
padding: '3px 0',
|
|
284
|
+
fontSize: '13px',
|
|
285
|
+
fontFamily: T2V_FONTS.body,
|
|
286
|
+
color: T2V_COLORS.dark,
|
|
287
|
+
}, children: [_jsx("span", { style: {
|
|
288
|
+
display: 'inline-block',
|
|
289
|
+
width: '14px',
|
|
290
|
+
height: '14px',
|
|
291
|
+
borderRadius: '3px',
|
|
292
|
+
border: `1.5px solid ${T2V_COLORS.turquoise}`,
|
|
293
|
+
flexShrink: 0,
|
|
294
|
+
marginTop: '2px',
|
|
295
|
+
} }), _jsx("span", { dangerouslySetInnerHTML: { __html: renderInline(unchecked[1] ?? '') } })] }, i));
|
|
296
|
+
}
|
|
297
|
+
if (line.trim()) {
|
|
298
|
+
return (_jsx("div", { className: "t2v-markdown", style: {
|
|
299
|
+
fontSize: '13px',
|
|
300
|
+
fontFamily: T2V_FONTS.body,
|
|
301
|
+
color: T2V_COLORS.dark,
|
|
302
|
+
padding: '2px 0',
|
|
303
|
+
}, dangerouslySetInnerHTML: { __html: renderInline(line) } }, i));
|
|
304
|
+
}
|
|
305
|
+
return null;
|
|
306
|
+
}) }))] })), error && (_jsxs("div", { onClick: clearError, style: {
|
|
307
|
+
display: 'flex',
|
|
308
|
+
alignItems: 'center',
|
|
309
|
+
gap: '8px',
|
|
310
|
+
padding: '10px 16px',
|
|
311
|
+
backgroundColor: T2V_COLORS.errorBg,
|
|
312
|
+
color: T2V_COLORS.errorRed,
|
|
313
|
+
fontSize: '13px',
|
|
314
|
+
fontFamily: T2V_FONTS.heading,
|
|
315
|
+
cursor: 'pointer',
|
|
316
|
+
borderLeft: `3px solid ${T2V_COLORS.errorRed}`,
|
|
317
|
+
}, children: [_jsx("span", { style: { fontWeight: 600 }, children: "Error" }), _jsx("span", { children: error })] })), (isLoading || registeredTools.length > 0) && (_jsxs("div", { style: {
|
|
318
|
+
display: 'flex',
|
|
319
|
+
alignItems: 'center',
|
|
320
|
+
justifyContent: 'space-between',
|
|
321
|
+
padding: '6px 16px',
|
|
322
|
+
borderTop: `1px solid ${T2V_COLORS.lightGray}`,
|
|
323
|
+
}, children: [_jsxs("span", { style: {
|
|
324
|
+
display: 'flex',
|
|
325
|
+
alignItems: 'center',
|
|
326
|
+
gap: '6px',
|
|
327
|
+
fontSize: '11px',
|
|
328
|
+
fontFamily: T2V_FONTS.heading,
|
|
329
|
+
color: T2V_COLORS.midGray,
|
|
330
|
+
visibility: isLoading ? 'visible' : 'hidden',
|
|
331
|
+
}, children: [_jsx("span", { style: {
|
|
332
|
+
display: 'inline-block',
|
|
333
|
+
width: '6px',
|
|
334
|
+
height: '6px',
|
|
335
|
+
borderRadius: '50%',
|
|
336
|
+
backgroundColor: T2V_COLORS.turquoise,
|
|
337
|
+
animation: 't2v-blink 1.2s ease-in-out infinite',
|
|
338
|
+
} }), agentStatus?.message ?? 'Thinking', " for ", elapsed < 60 ? `${elapsed}s` : `${Math.floor(elapsed / 60)}m ${elapsed % 60}s`] }), registeredTools.length > 0 && (_jsxs("div", { ref: toolsRef, style: { position: 'relative' }, children: [_jsxs("button", { onClick: () => setToolsOpen((v) => !v), style: {
|
|
339
|
+
fontSize: '11px',
|
|
340
|
+
fontFamily: T2V_FONTS.heading,
|
|
341
|
+
color: T2V_COLORS.turquoise,
|
|
342
|
+
backgroundColor: toolsOpen ? 'rgba(64, 212, 182, 0.2)' : 'rgba(64, 212, 182, 0.12)',
|
|
343
|
+
padding: '2px 8px',
|
|
344
|
+
borderRadius: '10px',
|
|
345
|
+
border: 'none',
|
|
346
|
+
cursor: 'pointer',
|
|
347
|
+
transition: 'background-color 0.15s ease',
|
|
348
|
+
}, children: [registeredTools.length, " tools"] }), toolsOpen && (_jsxs("div", { style: {
|
|
349
|
+
position: 'absolute',
|
|
350
|
+
bottom: '100%',
|
|
351
|
+
right: 0,
|
|
352
|
+
marginBottom: '6px',
|
|
353
|
+
backgroundColor: T2V_COLORS.light,
|
|
354
|
+
borderRadius: '8px',
|
|
355
|
+
boxShadow: '0 4px 16px rgba(1, 22, 30, 0.15)',
|
|
356
|
+
border: `1px solid ${T2V_COLORS.lightGray}`,
|
|
357
|
+
minWidth: '220px',
|
|
358
|
+
maxWidth: '300px',
|
|
359
|
+
maxHeight: '240px',
|
|
360
|
+
overflowY: 'auto',
|
|
361
|
+
zIndex: 100,
|
|
362
|
+
}, children: [_jsx("div", { style: {
|
|
363
|
+
padding: '8px 12px',
|
|
364
|
+
fontSize: '11px',
|
|
365
|
+
fontFamily: T2V_FONTS.heading,
|
|
366
|
+
fontWeight: 600,
|
|
367
|
+
color: T2V_COLORS.turquoise,
|
|
368
|
+
borderBottom: `1px solid ${T2V_COLORS.lightGray}`,
|
|
369
|
+
}, children: "Registered Tools" }), tools.filter((t) => registeredTools.includes(t.name)).map((tool) => (_jsxs("div", { style: {
|
|
370
|
+
padding: '8px 12px',
|
|
371
|
+
borderBottom: `1px solid ${T2V_COLORS.lightGray}`,
|
|
372
|
+
}, children: [_jsx("div", { style: {
|
|
373
|
+
fontSize: '12px',
|
|
374
|
+
fontFamily: T2V_FONTS.heading,
|
|
375
|
+
fontWeight: 600,
|
|
376
|
+
color: T2V_COLORS.dark,
|
|
377
|
+
}, children: tool.name }), _jsx("div", { style: {
|
|
378
|
+
fontSize: '11px',
|
|
379
|
+
fontFamily: T2V_FONTS.body,
|
|
380
|
+
color: T2V_COLORS.midGray,
|
|
381
|
+
marginTop: '2px',
|
|
382
|
+
lineHeight: '1.4',
|
|
383
|
+
}, children: tool.description })] }, tool.name)))] }))] }))] })), _jsx(ChatInput, { onSend: handleSend, disabled: isLoading })] }));
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=ChatPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../src/react/ChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoginModal — pre-built login/signup form.
|
|
3
|
+
*/
|
|
4
|
+
export interface LoginModalProps {
|
|
5
|
+
signupUrl?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
onSuccess?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function LoginModal({ signupUrl, className, onSuccess, }: LoginModalProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
//# sourceMappingURL=LoginModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginModal.d.ts","sourceRoot":"","sources":["../../src/react/LoginModal.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,EACzB,SAA+C,EAC/C,SAAc,EACd,SAAS,GACV,EAAE,eAAe,kDAyOjB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* LoginModal — pre-built login/signup form.
|
|
4
|
+
*/
|
|
5
|
+
import React, { useCallback, useState } from 'react';
|
|
6
|
+
import { useT2VAuth } from './useT2VAuth';
|
|
7
|
+
import { T2V_COLORS, T2V_FONTS, T2VLogo, injectT2VFonts, injectT2VStyles } from './theme';
|
|
8
|
+
export function LoginModal({ signupUrl = 'https://talk2view.com/auth?signup', className = '', onSuccess, }) {
|
|
9
|
+
const { login, isLoading, error, clearError, isAuthenticated } = useT2VAuth();
|
|
10
|
+
const [email, setEmail] = useState('');
|
|
11
|
+
const [password, setPassword] = useState('');
|
|
12
|
+
const [emailFocused, setEmailFocused] = useState(false);
|
|
13
|
+
const [passwordFocused, setPasswordFocused] = useState(false);
|
|
14
|
+
const [btnHover, setBtnHover] = useState(false);
|
|
15
|
+
const [linkHover, setLinkHover] = useState(false);
|
|
16
|
+
// Inject fonts and keyframes (idempotent)
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
injectT2VFonts();
|
|
19
|
+
injectT2VStyles();
|
|
20
|
+
}, []);
|
|
21
|
+
const handleSubmit = useCallback(async (e) => {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
try {
|
|
24
|
+
await login(email, password);
|
|
25
|
+
onSuccess?.();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Error is set by useT2VAuth
|
|
29
|
+
}
|
|
30
|
+
}, [email, password, login, onSuccess]);
|
|
31
|
+
if (isAuthenticated)
|
|
32
|
+
return null;
|
|
33
|
+
const inputStyle = (focused) => ({
|
|
34
|
+
width: '100%',
|
|
35
|
+
padding: '10px 12px',
|
|
36
|
+
borderRadius: '8px',
|
|
37
|
+
border: `1.5px solid ${focused ? T2V_COLORS.turquoise : T2V_COLORS.lightGray}`,
|
|
38
|
+
fontSize: '14px',
|
|
39
|
+
fontFamily: T2V_FONTS.body,
|
|
40
|
+
outline: 'none',
|
|
41
|
+
boxSizing: 'border-box',
|
|
42
|
+
color: T2V_COLORS.dark,
|
|
43
|
+
backgroundColor: '#ffffff',
|
|
44
|
+
boxShadow: focused ? '0 0 0 3px rgba(64, 212, 182, 0.15)' : 'none',
|
|
45
|
+
transition: 'border-color 0.15s ease, box-shadow 0.15s ease',
|
|
46
|
+
});
|
|
47
|
+
return (_jsxs("div", { className: `t2v-login-modal ${className}`, style: {
|
|
48
|
+
display: 'flex',
|
|
49
|
+
flexDirection: 'column',
|
|
50
|
+
alignItems: 'center',
|
|
51
|
+
justifyContent: 'center',
|
|
52
|
+
flex: 1,
|
|
53
|
+
minHeight: 0,
|
|
54
|
+
padding: '40px 32px',
|
|
55
|
+
maxWidth: '360px',
|
|
56
|
+
margin: '0 auto',
|
|
57
|
+
fontFamily: T2V_FONTS.body,
|
|
58
|
+
}, children: [_jsx(T2VLogo, { size: 64 }), _jsx("h2", { style: {
|
|
59
|
+
fontSize: '22px',
|
|
60
|
+
fontWeight: 600,
|
|
61
|
+
fontFamily: T2V_FONTS.heading,
|
|
62
|
+
marginTop: '16px',
|
|
63
|
+
marginBottom: '4px',
|
|
64
|
+
color: T2V_COLORS.dark,
|
|
65
|
+
}, children: "Welcome back" }), _jsx("p", { style: {
|
|
66
|
+
fontSize: '14px',
|
|
67
|
+
color: T2V_COLORS.midGray,
|
|
68
|
+
fontFamily: T2V_FONTS.heading,
|
|
69
|
+
marginTop: '0',
|
|
70
|
+
marginBottom: '28px',
|
|
71
|
+
}, children: "Sign in to Talk2View" }), _jsxs("form", { onSubmit: handleSubmit, style: { width: '100%' }, children: [_jsxs("div", { style: { marginBottom: '16px' }, children: [_jsx("label", { htmlFor: "t2v-email", style: {
|
|
72
|
+
display: 'block',
|
|
73
|
+
fontSize: '13px',
|
|
74
|
+
fontWeight: 500,
|
|
75
|
+
fontFamily: T2V_FONTS.heading,
|
|
76
|
+
marginBottom: '6px',
|
|
77
|
+
color: T2V_COLORS.dark,
|
|
78
|
+
}, children: "Email" }), _jsx("input", { id: "t2v-email", type: "email", value: email, onChange: (e) => { setEmail(e.target.value); clearError(); }, onFocus: () => setEmailFocused(true), onBlur: () => setEmailFocused(false), placeholder: "you@example.com", required: true, disabled: isLoading, style: inputStyle(emailFocused) })] }), _jsxs("div", { style: { marginBottom: '24px' }, children: [_jsx("label", { htmlFor: "t2v-password", style: {
|
|
79
|
+
display: 'block',
|
|
80
|
+
fontSize: '13px',
|
|
81
|
+
fontWeight: 500,
|
|
82
|
+
fontFamily: T2V_FONTS.heading,
|
|
83
|
+
marginBottom: '6px',
|
|
84
|
+
color: T2V_COLORS.dark,
|
|
85
|
+
}, children: "Password" }), _jsx("input", { id: "t2v-password", type: "password", value: password, onChange: (e) => { setPassword(e.target.value); clearError(); }, onFocus: () => setPasswordFocused(true), onBlur: () => setPasswordFocused(false), placeholder: "Password", required: true, disabled: isLoading, style: inputStyle(passwordFocused) })] }), error && (_jsx("div", { style: {
|
|
86
|
+
padding: '10px 12px',
|
|
87
|
+
borderRadius: '8px',
|
|
88
|
+
backgroundColor: T2V_COLORS.errorBg,
|
|
89
|
+
color: T2V_COLORS.errorRed,
|
|
90
|
+
fontSize: '13px',
|
|
91
|
+
fontFamily: T2V_FONTS.heading,
|
|
92
|
+
marginBottom: '16px',
|
|
93
|
+
borderLeft: `3px solid ${T2V_COLORS.errorRed}`,
|
|
94
|
+
}, children: error })), _jsxs("button", { type: "submit", disabled: isLoading, onMouseEnter: () => setBtnHover(true), onMouseLeave: () => setBtnHover(false), style: {
|
|
95
|
+
width: '100%',
|
|
96
|
+
padding: '11px',
|
|
97
|
+
borderRadius: '8px',
|
|
98
|
+
border: 'none',
|
|
99
|
+
backgroundColor: isLoading
|
|
100
|
+
? T2V_COLORS.lightGray
|
|
101
|
+
: btnHover
|
|
102
|
+
? T2V_COLORS.stormyTeal
|
|
103
|
+
: T2V_COLORS.accent,
|
|
104
|
+
color: isLoading ? T2V_COLORS.midGray : T2V_COLORS.dark,
|
|
105
|
+
fontSize: '15px',
|
|
106
|
+
fontWeight: 600,
|
|
107
|
+
fontFamily: T2V_FONTS.heading,
|
|
108
|
+
cursor: isLoading ? 'not-allowed' : 'pointer',
|
|
109
|
+
transition: 'background-color 0.15s ease, transform 0.15s ease',
|
|
110
|
+
transform: !isLoading && btnHover ? 'translateY(-1px)' : 'none',
|
|
111
|
+
display: 'flex',
|
|
112
|
+
alignItems: 'center',
|
|
113
|
+
justifyContent: 'center',
|
|
114
|
+
gap: '8px',
|
|
115
|
+
}, children: [isLoading && (_jsx("span", { style: {
|
|
116
|
+
display: 'inline-block',
|
|
117
|
+
width: '16px',
|
|
118
|
+
height: '16px',
|
|
119
|
+
border: `2px solid ${T2V_COLORS.midGray}`,
|
|
120
|
+
borderTopColor: 'transparent',
|
|
121
|
+
borderRadius: '50%',
|
|
122
|
+
animation: 't2v-spin 0.6s linear infinite',
|
|
123
|
+
} })), isLoading ? 'Signing in…' : 'Sign in'] })] }), _jsxs("p", { style: {
|
|
124
|
+
marginTop: '20px',
|
|
125
|
+
fontSize: '13px',
|
|
126
|
+
fontFamily: T2V_FONTS.heading,
|
|
127
|
+
color: T2V_COLORS.midGray,
|
|
128
|
+
}, children: ["Don't have an account?", ' ', _jsx("a", { href: signupUrl, target: "_blank", rel: "noopener noreferrer", onMouseEnter: () => setLinkHover(true), onMouseLeave: () => setLinkHover(false), style: {
|
|
129
|
+
color: linkHover ? T2V_COLORS.stormyTeal : T2V_COLORS.turquoise,
|
|
130
|
+
fontWeight: 500,
|
|
131
|
+
textDecoration: linkHover ? 'underline' : 'none',
|
|
132
|
+
transition: 'color 0.15s ease',
|
|
133
|
+
}, children: "Sign up" })] })] }));
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=LoginModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginModal.js","sourceRoot":"","sources":["../../src/react/LoginModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettingsView — full-panel settings page for user preferences.
|
|
3
|
+
*/
|
|
4
|
+
export interface SettingsViewProps {
|
|
5
|
+
onBack: () => void;
|
|
6
|
+
onModelChange?: (model: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function SettingsView({ onBack, onModelChange }: SettingsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=SettingsView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsView.d.ts","sourceRoot":"","sources":["../../src/react/SettingsView.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAuDD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,iBAAiB,2CAwPxE"}
|