@talk2view/sdk 0.2.3 → 0.3.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/client.d.ts.map +1 -1
- package/dist/client.js +7 -4
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +9 -22
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +11 -16
- package/dist/react/index.js.map +1 -1
- package/dist/react/theme.d.ts +16 -0
- package/dist/react/theme.d.ts.map +1 -1
- package/dist/react/theme.js +119 -4
- package/dist/react/theme.js.map +1 -1
- package/dist/react/useT2VChat.d.ts +24 -2
- package/dist/react/useT2VChat.d.ts.map +1 -1
- package/dist/react/useT2VChat.js +176 -38
- package/dist/react/useT2VChat.js.map +1 -1
- package/dist/react/useUserPreferences.js +2 -2
- package/dist/react/useUserPreferences.js.map +1 -1
- package/dist/sessions.d.ts +10 -1
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +71 -25
- package/dist/sessions.js.map +1 -1
- package/dist/tools.d.ts +14 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +33 -0
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +60 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/components/LoginModal.d.ts.map +1 -0
- package/dist/{react → ui/components}/LoginModal.js +11 -8
- package/dist/ui/components/LoginModal.js.map +1 -0
- package/dist/ui/components/SettingsView.d.ts +11 -0
- package/dist/ui/components/SettingsView.d.ts.map +1 -0
- package/dist/{react → ui/components}/SettingsView.js +11 -9
- package/dist/ui/components/SettingsView.js.map +1 -0
- package/dist/ui/components/T2VAssistantModal.d.ts +31 -0
- package/dist/ui/components/T2VAssistantModal.d.ts.map +1 -0
- package/dist/ui/components/T2VAssistantModal.js +151 -0
- package/dist/ui/components/T2VAssistantModal.js.map +1 -0
- package/dist/ui/components/T2VAssistantProvider.d.ts +42 -0
- package/dist/ui/components/T2VAssistantProvider.d.ts.map +1 -0
- package/dist/ui/components/T2VAssistantProvider.js +66 -0
- package/dist/ui/components/T2VAssistantProvider.js.map +1 -0
- package/dist/ui/components/T2VChatHeader.d.ts +16 -0
- package/dist/ui/components/T2VChatHeader.d.ts.map +1 -0
- package/dist/ui/components/T2VChatHeader.js +112 -0
- package/dist/ui/components/T2VChatHeader.js.map +1 -0
- package/dist/ui/components/T2VComposer.d.ts +11 -0
- package/dist/ui/components/T2VComposer.d.ts.map +1 -0
- package/dist/ui/components/T2VComposer.js +124 -0
- package/dist/ui/components/T2VComposer.js.map +1 -0
- package/dist/ui/components/T2VDictationAdapter.d.ts +18 -0
- package/dist/ui/components/T2VDictationAdapter.d.ts.map +1 -0
- package/dist/ui/components/T2VDictationAdapter.js +126 -0
- package/dist/ui/components/T2VDictationAdapter.js.map +1 -0
- package/dist/ui/components/T2VLoginGate.d.ts +23 -0
- package/dist/ui/components/T2VLoginGate.d.ts.map +1 -0
- package/dist/ui/components/T2VLoginGate.js +11 -0
- package/dist/ui/components/T2VLoginGate.js.map +1 -0
- package/dist/ui/components/T2VThread.d.ts +25 -0
- package/dist/ui/components/T2VThread.d.ts.map +1 -0
- package/dist/ui/components/T2VThread.js +66 -0
- package/dist/ui/components/T2VThread.js.map +1 -0
- package/dist/ui/components/T2VToolFallback.d.ts +11 -0
- package/dist/ui/components/T2VToolFallback.d.ts.map +1 -0
- package/dist/ui/components/T2VToolFallback.js +209 -0
- package/dist/ui/components/T2VToolFallback.js.map +1 -0
- package/dist/ui/index.d.ts +38 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +36 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/runtime/convertMessage.d.ts +17 -0
- package/dist/ui/runtime/convertMessage.d.ts.map +1 -0
- package/dist/ui/runtime/convertMessage.js +77 -0
- package/dist/ui/runtime/convertMessage.js.map +1 -0
- package/dist/ui/runtime/useT2VRuntime.d.ts +42 -0
- package/dist/ui/runtime/useT2VRuntime.d.ts.map +1 -0
- package/dist/ui/runtime/useT2VRuntime.js +62 -0
- package/dist/ui/runtime/useT2VRuntime.js.map +1 -0
- package/dist/ui/themes/tailwind-preset.d.ts +43 -0
- package/dist/ui/themes/tailwind-preset.d.ts.map +1 -0
- package/dist/ui/themes/tailwind-preset.js +43 -0
- package/dist/ui/themes/tailwind-preset.js.map +1 -0
- package/package.json +18 -2
- package/dist/react/ChatInput.d.ts +0 -14
- package/dist/react/ChatInput.d.ts.map +0 -1
- package/dist/react/ChatInput.js +0 -165
- package/dist/react/ChatInput.js.map +0 -1
- package/dist/react/ChatMessage.d.ts +0 -10
- package/dist/react/ChatMessage.d.ts.map +0 -1
- package/dist/react/ChatMessage.js +0 -53
- package/dist/react/ChatMessage.js.map +0 -1
- package/dist/react/ChatPanel.d.ts +0 -17
- package/dist/react/ChatPanel.d.ts.map +0 -1
- package/dist/react/ChatPanel.js +0 -401
- package/dist/react/ChatPanel.js.map +0 -1
- package/dist/react/LoginModal.d.ts.map +0 -1
- package/dist/react/LoginModal.js.map +0 -1
- package/dist/react/SettingsView.d.ts +0 -9
- package/dist/react/SettingsView.d.ts.map +0 -1
- package/dist/react/SettingsView.js.map +0 -1
- /package/dist/{react → ui/components}/LoginModal.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@talk2view/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Talk2View SDK — Add AI-powered natural language control to any application",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,6 +15,16 @@
|
|
|
15
15
|
"types": "./dist/react/index.d.ts",
|
|
16
16
|
"import": "./dist/react/index.js",
|
|
17
17
|
"default": "./dist/react/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./ui": {
|
|
20
|
+
"types": "./dist/ui/index.d.ts",
|
|
21
|
+
"import": "./dist/ui/index.js",
|
|
22
|
+
"default": "./dist/ui/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./assistant-ui": {
|
|
25
|
+
"types": "./dist/ui/index.d.ts",
|
|
26
|
+
"import": "./dist/ui/index.js",
|
|
27
|
+
"default": "./dist/ui/index.js"
|
|
18
28
|
}
|
|
19
29
|
},
|
|
20
30
|
"files": [
|
|
@@ -25,15 +35,21 @@
|
|
|
25
35
|
"dev": "tsc --watch",
|
|
26
36
|
"test": "vitest run",
|
|
27
37
|
"test:watch": "vitest",
|
|
38
|
+
"test:e2e": "playwright test --config playwright.config.ts",
|
|
28
39
|
"lint": "tsc --noEmit",
|
|
29
40
|
"typecheck": "tsc --noEmit",
|
|
30
41
|
"prepublishOnly": "npm run build"
|
|
31
42
|
},
|
|
32
43
|
"dependencies": {
|
|
44
|
+
"@assistant-ui/react": "^0.12.19",
|
|
45
|
+
"@assistant-ui/react-markdown": "^0.12.6",
|
|
46
|
+
"@assistant-ui/react-ui": "^0.2.1",
|
|
33
47
|
"dompurify": "^3.2.0",
|
|
34
|
-
"marked": "^15.0.0"
|
|
48
|
+
"marked": "^15.0.0",
|
|
49
|
+
"remark-gfm": "^4.0.1"
|
|
35
50
|
},
|
|
36
51
|
"devDependencies": {
|
|
52
|
+
"@playwright/test": "^1.58.2",
|
|
37
53
|
"@testing-library/react": "^16.0.0",
|
|
38
54
|
"@types/dompurify": "^3.0.5",
|
|
39
55
|
"@types/react": "^19.0.0",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChatInput — text input with mic and send buttons.
|
|
3
|
-
*
|
|
4
|
-
* Voice input uses MediaRecorder + Talk2View's /v1/audio/transcriptions endpoint.
|
|
5
|
-
*/
|
|
6
|
-
export interface ChatInputProps {
|
|
7
|
-
onSend: (message: string) => void;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
compact?: boolean;
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
className?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function ChatInput({ onSend, disabled, compact, placeholder, className, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
-
//# sourceMappingURL=ChatInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../src/react/ChatInput.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,QAAgB,EAChB,OAAe,EACf,WAAiC,EACjC,SAAc,GACf,EAAE,cAAc,2CAkOhB"}
|
package/dist/react/ChatInput.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* ChatInput — text input with mic and send buttons.
|
|
4
|
-
*
|
|
5
|
-
* Voice input uses MediaRecorder + Talk2View's /v1/audio/transcriptions endpoint.
|
|
6
|
-
*/
|
|
7
|
-
import { useCallback, useRef, useState } from 'react';
|
|
8
|
-
import { T2V_ALPHA, T2V_COLORS, T2V_FONTS } from './theme';
|
|
9
|
-
import { useT2V } from './T2VProvider';
|
|
10
|
-
import { useUserPreferences } from './useUserPreferences';
|
|
11
|
-
export function ChatInput({ onSend, disabled = false, compact = false, placeholder = 'Type a message...', className = '', }) {
|
|
12
|
-
const { t2v } = useT2V();
|
|
13
|
-
const { preferences } = useUserPreferences();
|
|
14
|
-
const [value, setValue] = useState('');
|
|
15
|
-
const [inputFocused, setInputFocused] = useState(false);
|
|
16
|
-
const [btnHover, setBtnHover] = useState(false);
|
|
17
|
-
const [micHover, setMicHover] = useState(false);
|
|
18
|
-
const [isRecording, setIsRecording] = useState(false);
|
|
19
|
-
const [isTranscribing, setIsTranscribing] = useState(false);
|
|
20
|
-
const mediaRecorderRef = useRef(null);
|
|
21
|
-
const chunksRef = useRef([]);
|
|
22
|
-
const canSend = value.trim().length > 0 && !disabled;
|
|
23
|
-
const micDisabled = disabled || isTranscribing || !preferences.sttModel;
|
|
24
|
-
const handleSubmit = useCallback((e) => {
|
|
25
|
-
e.preventDefault();
|
|
26
|
-
const trimmed = value.trim();
|
|
27
|
-
if (!trimmed || disabled)
|
|
28
|
-
return;
|
|
29
|
-
onSend(trimmed);
|
|
30
|
-
setValue('');
|
|
31
|
-
}, [value, disabled, onSend]);
|
|
32
|
-
const handleKeyDown = useCallback((e) => {
|
|
33
|
-
if (e.key === 'Enter' && !e.shiftKey) {
|
|
34
|
-
e.preventDefault();
|
|
35
|
-
handleSubmit(e);
|
|
36
|
-
}
|
|
37
|
-
}, [handleSubmit]);
|
|
38
|
-
const transcribeAudio = useCallback(async (audioBlob) => {
|
|
39
|
-
setIsTranscribing(true);
|
|
40
|
-
try {
|
|
41
|
-
const ext = audioBlob.type.includes('mp4') ? 'mp4' : 'webm';
|
|
42
|
-
const formData = new FormData();
|
|
43
|
-
formData.append('file', audioBlob, `recording.${ext}`);
|
|
44
|
-
if (preferences.sttModel) {
|
|
45
|
-
formData.append('model', preferences.sttModel);
|
|
46
|
-
}
|
|
47
|
-
if (preferences.sttLanguage) {
|
|
48
|
-
formData.append('language', preferences.sttLanguage);
|
|
49
|
-
}
|
|
50
|
-
const data = await t2v.transcribe(formData);
|
|
51
|
-
const text = data.text?.trim();
|
|
52
|
-
if (text) {
|
|
53
|
-
onSend(text);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
console.error('Transcription error:', err);
|
|
58
|
-
}
|
|
59
|
-
finally {
|
|
60
|
-
setIsTranscribing(false);
|
|
61
|
-
}
|
|
62
|
-
}, [t2v, onSend, preferences.sttModel, preferences.sttLanguage]);
|
|
63
|
-
const toggleRecording = useCallback(async () => {
|
|
64
|
-
if (isRecording && mediaRecorderRef.current) {
|
|
65
|
-
mediaRecorderRef.current.stop();
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
let stream = null;
|
|
69
|
-
try {
|
|
70
|
-
stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
71
|
-
const mediaRecorder = new MediaRecorder(stream);
|
|
72
|
-
chunksRef.current = [];
|
|
73
|
-
mediaRecorder.ondataavailable = (e) => {
|
|
74
|
-
if (e.data.size > 0)
|
|
75
|
-
chunksRef.current.push(e.data);
|
|
76
|
-
};
|
|
77
|
-
mediaRecorder.onstop = () => {
|
|
78
|
-
const mimeType = mediaRecorder.mimeType || 'audio/webm';
|
|
79
|
-
const audioBlob = new Blob(chunksRef.current, { type: mimeType });
|
|
80
|
-
stream.getTracks().forEach((track) => track.stop());
|
|
81
|
-
chunksRef.current = [];
|
|
82
|
-
mediaRecorderRef.current = null;
|
|
83
|
-
setIsRecording(false);
|
|
84
|
-
if (audioBlob.size > 0) {
|
|
85
|
-
transcribeAudio(audioBlob);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
mediaRecorderRef.current = mediaRecorder;
|
|
89
|
-
mediaRecorder.start(1000); // flush chunks every 1s — fixes Safari dropping early audio
|
|
90
|
-
setIsRecording(true);
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
stream?.getTracks().forEach((track) => track.stop());
|
|
94
|
-
console.error('Voice recording error:', err);
|
|
95
|
-
}
|
|
96
|
-
}, [isRecording, transcribeAudio]);
|
|
97
|
-
return (_jsxs("form", { onSubmit: handleSubmit, className: `t2v-chat-input ${className}`, style: {
|
|
98
|
-
display: 'flex',
|
|
99
|
-
gap: compact ? '6px' : '8px',
|
|
100
|
-
padding: compact ? '8px' : '12px',
|
|
101
|
-
boxSizing: 'border-box',
|
|
102
|
-
borderTop: `1px solid ${T2V_COLORS.lightGray}`,
|
|
103
|
-
backgroundColor: T2V_COLORS.light,
|
|
104
|
-
}, children: [_jsx("input", { type: "text", value: value, onChange: (e) => setValue(e.target.value), onKeyDown: handleKeyDown, onFocus: () => setInputFocused(true), onBlur: () => setInputFocused(false), placeholder: isRecording ? 'Recording...' : isTranscribing ? 'Transcribing...' : placeholder, disabled: disabled, style: {
|
|
105
|
-
flex: 1,
|
|
106
|
-
minWidth: 0,
|
|
107
|
-
padding: compact ? '8px 10px' : '10px 14px',
|
|
108
|
-
borderRadius: '8px',
|
|
109
|
-
border: `1.5px solid ${inputFocused ? T2V_COLORS.turquoise : T2V_COLORS.lightGray}`,
|
|
110
|
-
fontSize: compact ? '13px' : '14px',
|
|
111
|
-
fontFamily: T2V_FONTS.body,
|
|
112
|
-
outline: 'none',
|
|
113
|
-
backgroundColor: disabled ? T2V_COLORS.lightGray : '#ffffff',
|
|
114
|
-
color: T2V_COLORS.dark,
|
|
115
|
-
boxShadow: inputFocused ? `0 0 0 3px ${T2V_ALPHA.turquoise15}` : 'none',
|
|
116
|
-
transition: 'border-color 0.15s ease, box-shadow 0.15s ease',
|
|
117
|
-
} }), _jsx("button", { type: "button", onClick: toggleRecording, disabled: micDisabled, onMouseEnter: () => setMicHover(true), onMouseLeave: () => setMicHover(false), style: {
|
|
118
|
-
display: 'flex',
|
|
119
|
-
alignItems: 'center',
|
|
120
|
-
justifyContent: 'center',
|
|
121
|
-
width: compact ? '36px' : '42px',
|
|
122
|
-
height: compact ? '36px' : '42px',
|
|
123
|
-
borderRadius: '8px',
|
|
124
|
-
border: 'none',
|
|
125
|
-
backgroundColor: isRecording
|
|
126
|
-
? T2V_COLORS.errorRed
|
|
127
|
-
: isTranscribing
|
|
128
|
-
? T2V_COLORS.turquoise
|
|
129
|
-
: micHover
|
|
130
|
-
? T2V_COLORS.stormyTeal
|
|
131
|
-
: T2V_COLORS.lightGray,
|
|
132
|
-
color: isRecording || isTranscribing || micHover ? T2V_COLORS.light : T2V_COLORS.midGray,
|
|
133
|
-
cursor: micDisabled ? 'not-allowed' : 'pointer',
|
|
134
|
-
transition: 'background-color 0.15s ease, transform 0.15s ease',
|
|
135
|
-
transform: micHover && !micDisabled ? 'translateY(-1px)' : 'none',
|
|
136
|
-
flexShrink: 0,
|
|
137
|
-
}, title: !preferences.sttModel ? 'Select a Speech-to-Text model in Settings to enable voice input' : undefined, "aria-label": isRecording ? 'Stop recording' : isTranscribing ? 'Transcribing...' : !preferences.sttModel ? 'Voice input unavailable' : 'Start voice input', children: isTranscribing ? (_jsx("span", { style: {
|
|
138
|
-
display: 'inline-block',
|
|
139
|
-
width: '16px',
|
|
140
|
-
height: '16px',
|
|
141
|
-
border: `2px solid ${T2V_COLORS.light}`,
|
|
142
|
-
borderTopColor: 'transparent',
|
|
143
|
-
borderRadius: '50%',
|
|
144
|
-
animation: 't2v-spin 0.6s linear infinite',
|
|
145
|
-
} })) : (_jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" }), _jsx("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }), _jsx("line", { x1: "12", y1: "19", x2: "12", y2: "23" }), _jsx("line", { x1: "8", y1: "23", x2: "16", y2: "23" })] })) }), _jsx("button", { type: "submit", disabled: !canSend, onMouseEnter: () => setBtnHover(true), onMouseLeave: () => setBtnHover(false), style: {
|
|
146
|
-
display: 'flex',
|
|
147
|
-
alignItems: 'center',
|
|
148
|
-
justifyContent: 'center',
|
|
149
|
-
width: compact ? '36px' : '42px',
|
|
150
|
-
height: compact ? '36px' : '42px',
|
|
151
|
-
borderRadius: '8px',
|
|
152
|
-
border: 'none',
|
|
153
|
-
backgroundColor: canSend
|
|
154
|
-
? btnHover
|
|
155
|
-
? T2V_COLORS.stormyTeal
|
|
156
|
-
: T2V_COLORS.accent
|
|
157
|
-
: T2V_COLORS.lightGray,
|
|
158
|
-
color: canSend ? T2V_COLORS.dark : T2V_COLORS.midGray,
|
|
159
|
-
cursor: canSend ? 'pointer' : 'not-allowed',
|
|
160
|
-
transition: 'background-color 0.15s ease, transform 0.15s ease',
|
|
161
|
-
transform: canSend && btnHover ? 'translateY(-1px)' : 'none',
|
|
162
|
-
flexShrink: 0,
|
|
163
|
-
}, "aria-label": "Send message", children: _jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "22", y1: "2", x2: "11", y2: "13" }), _jsx("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })] }) })] }));
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=ChatInput.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../src/react/ChatInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChatMessage — renders a single chat message bubble with markdown support.
|
|
3
|
-
*/
|
|
4
|
-
import type { DisplayMessage } from './useT2VChat';
|
|
5
|
-
export interface ChatMessageProps {
|
|
6
|
-
message: DisplayMessage;
|
|
7
|
-
className?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function ChatMessage({ message, className }: ChatMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
//# sourceMappingURL=ChatMessage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../src/react/ChatMessage.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,SAAc,EAAE,EAAE,gBAAgB,2CAqExE"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* ChatMessage — renders a single chat message bubble with markdown support.
|
|
4
|
-
*/
|
|
5
|
-
import DOMPurify from 'dompurify';
|
|
6
|
-
import { marked } from 'marked';
|
|
7
|
-
import { useMemo } from 'react';
|
|
8
|
-
import { T2V_ALPHA, T2V_COLORS, T2V_FONTS } from './theme';
|
|
9
|
-
// Configure marked for inline-friendly output
|
|
10
|
-
marked.setOptions({ breaks: true, gfm: true });
|
|
11
|
-
export function ChatMessage({ message, className = '' }) {
|
|
12
|
-
const isUser = message.role === 'user';
|
|
13
|
-
const time = message.timestamp.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
14
|
-
const htmlContent = useMemo(() => {
|
|
15
|
-
if (isUser || !message.content)
|
|
16
|
-
return '';
|
|
17
|
-
const raw = marked.parse(message.content);
|
|
18
|
-
if (typeof raw !== 'string')
|
|
19
|
-
return '';
|
|
20
|
-
return DOMPurify.sanitize(raw);
|
|
21
|
-
}, [isUser, message.content]);
|
|
22
|
-
return (_jsx("div", { className: `t2v-message t2v-message--${message.role} ${className}`, style: {
|
|
23
|
-
display: 'flex',
|
|
24
|
-
justifyContent: isUser ? 'flex-end' : 'flex-start',
|
|
25
|
-
marginBottom: '12px',
|
|
26
|
-
animation: 't2v-fade-in 0.25s ease-out',
|
|
27
|
-
}, children: _jsxs("div", { style: {
|
|
28
|
-
maxWidth: '80%',
|
|
29
|
-
padding: '10px 14px',
|
|
30
|
-
borderRadius: isUser ? '14px 14px 4px 14px' : '14px 14px 14px 4px',
|
|
31
|
-
backgroundColor: isUser ? T2V_ALPHA.turquoise15 : T2V_ALPHA.turquoise08,
|
|
32
|
-
color: T2V_COLORS.dark,
|
|
33
|
-
fontSize: '14px',
|
|
34
|
-
fontFamily: T2V_FONTS.body,
|
|
35
|
-
lineHeight: '1.55',
|
|
36
|
-
wordBreak: 'break-word',
|
|
37
|
-
...(isUser ? { whiteSpace: 'pre-wrap' } : {}),
|
|
38
|
-
}, children: [isUser ? (_jsx("div", { children: message.content })) : (_jsx("div", { className: "t2v-markdown", dangerouslySetInnerHTML: { __html: htmlContent } })), message.isStreaming && (_jsx("span", { style: {
|
|
39
|
-
display: 'inline-block',
|
|
40
|
-
width: '2px',
|
|
41
|
-
height: '14px',
|
|
42
|
-
backgroundColor: T2V_COLORS.turquoise,
|
|
43
|
-
marginLeft: '2px',
|
|
44
|
-
animation: 't2v-blink 1s infinite',
|
|
45
|
-
} })), _jsx("div", { style: {
|
|
46
|
-
fontSize: '10px',
|
|
47
|
-
fontFamily: T2V_FONTS.heading,
|
|
48
|
-
color: T2V_COLORS.midGray,
|
|
49
|
-
marginTop: '4px',
|
|
50
|
-
textAlign: 'right',
|
|
51
|
-
}, children: time })] }) }));
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=ChatMessage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessage.js","sourceRoot":"","sources":["../../src/react/ChatMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChatPanel — self-contained, embeddable chat panel with tool support.
|
|
3
|
-
*
|
|
4
|
-
* Drop-in chat UI that handles authentication, tool registration,
|
|
5
|
-
* streaming, and the full interrupt/resume cycle.
|
|
6
|
-
*/
|
|
7
|
-
import React from 'react';
|
|
8
|
-
import type { ClientTool } from '../types';
|
|
9
|
-
export interface ChatPanelProps {
|
|
10
|
-
tools?: ClientTool[];
|
|
11
|
-
systemPrompt?: string;
|
|
12
|
-
signupUrl?: string;
|
|
13
|
-
className?: string;
|
|
14
|
-
style?: React.CSSProperties;
|
|
15
|
-
}
|
|
16
|
-
export declare function ChatPanel({ tools, systemPrompt, signupUrl, className, style, }: ChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
//# sourceMappingURL=ChatPanel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/react/ChatPanel.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAqB3C,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAc,EACd,KAAK,GACN,EAAE,cAAc,2CAunBhB"}
|