vox-ai-react 1.4.0 → 1.6.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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\n\nexport interface VoxChatProps {\n apiKey: string;\n geminiApiKey: string;\n apiUrl?: string;\n agentName?: string;\n voiceName?: string;\n systemInstruction?: string;\n position?: 'bottom-right' | 'bottom-left';\n theme?: 'dark' | 'light';\n buttonColor?: string;\n buttonSize?: number;\n borderRadius?: number;\n iconColor?: string;\n onOpen?: () => void;\n onClose?: () => void;\n useServerConfig?: boolean; // If true, fetch config from server using API key\n configPollInterval?: number; // Polling interval in milliseconds (default: 10000ms = 10s)\n}\n\ninterface Message {\n id: string;\n role: 'user' | 'assistant';\n text: string;\n}\n\nenum ConnectionState {\n DISCONNECTED = 'DISCONNECTED',\n CONNECTING = 'CONNECTING',\n CONNECTED = 'CONNECTED',\n ERROR = 'ERROR',\n}\n\n// Audio utilities\nfunction createBlob(inputData: Float32Array): { mimeType: string; data: string } {\n const buffer = new ArrayBuffer(inputData.length * 2);\n const view = new DataView(buffer);\n for (let i = 0; i < inputData.length; i++) {\n const s = Math.max(-1, Math.min(1, inputData[i]));\n view.setInt16(i * 2, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n const base64 = btoa(String.fromCharCode(...new Uint8Array(buffer)));\n return { mimeType: 'audio/pcm;rate=16000', data: base64 };\n}\n\nfunction decode(base64: string): ArrayBuffer {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\nasync function decodeAudioData(arrayBuffer: ArrayBuffer, ctx: AudioContext, sampleRate: number, numChannels: number): Promise<AudioBuffer> {\n const dataView = new DataView(arrayBuffer);\n const numSamples = arrayBuffer.byteLength / 2;\n const audioBuffer = ctx.createBuffer(numChannels, numSamples, sampleRate);\n const channelData = audioBuffer.getChannelData(0);\n for (let i = 0; i < numSamples; i++) {\n channelData[i] = dataView.getInt16(i * 2, true) / 32768;\n }\n return audioBuffer;\n}\n\n// Icons - matching exact website icons\nconst MessageCircleIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n </svg>\n);\n\nconst MicIcon = ({ size = 14 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n);\n\nconst MicOffIcon = ({ size = 40 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n <path d=\"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2\" />\n <path d=\"M5 10v2a7 7 0 0 0 12 5\" />\n <path d=\"M15 9.34V5a3 3 0 0 0-5.68-1.33\" />\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n);\n\nconst XIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n);\n\nconst PhoneOffIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\" />\n <line x1=\"22\" x2=\"2\" y1=\"2\" y2=\"22\" />\n </svg>\n);\n\nconst VoxLogoIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M28.764 25.966c0-4.489-1.936-5.99-4.764-5.99s-4.764 1.501-4.764 5.99m-.55 0h.55v5.324h0h-.55a1.826 1.826 0 0 1-1.826-1.826v-1.672a1.826 1.826 0 0 1 1.826-1.826m10.628 5.324h-.55h0v-5.324h.55a1.826 1.826 0 0 1 1.826 1.826v1.672a1.826 1.826 0 0 1-1.826 1.826\" />\n <path d=\"M24 42.476L12.938 33.58V5.524L24 16.351\" />\n <path d=\"M24 42.476L9.125 35.557V7.501L24 16.351\" />\n <path d=\"M24 42.476L5.5 38.004V9.948L24 16.351m0 26.125l11.062-8.896V5.524L24 16.351\" />\n <path d=\"m24 42.476l14.875-6.919V7.501L24 16.351\" />\n <path d=\"m24 42.476l18.5-4.472V9.948L24 16.351\" />\n </svg>\n);\n\nconst UserIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" /><circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n);\n\nconst Loader2Icon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" style={{ animation: 'vox-spin 1s linear infinite' }}>\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n);\n\nconst AlertCircleIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" /><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n </svg>\n);\n\n\n// Visualizer Component\nconst Visualizer: React.FC<{ analyser: AnalyserNode | null; isActive: boolean }> = ({ analyser, isActive }) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const animationRef = useRef<number | undefined>(undefined);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const draw = () => {\n const width = canvas.width;\n const height = canvas.height;\n ctx.clearRect(0, 0, width, height);\n\n if (!analyser || !isActive) {\n ctx.strokeStyle = '#3f3f46';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(0, height / 2);\n ctx.lineTo(width, height / 2);\n ctx.stroke();\n animationRef.current = requestAnimationFrame(draw);\n return;\n }\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n analyser.getByteTimeDomainData(dataArray);\n\n ctx.strokeStyle = '#ffffff';\n ctx.lineWidth = 1;\n ctx.beginPath();\n\n const sliceWidth = width / bufferLength;\n let x = 0;\n\n for (let i = 0; i < bufferLength; i++) {\n const v = dataArray[i] / 128.0;\n const y = (v * height) / 2;\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n x += sliceWidth;\n }\n\n ctx.lineTo(width, height / 2);\n ctx.stroke();\n animationRef.current = requestAnimationFrame(draw);\n };\n\n draw();\n return () => { if (animationRef.current) cancelAnimationFrame(animationRef.current); };\n }, [analyser, isActive]);\n\n return <canvas ref={canvasRef} width={300} height={50} style={{ width: '100%', height: '50px', background: 'transparent' }} />;\n};\n\n// Text Interface Component\nconst TextInterface: React.FC<{\n apiKey: string;\n apiUrl: string;\n agentName: string;\n systemInstruction: string;\n}> = ({ apiKey, apiUrl, agentName, systemInstruction }) => {\n const [messages, setMessages] = useState<Message[]>([\n { id: 'welcome', role: 'assistant', text: `VOX INITIALIZED. GREETINGS. I AM ${agentName}. HOW MAY I ASSIST YOUR INQUIRY?` }\n ]);\n const [input, setInput] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (scrollRef.current) scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }, [messages]);\n\n const handleSend = async (e?: React.FormEvent) => {\n e?.preventDefault();\n if (!input.trim() || isLoading) return;\n\n const messageText = input;\n const userMsg: Message = { id: Date.now().toString(), role: 'user', text: messageText };\n setMessages(prev => [...prev, userMsg]);\n setInput('');\n setIsLoading(true);\n\n try {\n const history = messages.filter(m => m.id !== 'welcome').map(m => ({ role: m.role === 'assistant' ? 'model' : 'user', text: m.text }));\n const response = await fetch(`${apiUrl}/api/v1/chat`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'x-api-key': apiKey },\n body: JSON.stringify({ message: messageText, history, systemInstruction })\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new Error(errorData.error || 'API request failed');\n }\n const data = await response.json();\n const botMsg: Message = { id: (Date.now() + 1).toString(), role: 'assistant', text: data.response?.toUpperCase() || 'ERROR: NO RESPONSE' };\n setMessages(prev => [...prev, botMsg]);\n } catch (err: any) {\n console.error('VOX Chat Error:', err);\n const errorMsg: Message = { id: (Date.now() + 1).toString(), role: 'assistant', text: `ERROR: ${err.message || 'SIGNAL LOST. RETRY.'}` };\n setMessages(prev => [...prev, errorMsg]);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', height: '100%', background: '#000000' }}>\n <div ref={scrollRef} style={{ flex: 1, overflowY: 'auto', padding: '16px', display: 'flex', flexDirection: 'column', gap: '16px' }}>\n {messages.map((msg) => (\n <div key={msg.id} style={{ display: 'flex', justifyContent: msg.role === 'user' ? 'flex-end' : 'flex-start' }}>\n <div style={{ display: 'flex', flexDirection: msg.role === 'user' ? 'row-reverse' : 'row', alignItems: 'flex-start', gap: '8px', maxWidth: '85%' }}>\n <div style={{\n flexShrink: 0, width: '24px', height: '24px', display: 'flex', alignItems: 'center', justifyContent: 'center',\n border: msg.role === 'user' ? '1px solid #ffffff' : 'none',\n background: msg.role === 'user' ? '#ffffff' : 'transparent',\n color: msg.role === 'user' ? '#000000' : '#ffffff'\n }}>\n {msg.role === 'user' ? <UserIcon /> : <VoxLogoIcon />}\n </div>\n <div style={{\n padding: '8px 12px', fontSize: '10px', fontWeight: 700, letterSpacing: '0.05em', lineHeight: 1.6,\n border: '1px solid #3f3f46', background: msg.role === 'user' ? '#27272a' : '#000000',\n color: msg.role === 'user' ? '#ffffff' : '#d4d4d8', borderRadius: '8px'\n }}>\n {msg.text}\n </div>\n </div>\n </div>\n ))}\n {isLoading && (\n <div style={{ display: 'flex', justifyContent: 'flex-start' }}>\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: '8px' }}>\n <div style={{ flexShrink: 0, width: '24px', height: '24px', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#ffffff', opacity: 0.2 }}>\n <VoxLogoIcon />\n </div>\n <div style={{ padding: '12px 16px', border: '1px solid #3f3f46', background: '#000000', color: '#71717a', borderRadius: '8px' }}>\n <Loader2Icon />\n </div>\n </div>\n </div>\n )}\n </div>\n <div style={{ padding: '16px' }}>\n <form onSubmit={handleSend} style={{ display: 'flex', gap: '8px' }}>\n <input\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder=\"INPUT COMMAND...\"\n disabled={isLoading}\n style={{\n flex: 1, padding: '12px 16px', border: '1px solid #52525b', background: '#000000', color: '#ffffff',\n outline: 'none', fontSize: '9px', fontWeight: 900, textTransform: 'uppercase', letterSpacing: '0.1em',\n borderRadius: '8px'\n }}\n />\n <button\n type=\"submit\"\n disabled={!input.trim() || isLoading}\n style={{\n padding: '12px 16px', background: '#ffffff', color: '#000000', border: 'none', cursor: 'pointer',\n fontSize: '9px', fontWeight: 900, textTransform: 'uppercase', letterSpacing: '0.1em',\n opacity: !input.trim() || isLoading ? 0.2 : 1, borderRadius: '8px'\n }}\n >\n EXECUTE\n </button>\n </form>\n </div>\n </div>\n );\n};\n\n\n// Voice Interface Component\nconst VoiceInterface: React.FC<{\n geminiApiKey: string;\n voiceName: string;\n systemInstruction: string;\n onEndCall?: () => void;\n}> = ({ geminiApiKey, voiceName, systemInstruction, onEndCall }) => {\n const [connectionState, setConnectionState] = useState<ConnectionState>(ConnectionState.DISCONNECTED);\n const [errorMsg, setErrorMsg] = useState('');\n const [isMuted, setIsMuted] = useState(false);\n const [callDuration, setCallDuration] = useState(0);\n const [isSpeaking, setIsSpeaking] = useState(false);\n const [speakingIntensity, setSpeakingIntensity] = useState(0);\n\n const callStartTimeRef = useRef<number | null>(null);\n const durationIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const inputAudioContextRef = useRef<AudioContext | null>(null);\n const outputAudioContextRef = useRef<AudioContext | null>(null);\n const inputAnalyserRef = useRef<AnalyserNode | null>(null);\n const outputAnalyserRef = useRef<AnalyserNode | null>(null);\n const outputGainRef = useRef<GainNode | null>(null);\n const nextStartTimeRef = useRef<number>(0);\n const sourcesRef = useRef<Set<AudioBufferSourceNode>>(new Set());\n const speakingAnimationRef = useRef<number | null>(null);\n const sessionRef = useRef<WebSocket | null>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const scriptProcessorRef = useRef<ScriptProcessorNode | null>(null);\n const sourceNodeRef = useRef<MediaStreamAudioSourceNode | null>(null);\n\n const cleanupAudio = useCallback(() => {\n if (speakingAnimationRef.current) { cancelAnimationFrame(speakingAnimationRef.current); speakingAnimationRef.current = null; }\n setIsSpeaking(false);\n setSpeakingIntensity(0);\n sourcesRef.current.forEach(source => { try { source.stop(); } catch (e) {} });\n sourcesRef.current.clear();\n if (streamRef.current) { streamRef.current.getTracks().forEach(track => { track.stop(); track.enabled = false; }); streamRef.current = null; }\n if (scriptProcessorRef.current) { try { scriptProcessorRef.current.disconnect(); } catch (e) {} scriptProcessorRef.current = null; }\n if (sourceNodeRef.current) { try { sourceNodeRef.current.disconnect(); } catch (e) {} sourceNodeRef.current = null; }\n if (outputGainRef.current) { try { outputGainRef.current.disconnect(); } catch (e) {} outputGainRef.current = null; }\n if (outputAnalyserRef.current) { try { outputAnalyserRef.current.disconnect(); } catch (e) {} outputAnalyserRef.current = null; }\n if (inputAudioContextRef.current?.state !== 'closed') { try { inputAudioContextRef.current?.close(); } catch (e) {} }\n if (outputAudioContextRef.current?.state !== 'closed') { try { outputAudioContextRef.current?.close(); } catch (e) {} }\n inputAudioContextRef.current = null;\n outputAudioContextRef.current = null;\n inputAnalyserRef.current = null;\n sessionRef.current = null;\n }, []);\n\n const connect = async () => {\n try {\n setConnectionState(ConnectionState.CONNECTING);\n setErrorMsg('');\n\n callStartTimeRef.current = Date.now();\n durationIntervalRef.current = setInterval(() => {\n if (callStartTimeRef.current) setCallDuration(Math.floor((Date.now() - callStartTimeRef.current) / 1000));\n }, 1000);\n\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext;\n const inputCtx = new AudioContextClass({ sampleRate: 16000 });\n const outputCtx = new AudioContextClass({ sampleRate: 24000 });\n inputAudioContextRef.current = inputCtx;\n outputAudioContextRef.current = outputCtx;\n\n const analyser = inputCtx.createAnalyser();\n analyser.fftSize = 256;\n inputAnalyserRef.current = analyser;\n\n const outputAnalyser = outputCtx.createAnalyser();\n outputAnalyser.fftSize = 256;\n outputAnalyserRef.current = outputAnalyser;\n\n const outputGain = outputCtx.createGain();\n outputGain.gain.value = 1;\n outputGainRef.current = outputGain;\n outputGain.connect(outputAnalyser);\n outputAnalyser.connect(outputCtx.destination);\n\n const monitorSpeaking = () => {\n if (!outputAnalyserRef.current) return;\n const dataArray = new Uint8Array(outputAnalyserRef.current.frequencyBinCount);\n outputAnalyserRef.current.getByteFrequencyData(dataArray);\n const average = dataArray.reduce((a, b) => a + b, 0) / dataArray.length;\n const intensity = Math.min(average / 128, 1);\n setIsSpeaking(intensity > 0.05);\n setSpeakingIntensity(intensity);\n speakingAnimationRef.current = requestAnimationFrame(monitorSpeaking);\n };\n monitorSpeaking();\n\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n streamRef.current = stream;\n\n const wsUrl = `wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent?key=${geminiApiKey}`;\n console.log('[VOX] Connecting to Gemini Live API...');\n const ws = new WebSocket(wsUrl);\n sessionRef.current = ws;\n\n ws.onopen = () => {\n console.log('[VOX] WebSocket connected, sending setup...');\n const setupMsg = {\n setup: {\n model: 'models/gemini-2.5-flash-native-audio-preview-09-2025',\n generationConfig: { responseModalities: ['AUDIO'], speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName } } } },\n systemInstruction: { parts: [{ text: systemInstruction }] }\n }\n };\n ws.send(JSON.stringify(setupMsg));\n };\n\n ws.onmessage = async (event) => {\n let data;\n if (event.data instanceof Blob) {\n const text = await event.data.text();\n try { data = JSON.parse(text); } catch (e) { return; }\n } else {\n try { data = JSON.parse(event.data); } catch (e) { return; }\n }\n console.log('[VOX] Received:', data);\n\n if (data.setupComplete) {\n console.log('[VOX] Setup complete, voice ready!');\n setConnectionState(ConnectionState.CONNECTED);\n\n const source = inputCtx.createMediaStreamSource(stream);\n sourceNodeRef.current = source;\n const processor = inputCtx.createScriptProcessor(2048, 1, 1);\n scriptProcessorRef.current = processor;\n\n processor.onaudioprocess = (e) => {\n if (isMuted || ws.readyState !== WebSocket.OPEN) return;\n const inputData = e.inputBuffer.getChannelData(0);\n const pcmBlob = createBlob(inputData);\n ws.send(JSON.stringify({ realtimeInput: { mediaChunks: [pcmBlob] } }));\n };\n\n source.connect(analyser);\n source.connect(processor);\n processor.connect(inputCtx.destination);\n }\n\n const audioData = data.serverContent?.modelTurn?.parts?.[0]?.inlineData?.data;\n if (audioData) {\n const ctx = outputAudioContextRef.current;\n if (!ctx) return;\n nextStartTimeRef.current = Math.max(nextStartTimeRef.current, ctx.currentTime);\n const audioBuffer = await decodeAudioData(decode(audioData), ctx, 24000, 1);\n const source = ctx.createBufferSource();\n source.buffer = audioBuffer;\n if (outputGainRef.current) source.connect(outputGainRef.current);\n else source.connect(ctx.destination);\n source.addEventListener('ended', () => sourcesRef.current.delete(source));\n source.start(nextStartTimeRef.current);\n nextStartTimeRef.current += audioBuffer.duration;\n sourcesRef.current.add(source);\n }\n\n if (data.serverContent?.interrupted) {\n sourcesRef.current.forEach(s => s.stop());\n sourcesRef.current.clear();\n nextStartTimeRef.current = 0;\n }\n };\n\n ws.onclose = (event) => {\n console.log('[VOX] WebSocket closed:', event.code, event.reason);\n setConnectionState(ConnectionState.DISCONNECTED);\n };\n ws.onerror = (error) => {\n console.error('[VOX] WebSocket error:', error);\n setConnectionState(ConnectionState.ERROR);\n setErrorMsg('Connection failed. Check your Gemini API key.');\n cleanupAudio();\n };\n\n } catch (err: any) {\n console.error('[VOX] Connection error:', err);\n setConnectionState(ConnectionState.ERROR);\n setErrorMsg(err.message || 'Failed to access microphone or connect.');\n cleanupAudio();\n }\n };\n\n const disconnect = useCallback(() => {\n callStartTimeRef.current = null;\n if (durationIntervalRef.current) { clearInterval(durationIntervalRef.current); durationIntervalRef.current = null; }\n setCallDuration(0);\n if (sessionRef.current) { try { sessionRef.current.close(); } catch (e) {} }\n cleanupAudio();\n setConnectionState(ConnectionState.DISCONNECTED);\n }, [cleanupAudio]);\n\n useEffect(() => {\n connect();\n return () => disconnect();\n }, []);\n\n const toggleMute = () => {\n setIsMuted(!isMuted);\n if (streamRef.current) streamRef.current.getAudioTracks().forEach(track => { track.enabled = isMuted; });\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: '32px', height: '100%', padding: '24px' }}>\n <div style={{ position: 'relative' }}>\n {connectionState === ConnectionState.CONNECTED && isSpeaking && (\n <>\n <div style={{ position: 'absolute', inset: 0, borderRadius: '50%', border: '1px solid rgba(255,255,255,0.2)', transform: `scale(${1 + speakingIntensity * 0.3})`, animation: 'vox-ping 1s infinite' }} />\n <div style={{ position: 'absolute', inset: 0, borderRadius: '50%', border: '1px solid rgba(255,255,255,0.1)', transform: `scale(${1 + speakingIntensity * 0.5})`, transition: 'transform 0.1s ease-out' }} />\n </>\n )}\n <div style={{\n width: '112px', height: '112px', borderRadius: '50%', display: 'flex', alignItems: 'center', justifyContent: 'center',\n border: `1px solid ${connectionState === ConnectionState.CONNECTED ? '#ffffff' : '#52525b'}`,\n boxShadow: connectionState === ConnectionState.CONNECTED ? `0 0 ${30 + speakingIntensity * 40}px rgba(255,255,255,${0.15 + speakingIntensity * 0.25})` : 'none',\n transform: isSpeaking ? `scale(${1 + speakingIntensity * 0.08})` : 'scale(1)', transition: 'all 0.3s'\n }}>\n {connectionState === ConnectionState.CONNECTING ? (\n <div style={{ width: '40px', height: '40px', border: '2px solid #ffffff', borderTopColor: 'transparent', borderRadius: '50%', animation: 'vox-spin 1s linear infinite' }} />\n ) : (\n <div style={{ padding: '20px', color: isMuted ? '#52525b' : '#ffffff' }}>\n {isMuted ? <MicOffIcon /> : <MicIcon size={40} />}\n </div>\n )}\n </div>\n {connectionState === ConnectionState.CONNECTED && (\n <span style={{ position: 'absolute', bottom: '-4px', right: '-4px', display: 'flex', width: '12px', height: '12px' }}>\n <span style={{ position: 'absolute', display: 'inline-flex', width: '100%', height: '100%', borderRadius: '50%', background: '#ffffff', opacity: isSpeaking ? 1 : 0.75, animation: isSpeaking ? 'vox-ping 1s infinite' : 'none' }} />\n <span style={{ position: 'relative', display: 'inline-flex', borderRadius: '50%', width: '12px', height: '12px', background: '#ffffff' }} />\n </span>\n )}\n </div>\n\n <div style={{ width: '100%', maxWidth: '280px', display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <p style={{ textAlign: 'center', fontSize: '10px', fontWeight: 900, color: '#71717a', textTransform: 'uppercase', letterSpacing: '0.2em', height: '20px' }}>\n {connectionState === ConnectionState.CONNECTING && 'Initializing...'}\n {connectionState === ConnectionState.CONNECTED && (isSpeaking ? 'Agent Speaking...' : isMuted ? 'Signal Muted' : 'Listening...')}\n {connectionState === ConnectionState.ERROR && 'Connection Error'}\n {connectionState === ConnectionState.DISCONNECTED && 'Disconnected'}\n </p>\n {connectionState === ConnectionState.CONNECTED && callDuration > 0 && (\n <p style={{ textAlign: 'center', fontSize: '11px', fontFamily: 'monospace', color: '#ffffff' }}>\n {Math.floor(callDuration / 60).toString().padStart(2, '0')}:{(callDuration % 60).toString().padStart(2, '0')}\n </p>\n )}\n <Visualizer analyser={inputAnalyserRef.current} isActive={connectionState === ConnectionState.CONNECTED && !isMuted} />\n </div>\n\n {connectionState === ConnectionState.ERROR && (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '10px', textTransform: 'uppercase', letterSpacing: '0.1em', padding: '12px 16px', maxWidth: '280px', textAlign: 'center', color: '#71717a', background: '#18181b', border: '1px solid #3f3f46' }}>\n <AlertCircleIcon />\n <span style={{ marginLeft: '12px' }}>{errorMsg}</span>\n </div>\n )}\n\n {connectionState === ConnectionState.CONNECTED && (\n <button onClick={() => { disconnect(); onEndCall?.(); }} style={{\n padding: '12px 24px', border: '1px solid #3f3f46', background: '#000000', color: '#71717a', cursor: 'pointer',\n fontSize: '10px', fontWeight: 900, textTransform: 'uppercase', letterSpacing: '0.1em', display: 'flex', alignItems: 'center', gap: '8px'\n }}>\n <PhoneOffIcon />\n End Call\n </button>\n )}\n </div>\n );\n};\n\n\n// Main VoxChat Component\nexport const VoxChat: React.FC<VoxChatProps> = ({\n apiKey,\n geminiApiKey,\n apiUrl = 'https://your-server.com',\n agentName: propAgentName = 'VOX-01',\n voiceName: propVoiceName = 'Kore',\n systemInstruction: propSystemInstruction = 'You are a helpful AI assistant.',\n position = 'bottom-right',\n theme = 'dark',\n buttonColor,\n buttonSize = 56,\n borderRadius = 0,\n iconColor,\n onOpen,\n onClose,\n useServerConfig = false,\n configPollInterval = 10000\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeTab, setActiveTab] = useState<'text' | 'voice'>('text');\n const [isVoiceActive, setIsVoiceActive] = useState(false);\n \n // Server config state\n const [serverConfig, setServerConfig] = useState<{\n name?: string;\n systemInstruction?: string;\n voiceName?: string;\n widgetStyle?: {\n buttonColor?: string;\n buttonSize?: number;\n borderRadius?: number;\n position?: 'bottom-right' | 'bottom-left';\n iconColor?: string;\n logoUrl?: string;\n };\n } | null>(null);\n const [configLoaded, setConfigLoaded] = useState(!useServerConfig);\n const [isInitialLoad, setIsInitialLoad] = useState(true);\n\n // Fetch config from server\n const fetchConfig = useCallback(() => {\n if (useServerConfig && apiKey && apiUrl) {\n fetch(`${apiUrl}/api/v1/config`, {\n headers: { 'x-api-key': apiKey }\n })\n .then(res => res.json())\n .then(data => {\n if (data.agentConfig) {\n setServerConfig(data.agentConfig);\n }\n setConfigLoaded(true);\n setIsInitialLoad(false);\n })\n .catch(err => {\n console.error('[VOX] Failed to fetch server config:', err);\n setConfigLoaded(true);\n setIsInitialLoad(false);\n });\n }\n }, [useServerConfig, apiKey, apiUrl]);\n\n // Initial fetch and real-time polling (every 10 seconds)\n useEffect(() => {\n if (useServerConfig && apiKey && apiUrl) {\n // Fetch immediately\n fetchConfig();\n \n // Poll at specified interval for real-time updates\n const intervalId = setInterval(fetchConfig, configPollInterval);\n \n // Cleanup interval on unmount\n return () => clearInterval(intervalId);\n }\n }, [useServerConfig, apiKey, apiUrl, fetchConfig, configPollInterval]);\n\n // Use server config if available, otherwise use props\n const agentName = serverConfig?.name || propAgentName;\n const voiceName = serverConfig?.voiceName || propVoiceName;\n const systemInstruction = serverConfig?.systemInstruction || propSystemInstruction;\n \n // Widget style from server or props\n const finalButtonColor = serverConfig?.widgetStyle?.buttonColor || buttonColor || (theme === 'light' ? '#000000' : '#ffffff');\n const finalButtonSize = serverConfig?.widgetStyle?.buttonSize || buttonSize || 56;\n const finalBorderRadius = serverConfig?.widgetStyle?.borderRadius !== undefined ? serverConfig.widgetStyle.borderRadius : (borderRadius !== undefined ? borderRadius : 50);\n const finalPosition = serverConfig?.widgetStyle?.position || position || 'bottom-right';\n const finalIconColor = serverConfig?.widgetStyle?.iconColor || iconColor || (theme === 'light' ? '#ffffff' : '#000000');\n const finalLogoUrl = serverConfig?.widgetStyle?.logoUrl;\n\n const handleOpen = () => { setIsOpen(true); onOpen?.(); };\n const handleClose = () => { setIsOpen(false); setIsVoiceActive(false); setActiveTab('text'); onClose?.(); };\n\n const handleTabChange = (tab: 'text' | 'voice') => {\n if (tab === 'voice' && activeTab !== 'voice') {\n setActiveTab('voice');\n setIsVoiceActive(true);\n } else if (tab === 'text') {\n setIsVoiceActive(false);\n setActiveTab('text');\n }\n };\n\n const handleEndCall = () => {\n setIsVoiceActive(false);\n setActiveTab('text');\n };\n\n const positionStyles = finalPosition === 'bottom-left' \n ? { bottom: '16px', left: '16px' } \n : { bottom: '16px', right: '16px' };\n\n return (\n <>\n <style>{`\n @keyframes vox-fade-in { from { opacity: 0; transform: translateY(40px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } }\n @keyframes vox-spin { to { transform: rotate(360deg); } }\n @keyframes vox-ping { 0% { transform: scale(1); opacity: 0.5; } 50% { transform: scale(1.15); opacity: 0; } 100% { transform: scale(1); opacity: 0; } }\n .vox-widget { animation: vox-fade-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards; }\n `}</style>\n\n <div style={{ position: 'fixed', zIndex: 10000, display: 'flex', flexDirection: 'column', alignItems: finalPosition === 'bottom-left' ? 'flex-start' : 'flex-end', gap: '24px', ...positionStyles }}>\n {isOpen && (\n <div className=\"vox-widget\" style={{\n width: 'min(calc(100vw - 32px), 360px)', height: '550px', maxHeight: '550px',\n background: '#000000', overflow: 'hidden', display: 'flex', flexDirection: 'column',\n border: '1px solid #3f3f46', boxShadow: '0 20px 40px -10px rgba(0,0,0,0.5)', borderRadius: '12px'\n }}>\n {/* Header */}\n <div style={{ height: '48px', background: '#000000', display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '0 16px', flexShrink: 0, borderBottom: '1px solid #3f3f46' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>\n <div style={{ width: '28px', height: '28px', display: 'flex', alignItems: 'center', justifyContent: 'center', transition: 'all 0.3s ease' }}>\n {finalLogoUrl ? (\n <img key={finalLogoUrl} src={finalLogoUrl} alt={agentName} style={{ width: '28px', height: '28px', objectFit: 'contain', transition: 'opacity 0.3s ease' }} />\n ) : (\n <MessageCircleIcon />\n )}\n </div>\n <div>\n <h2 style={{ color: '#ffffff', fontWeight: 900, fontSize: '9px', textTransform: 'uppercase', letterSpacing: '0.15em', margin: 0, transition: 'all 0.3s ease' }}>{agentName}</h2>\n <p style={{ color: '#a1a1aa', fontSize: '8px', fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.1em', margin: 0, display: 'flex', alignItems: 'center' }}>\n <span style={{ width: '4px', height: '4px', background: '#ffffff', borderRadius: '50%', marginRight: '6px' }} />\n Active\n </p>\n </div>\n </div>\n <button onClick={handleClose} style={{ background: 'none', border: 'none', color: '#a1a1aa', cursor: 'pointer', padding: '4px', transition: 'color 0.2s' }}>\n <XIcon />\n </button>\n </div>\n\n {/* Tabs */}\n <div style={{ display: 'flex', padding: '2px', background: '#18181b', borderBottom: '1px solid #3f3f46', flexShrink: 0 }}>\n <button onClick={() => handleTabChange('text')} style={{\n flex: 1, padding: '8px', fontSize: '9px', fontWeight: 900, textTransform: 'uppercase', letterSpacing: '0.15em',\n background: 'none', border: 'none', cursor: 'pointer', color: activeTab === 'text' ? '#ffffff' : '#71717a', transition: 'color 0.2s'\n }}>\n Text Interface\n </button>\n <div style={{ width: '1px', background: '#3f3f46' }} />\n <button onClick={() => handleTabChange('voice')} style={{\n flex: 1, padding: '8px', fontSize: '9px', fontWeight: 900, textTransform: 'uppercase', letterSpacing: '0.15em',\n background: 'none', border: 'none', cursor: 'pointer', color: activeTab === 'voice' ? '#ffffff' : '#71717a', transition: 'color 0.2s'\n }}>\n Voice Protocol\n </button>\n </div>\n\n {/* Content */}\n <div style={{ flex: 1, overflow: 'hidden', position: 'relative', background: '#000000' }}>\n {activeTab === 'text' ? (\n <TextInterface apiKey={apiKey} apiUrl={apiUrl} agentName={agentName} systemInstruction={systemInstruction} />\n ) : (\n isVoiceActive ? (\n <VoiceInterface geminiApiKey={geminiApiKey} voiceName={voiceName} systemInstruction={systemInstruction} onEndCall={handleEndCall} />\n ) : (\n <TextInterface apiKey={apiKey} apiUrl={apiUrl} agentName={agentName} systemInstruction={systemInstruction} />\n )\n )}\n </div>\n </div>\n )}\n\n {/* Toggle Button - only show when widget is closed and config is loaded */}\n {!isOpen && (!useServerConfig || configLoaded) && (\n <button onClick={handleOpen} style={{\n width: `${finalButtonSize}px`, height: `${finalButtonSize}px`, \n borderRadius: `${finalBorderRadius}px`,\n background: finalButtonColor, color: finalIconColor, border: 'none', cursor: 'pointer',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n boxShadow: '0 4px 20px rgba(0,0,0,0.3)', \n transition: 'all 0.3s ease, transform 0.2s',\n opacity: isInitialLoad && useServerConfig ? 0 : 1\n }}>\n {finalLogoUrl ? (\n <img src={finalLogoUrl} alt=\"Chat\" style={{ width: '60%', height: '60%', objectFit: 'contain', transition: 'opacity 0.3s ease' }} />\n ) : (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\">\n <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n </svg>\n )}\n </button>\n )}\n </div>\n </>\n );\n};\n\nexport default VoxChat;\n"],"names":["_jsx","_jsxs","useRef","useEffect","useState","useCallback","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\n\nexport interface VoxChatProps {\n apiKey: string;\n geminiApiKey: string;\n apiUrl?: string;\n agentName?: string;\n voiceName?: string;\n systemInstruction?: string;\n position?: 'bottom-right' | 'bottom-left';\n theme?: 'dark' | 'light';\n buttonColor?: string;\n buttonSize?: number;\n borderRadius?: number;\n iconColor?: string;\n onOpen?: () => void;\n onClose?: () => void;\n useServerConfig?: boolean;\n configPollInterval?: number;\n}\n\ninterface Message {\n id: string;\n role: 'user' | 'assistant';\n text: string;\n}\n\nenum ConnectionState {\n DISCONNECTED = 'DISCONNECTED',\n CONNECTING = 'CONNECTING',\n CONNECTED = 'CONNECTED',\n ERROR = 'ERROR',\n}\n\n// Audio utilities\nfunction createBlob(inputData: Float32Array): { mimeType: string; data: string } {\n const buffer = new ArrayBuffer(inputData.length * 2);\n const view = new DataView(buffer);\n for (let i = 0; i < inputData.length; i++) {\n const s = Math.max(-1, Math.min(1, inputData[i]));\n view.setInt16(i * 2, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n const base64 = btoa(String.fromCharCode(...new Uint8Array(buffer)));\n return { mimeType: 'audio/pcm;rate=16000', data: base64 };\n}\n\nfunction decode(base64: string): ArrayBuffer {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\nasync function decodeAudioData(arrayBuffer: ArrayBuffer, ctx: AudioContext, sampleRate: number, numChannels: number): Promise<AudioBuffer> {\n const dataView = new DataView(arrayBuffer);\n const numSamples = arrayBuffer.byteLength / 2;\n const audioBuffer = ctx.createBuffer(numChannels, numSamples, sampleRate);\n const channelData = audioBuffer.getChannelData(0);\n for (let i = 0; i < numSamples; i++) {\n channelData[i] = dataView.getInt16(i * 2, true) / 32768;\n }\n return audioBuffer;\n}\n\n// Icons\nconst MessageCircleIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n </svg>\n);\n\nconst MicIcon = ({ size = 20 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n);\n\nconst MicOffIcon = ({ size = 20 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n <path d=\"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2\" />\n <path d=\"M5 10v2a7 7 0 0 0 12 5\" />\n <path d=\"M15 9.34V5a3 3 0 0 0-5.68-1.33\" />\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n);\n\nconst XIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n);\n\nconst PhoneOffIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\" />\n <line x1=\"22\" x2=\"2\" y1=\"2\" y2=\"22\" />\n </svg>\n);\n\nconst UserIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" /><circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n);\n\nconst BotIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 8V4H8\" /><rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\" /><path d=\"M2 14h2\" /><path d=\"M20 14h2\" /><path d=\"M15 13v2\" /><path d=\"M9 13v2\" />\n </svg>\n);\n\nconst SendIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m22 2-7 20-4-9-9-4Z\" /><path d=\"M22 2 11 13\" />\n </svg>\n);\n\nconst PlusIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M5 12h14\" /><path d=\"M12 5v14\" />\n </svg>\n);\n\nconst Loader2Icon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" style={{ animation: 'vox-spin 1s linear infinite' }}>\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n);\n\nconst AlertCircleIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" /><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n </svg>\n);\n\n// Visualizer Component\nconst Visualizer: React.FC<{ analyser: AnalyserNode | null; isActive: boolean }> = ({ analyser, isActive }) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const animationRef = useRef<number | undefined>(undefined);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const draw = () => {\n const width = canvas.width;\n const height = canvas.height;\n ctx.clearRect(0, 0, width, height);\n\n if (!analyser || !isActive) {\n ctx.strokeStyle = '#3f3f46';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(0, height / 2);\n ctx.lineTo(width, height / 2);\n ctx.stroke();\n animationRef.current = requestAnimationFrame(draw);\n return;\n }\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n analyser.getByteTimeDomainData(dataArray);\n\n ctx.strokeStyle = '#ffffff';\n ctx.lineWidth = 1;\n ctx.beginPath();\n\n const sliceWidth = width / bufferLength;\n let x = 0;\n\n for (let i = 0; i < bufferLength; i++) {\n const v = dataArray[i] / 128.0;\n const y = (v * height) / 2;\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n x += sliceWidth;\n }\n\n ctx.lineTo(width, height / 2);\n ctx.stroke();\n animationRef.current = requestAnimationFrame(draw);\n };\n\n draw();\n return () => { if (animationRef.current) cancelAnimationFrame(animationRef.current); };\n }, [analyser, isActive]);\n\n return <canvas ref={canvasRef} width={300} height={50} style={{ width: '100%', height: '50px', background: 'transparent' }} />;\n};\n\n// Text Interface Component\nconst TextInterface: React.FC<{\n apiKey: string;\n apiUrl: string;\n agentName: string;\n systemInstruction: string;\n logoUrl?: string;\n}> = ({ apiKey, apiUrl, agentName, systemInstruction, logoUrl }) => {\n const [messages, setMessages] = useState<Message[]>([\n { id: 'welcome', role: 'assistant', text: `Hello! I'm ${agentName}. How can I help you today?` }\n ]);\n const [input, setInput] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (scrollRef.current) scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }, [messages]);\n\n const handleSend = async (e?: React.FormEvent) => {\n e?.preventDefault();\n if (!input.trim() || isLoading) return;\n\n const messageText = input;\n const userMsg: Message = { id: Date.now().toString(), role: 'user', text: messageText };\n setMessages(prev => [...prev, userMsg]);\n setInput('');\n setIsLoading(true);\n\n try {\n const history = messages.filter(m => m.id !== 'welcome').map(m => ({ role: m.role === 'assistant' ? 'model' : 'user', text: m.text }));\n const response = await fetch(`${apiUrl}/api/v1/chat`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'x-api-key': apiKey },\n body: JSON.stringify({ message: messageText, history, systemInstruction })\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new Error(errorData.error || 'API request failed');\n }\n const data = await response.json();\n const botMsg: Message = { id: (Date.now() + 1).toString(), role: 'assistant', text: data.response || 'Error: No response' };\n setMessages(prev => [...prev, botMsg]);\n } catch (err: any) {\n console.error('VOX Chat Error:', err);\n const errorMsg: Message = { id: (Date.now() + 1).toString(), role: 'assistant', text: `Error: ${err.message || 'Connection lost. Please try again.'}` };\n setMessages(prev => [...prev, errorMsg]);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', height: '100%', background: '#000000', fontFamily: 'Outfit, sans-serif' }}>\n <div ref={scrollRef} style={{ flex: 1, overflowY: 'auto', padding: '16px', display: 'flex', flexDirection: 'column', gap: '16px' }}>\n {messages.map((msg) => (\n <div key={msg.id} style={{ display: 'flex', justifyContent: msg.role === 'user' ? 'flex-end' : 'flex-start' }}>\n <div style={{ display: 'flex', flexDirection: msg.role === 'user' ? 'row-reverse' : 'row', alignItems: 'flex-start', gap: '8px', maxWidth: '85%' }}>\n <div style={{\n flexShrink: 0, width: '24px', height: '24px', display: 'flex', alignItems: 'center', justifyContent: 'center',\n border: msg.role === 'user' ? '1px solid #ffffff' : 'none',\n background: msg.role === 'user' ? '#ffffff' : 'transparent',\n color: msg.role === 'user' ? '#000000' : '#ffffff'\n }}>\n {msg.role === 'user' ? <UserIcon /> : (\n logoUrl ? <img src={logoUrl} alt={agentName} style={{ width: '24px', height: '24px', objectFit: 'contain' }} /> : <BotIcon />\n )}\n </div>\n <div style={{\n padding: '8px 12px', fontSize: '14px', fontWeight: 500, lineHeight: 1.6,\n border: '1px solid', borderRadius: '8px',\n borderColor: msg.role === 'user' ? '#52525b' : '#3f3f46',\n background: msg.role === 'user' ? '#27272a' : '#000000',\n color: msg.role === 'user' ? '#ffffff' : '#d4d4d8'\n }}>\n {msg.text}\n </div>\n </div>\n </div>\n ))}\n {isLoading && (\n <div style={{ display: 'flex', justifyContent: 'flex-start' }}>\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: '8px' }}>\n <div style={{ flexShrink: 0, width: '24px', height: '24px', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#ffffff', opacity: 0.2 }}>\n {logoUrl ? <img src={logoUrl} alt={agentName} style={{ width: '24px', height: '24px', objectFit: 'contain' }} /> : <BotIcon />}\n </div>\n <div style={{ padding: '12px 16px', border: '1px solid #3f3f46', background: '#000000', borderRadius: '8px' }}>\n <Loader2Icon />\n </div>\n </div>\n </div>\n )}\n </div>\n <div style={{ padding: '16px' }}>\n <form onSubmit={handleSend}>\n <div style={{\n width: '100%', cursor: 'text', overflow: 'clip', padding: '6px', boxShadow: '0 4px 6px -1px rgba(0,0,0,0.1)', border: '1px solid #3f3f46', borderRadius: '9999px',\n display: 'grid', gridTemplateColumns: 'auto 1fr auto', gridTemplateRows: 'auto', gap: '4px', alignItems: 'center', background: 'rgba(0,0,0,0.5)'\n }}>\n <button type=\"button\" style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: '32px', height: '32px', borderRadius: '9999px', outline: 'none', border: 'none', background: 'transparent', cursor: 'pointer', color: '#71717a' }}>\n <PlusIcon />\n </button>\n <input\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={(e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSend(); } }}\n placeholder=\"Type your message...\"\n disabled={isLoading}\n style={{ width: '100%', minHeight: '32px', resize: 'none', border: 0, padding: 0, fontSize: '14px', outline: 'none', background: 'transparent', color: '#ffffff' }}\n />\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <button type=\"button\" style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: '32px', height: '32px', borderRadius: '9999px', outline: 'none', border: 'none', background: 'transparent', cursor: 'pointer', color: '#71717a' }}>\n <MicIcon size={16} />\n </button>\n {input.trim() && (\n <button type=\"submit\" disabled={isLoading} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: '32px', height: '32px', borderRadius: '9999px', border: 'none', background: '#ffffff', color: '#000000', cursor: 'pointer' }}>\n <SendIcon />\n </button>\n )}\n </div>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\n// Voice Interface Component\nconst VoiceInterface: React.FC<{\n geminiApiKey: string;\n voiceName: string;\n systemInstruction: string;\n onEndCall?: () => void;\n}> = ({ geminiApiKey, voiceName, systemInstruction, onEndCall }) => {\n const [connectionState, setConnectionState] = useState<ConnectionState>(ConnectionState.DISCONNECTED);\n const [errorMsg, setErrorMsg] = useState('');\n const [isMuted, setIsMuted] = useState(false);\n const [callDuration, setCallDuration] = useState(0);\n\n const callStartTimeRef = useRef<number | null>(null);\n const durationIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const inputAudioContextRef = useRef<AudioContext | null>(null);\n const outputAudioContextRef = useRef<AudioContext | null>(null);\n const inputAnalyserRef = useRef<AnalyserNode | null>(null);\n const outputGainRef = useRef<GainNode | null>(null);\n const nextStartTimeRef = useRef<number>(0);\n const sourcesRef = useRef<Set<AudioBufferSourceNode>>(new Set());\n const sessionRef = useRef<WebSocket | null>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const scriptProcessorRef = useRef<ScriptProcessorNode | null>(null);\n const sourceNodeRef = useRef<MediaStreamAudioSourceNode | null>(null);\n\n const cleanupAudio = useCallback(() => {\n sourcesRef.current.forEach(source => { try { source.stop(); } catch (e) {} });\n sourcesRef.current.clear();\n if (streamRef.current) { streamRef.current.getTracks().forEach(track => { track.stop(); track.enabled = false; }); streamRef.current = null; }\n if (scriptProcessorRef.current) { try { scriptProcessorRef.current.disconnect(); } catch (e) {} scriptProcessorRef.current = null; }\n if (sourceNodeRef.current) { try { sourceNodeRef.current.disconnect(); } catch (e) {} sourceNodeRef.current = null; }\n if (outputGainRef.current) { try { outputGainRef.current.disconnect(); } catch (e) {} outputGainRef.current = null; }\n if (inputAudioContextRef.current?.state !== 'closed') { try { inputAudioContextRef.current?.close(); } catch (e) {} }\n if (outputAudioContextRef.current?.state !== 'closed') { try { outputAudioContextRef.current?.close(); } catch (e) {} }\n inputAudioContextRef.current = null;\n outputAudioContextRef.current = null;\n inputAnalyserRef.current = null;\n sessionRef.current = null;\n }, []);\n\n const connect = async () => {\n try {\n setConnectionState(ConnectionState.CONNECTING);\n setErrorMsg('');\n\n callStartTimeRef.current = Date.now();\n durationIntervalRef.current = setInterval(() => {\n if (callStartTimeRef.current) setCallDuration(Math.floor((Date.now() - callStartTimeRef.current) / 1000));\n }, 1000);\n\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext;\n const inputCtx = new AudioContextClass({ sampleRate: 16000 });\n const outputCtx = new AudioContextClass({ sampleRate: 24000 });\n inputAudioContextRef.current = inputCtx;\n outputAudioContextRef.current = outputCtx;\n\n const analyser = inputCtx.createAnalyser();\n analyser.fftSize = 256;\n inputAnalyserRef.current = analyser;\n\n const outputGain = outputCtx.createGain();\n outputGain.gain.value = 1;\n outputGainRef.current = outputGain;\n outputGain.connect(outputCtx.destination);\n\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n streamRef.current = stream;\n\n const wsUrl = `wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent?key=${geminiApiKey}`;\n const ws = new WebSocket(wsUrl);\n sessionRef.current = ws;\n\n ws.onopen = () => {\n const setupMsg = {\n setup: {\n model: 'models/gemini-2.5-flash-native-audio-preview-09-2025',\n generationConfig: { responseModalities: ['AUDIO'], speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName } } } },\n systemInstruction: { parts: [{ text: systemInstruction }] }\n }\n };\n ws.send(JSON.stringify(setupMsg));\n };\n\n ws.onmessage = async (event) => {\n let data;\n if (event.data instanceof Blob) {\n const text = await event.data.text();\n try { data = JSON.parse(text); } catch (e) { return; }\n } else {\n try { data = JSON.parse(event.data); } catch (e) { return; }\n }\n\n if (data.setupComplete) {\n setConnectionState(ConnectionState.CONNECTED);\n\n const source = inputCtx.createMediaStreamSource(stream);\n sourceNodeRef.current = source;\n const processor = inputCtx.createScriptProcessor(2048, 1, 1);\n scriptProcessorRef.current = processor;\n\n processor.onaudioprocess = (e) => {\n if (isMuted || ws.readyState !== WebSocket.OPEN) return;\n const inputData = e.inputBuffer.getChannelData(0);\n const pcmBlob = createBlob(inputData);\n ws.send(JSON.stringify({ realtimeInput: { mediaChunks: [pcmBlob] } }));\n };\n\n source.connect(analyser);\n source.connect(processor);\n processor.connect(inputCtx.destination);\n }\n\n const audioData = data.serverContent?.modelTurn?.parts?.[0]?.inlineData?.data;\n if (audioData) {\n const ctx = outputAudioContextRef.current;\n if (!ctx) return;\n nextStartTimeRef.current = Math.max(nextStartTimeRef.current, ctx.currentTime);\n const audioBuffer = await decodeAudioData(decode(audioData), ctx, 24000, 1);\n const source = ctx.createBufferSource();\n source.buffer = audioBuffer;\n if (outputGainRef.current) source.connect(outputGainRef.current);\n else source.connect(ctx.destination);\n source.addEventListener('ended', () => sourcesRef.current.delete(source));\n source.start(nextStartTimeRef.current);\n nextStartTimeRef.current += audioBuffer.duration;\n sourcesRef.current.add(source);\n }\n\n if (data.serverContent?.interrupted) {\n sourcesRef.current.forEach(s => s.stop());\n sourcesRef.current.clear();\n nextStartTimeRef.current = 0;\n }\n };\n\n ws.onclose = () => setConnectionState(ConnectionState.DISCONNECTED);\n ws.onerror = () => {\n setConnectionState(ConnectionState.ERROR);\n setErrorMsg('Connection failed. Check your Gemini API key.');\n cleanupAudio();\n };\n\n } catch (err: any) {\n setConnectionState(ConnectionState.ERROR);\n setErrorMsg(err.message || 'Failed to access microphone or connect.');\n cleanupAudio();\n }\n };\n\n const disconnect = useCallback(() => {\n callStartTimeRef.current = null;\n if (durationIntervalRef.current) { clearInterval(durationIntervalRef.current); durationIntervalRef.current = null; }\n setCallDuration(0);\n if (sessionRef.current) { try { sessionRef.current.close(); } catch (e) {} }\n cleanupAudio();\n setConnectionState(ConnectionState.DISCONNECTED);\n }, [cleanupAudio]);\n\n useEffect(() => {\n connect();\n return () => disconnect();\n }, []);\n\n const toggleMute = () => {\n setIsMuted(!isMuted);\n if (streamRef.current) streamRef.current.getAudioTracks().forEach(track => { track.enabled = isMuted; });\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: '32px', height: '100%', padding: '24px', fontFamily: 'Outfit, sans-serif' }}>\n <div style={{ position: 'relative' }}>\n <div style={{\n width: '112px', height: '112px', borderRadius: '50%', display: 'flex', alignItems: 'center', justifyContent: 'center',\n border: `1px solid ${connectionState === ConnectionState.CONNECTED ? '#ffffff' : '#52525b'}`,\n boxShadow: connectionState === ConnectionState.CONNECTED ? '0 0 30px rgba(255,255,255,0.15)' : 'none',\n transition: 'all 0.3s'\n }}>\n {connectionState === ConnectionState.CONNECTING ? (\n <div style={{ width: '40px', height: '40px', border: '2px solid #ffffff', borderTopColor: 'transparent', borderRadius: '50%', animation: 'vox-spin 1s linear infinite' }} />\n ) : (\n <div style={{ padding: '20px', color: isMuted ? '#52525b' : '#ffffff' }}>\n {isMuted ? <MicOffIcon /> : <MicIcon />}\n </div>\n )}\n </div>\n {connectionState === ConnectionState.CONNECTED && (\n <span style={{ position: 'absolute', bottom: '-4px', right: '-4px', display: 'flex', width: '12px', height: '12px' }}>\n <span style={{ position: 'absolute', display: 'inline-flex', width: '100%', height: '100%', borderRadius: '50%', background: '#ffffff', opacity: 0.75 }} />\n <span style={{ position: 'relative', display: 'inline-flex', borderRadius: '50%', width: '12px', height: '12px', background: '#ffffff' }} />\n </span>\n )}\n </div>\n\n <div style={{ width: '100%', maxWidth: '280px', display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <p style={{ textAlign: 'center', fontSize: '14px', fontWeight: 600, color: '#71717a', height: '20px' }}>\n {connectionState === ConnectionState.CONNECTING && 'Initializing...'}\n {connectionState === ConnectionState.CONNECTED && (isMuted ? 'Muted' : 'Listening...')}\n {connectionState === ConnectionState.ERROR && 'Connection error'}\n {connectionState === ConnectionState.DISCONNECTED && 'Disconnected'}\n </p>\n {connectionState === ConnectionState.CONNECTED && callDuration > 0 && (\n <p style={{ textAlign: 'center', fontSize: '11px', fontFamily: 'monospace', color: '#ffffff' }}>\n {Math.floor(callDuration / 60).toString().padStart(2, '0')}:{(callDuration % 60).toString().padStart(2, '0')}\n </p>\n )}\n <Visualizer analyser={inputAnalyserRef.current} isActive={connectionState === ConnectionState.CONNECTED && !isMuted} />\n </div>\n\n {connectionState === ConnectionState.ERROR && (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '14px', fontWeight: 600, padding: '12px 16px', maxWidth: '280px', textAlign: 'center', color: '#71717a', background: '#18181b', border: '1px solid #3f3f46', borderRadius: '8px', gap: '12px' }}>\n <AlertCircleIcon />\n <span>{errorMsg}</span>\n </div>\n )}\n\n {connectionState === ConnectionState.CONNECTED && (\n <div style={{ display: 'flex', gap: '16px' }}>\n <button onClick={toggleMute} style={{\n padding: '16px', borderRadius: '50%', border: 'none', cursor: 'pointer', transition: 'all 0.2s',\n background: isMuted ? '#27272a' : '#ffffff',\n color: isMuted ? '#71717a' : '#000000'\n }}>\n {isMuted ? <MicOffIcon /> : <MicIcon />}\n </button>\n <button onClick={() => { disconnect(); onEndCall?.(); }} style={{\n padding: '16px', borderRadius: '50%', border: 'none', cursor: 'pointer', transition: 'all 0.2s',\n background: '#dc2626', color: '#ffffff'\n }}>\n <PhoneOffIcon />\n </button>\n </div>\n )}\n </div>\n );\n};\n\n// Main VoxChat Component\nexport const VoxChat: React.FC<VoxChatProps> = ({\n apiKey,\n geminiApiKey,\n apiUrl = 'https://your-server.com',\n agentName: propAgentName = 'VOX-01',\n voiceName: propVoiceName = 'Kore',\n systemInstruction: propSystemInstruction = 'You are a helpful AI assistant.',\n position = 'bottom-right',\n theme = 'dark',\n buttonColor,\n buttonSize = 56,\n borderRadius = 0,\n iconColor,\n onOpen,\n onClose,\n useServerConfig = false,\n configPollInterval = 10000\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeTab, setActiveTab] = useState<'text' | 'voice'>('text');\n const [isVoiceActive, setIsVoiceActive] = useState(false);\n \n const [serverConfig, setServerConfig] = useState<{\n name?: string;\n systemInstruction?: string;\n voiceName?: string;\n widgetStyle?: {\n buttonColor?: string;\n buttonSize?: number;\n borderRadius?: number;\n position?: 'bottom-right' | 'bottom-left';\n iconColor?: string;\n logoUrl?: string;\n };\n } | null>(null);\n const [configLoaded, setConfigLoaded] = useState(!useServerConfig);\n const [isInitialLoad, setIsInitialLoad] = useState(true);\n\n const fetchConfig = useCallback(() => {\n if (useServerConfig && apiKey && apiUrl) {\n fetch(`${apiUrl}/api/v1/config`, {\n headers: { 'x-api-key': apiKey }\n })\n .then(res => res.json())\n .then(data => {\n if (data.agentConfig) {\n setServerConfig(data.agentConfig);\n }\n setConfigLoaded(true);\n setIsInitialLoad(false);\n })\n .catch(err => {\n console.error('[VOX] Failed to fetch server config:', err);\n setConfigLoaded(true);\n setIsInitialLoad(false);\n });\n }\n }, [useServerConfig, apiKey, apiUrl]);\n\n useEffect(() => {\n if (useServerConfig && apiKey && apiUrl) {\n fetchConfig();\n const intervalId = setInterval(fetchConfig, configPollInterval);\n return () => clearInterval(intervalId);\n }\n }, [useServerConfig, apiKey, apiUrl, fetchConfig, configPollInterval]);\n\n const agentName = serverConfig?.name || propAgentName;\n const voiceName = serverConfig?.voiceName || propVoiceName;\n const systemInstruction = serverConfig?.systemInstruction || propSystemInstruction;\n \n const finalButtonColor = serverConfig?.widgetStyle?.buttonColor || buttonColor || (theme === 'light' ? '#000000' : '#ffffff');\n const finalButtonSize = serverConfig?.widgetStyle?.buttonSize || buttonSize || 56;\n const finalBorderRadius = serverConfig?.widgetStyle?.borderRadius !== undefined ? serverConfig.widgetStyle.borderRadius : (borderRadius !== undefined ? borderRadius : 50);\n const finalPosition = serverConfig?.widgetStyle?.position || position || 'bottom-right';\n const finalIconColor = serverConfig?.widgetStyle?.iconColor || iconColor || (theme === 'light' ? '#ffffff' : '#000000');\n const finalLogoUrl = serverConfig?.widgetStyle?.logoUrl;\n\n const handleOpen = () => { setIsOpen(true); onOpen?.(); };\n const handleClose = () => { setIsOpen(false); setIsVoiceActive(false); setActiveTab('text'); onClose?.(); };\n\n const handleTabChange = (tab: 'text' | 'voice') => {\n if (tab === 'voice' && activeTab !== 'voice') {\n setActiveTab('voice');\n setIsVoiceActive(true);\n } else if (tab === 'text') {\n setIsVoiceActive(false);\n setActiveTab('text');\n }\n };\n\n const handleEndCall = () => {\n setIsVoiceActive(false);\n setActiveTab('text');\n };\n\n const positionStyles = finalPosition === 'bottom-left' \n ? { bottom: '16px', left: '16px' } \n : { bottom: '16px', right: '16px' };\n\n return (\n <>\n <link href=\"https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;900&display=swap\" rel=\"stylesheet\" />\n <style>{`\n @keyframes vox-fade-in { from { opacity: 0; transform: translateY(40px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } }\n @keyframes vox-spin { to { transform: rotate(360deg); } }\n @keyframes vox-ping { 0% { transform: scale(1); opacity: 0.5; } 50% { transform: scale(1.15); opacity: 0; } 100% { transform: scale(1); opacity: 0; } }\n .vox-widget { animation: vox-fade-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards; }\n `}</style>\n\n <div style={{ position: 'fixed', zIndex: 10000, display: 'flex', flexDirection: 'column', alignItems: finalPosition === 'bottom-left' ? 'flex-start' : 'flex-end', gap: '24px', ...positionStyles }}>\n {isOpen && (\n <div className=\"vox-widget\" style={{\n width: 'min(calc(100vw - 32px), 360px)', height: '550px', maxHeight: '550px',\n background: '#000000', overflow: 'hidden', display: 'flex', flexDirection: 'column',\n border: '1px solid #3f3f46', boxShadow: '0 20px 40px -10px rgba(0,0,0,0.5)', borderRadius: '12px',\n transition: 'all 0.3s ease'\n }}>\n {/* Combined Header with Tabs */}\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '8px 16px', flexShrink: 0, borderBottom: '1px solid #3f3f46', background: '#000000', fontFamily: 'Outfit, sans-serif' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>\n <div style={{ width: '28px', height: '28px', display: 'flex', alignItems: 'center', justifyContent: 'center', transition: 'all 0.3s ease' }}>\n {finalLogoUrl ? (\n <img key={finalLogoUrl} src={finalLogoUrl} alt={agentName} style={{ width: '28px', height: '28px', objectFit: 'contain', transition: 'opacity 0.3s ease' }} />\n ) : (\n activeTab === 'voice' ? <MicIcon /> : <MessageCircleIcon />\n )}\n </div>\n <div>\n <h2 style={{ color: '#ffffff', fontWeight: 700, fontSize: '14px', margin: 0, transition: 'all 0.3s ease' }}>{agentName}</h2>\n <p style={{ color: '#a1a1aa', fontSize: '12px', fontWeight: 500, margin: 0, display: 'flex', alignItems: 'center' }}>\n <span style={{ width: '6px', height: '6px', background: '#ffffff', borderRadius: '50%', marginRight: '6px' }} />\n Active\n </p>\n </div>\n </div>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '2px', padding: '2px', borderRadius: '8px', background: '#18181b' }}>\n <button onClick={() => handleTabChange('text')} style={{\n padding: '6px 12px', fontSize: '12px', fontWeight: 600, borderRadius: '6px',\n background: activeTab === 'text' ? '#27272a' : 'transparent', border: 'none', cursor: 'pointer', color: activeTab === 'text' ? '#ffffff' : '#71717a', transition: 'all 0.2s',\n boxShadow: activeTab === 'text' ? '0 1px 2px rgba(0,0,0,0.1)' : 'none'\n }}>\n Text\n </button>\n <button onClick={() => handleTabChange('voice')} style={{\n padding: '6px 12px', fontSize: '12px', fontWeight: 600, borderRadius: '6px',\n background: activeTab === 'voice' ? '#27272a' : 'transparent', border: 'none', cursor: 'pointer', color: activeTab === 'voice' ? '#ffffff' : '#71717a', transition: 'all 0.2s',\n boxShadow: activeTab === 'voice' ? '0 1px 2px rgba(0,0,0,0.1)' : 'none'\n }}>\n Voice\n </button>\n </div>\n\n <button onClick={handleClose} style={{ background: 'none', border: 'none', color: '#a1a1aa', cursor: 'pointer', padding: '4px', transition: 'color 0.2s' }}>\n <XIcon />\n </button>\n </div>\n\n {/* Content */}\n <div style={{ flex: 1, overflow: 'hidden', position: 'relative', background: '#000000' }}>\n {activeTab === 'text' ? (\n <TextInterface apiKey={apiKey} apiUrl={apiUrl} agentName={agentName} systemInstruction={systemInstruction} logoUrl={finalLogoUrl} />\n ) : (\n isVoiceActive ? (\n <VoiceInterface geminiApiKey={geminiApiKey} voiceName={voiceName} systemInstruction={systemInstruction} onEndCall={handleEndCall} />\n ) : (\n <TextInterface apiKey={apiKey} apiUrl={apiUrl} agentName={agentName} systemInstruction={systemInstruction} logoUrl={finalLogoUrl} />\n )\n )}\n </div>\n </div>\n )}\n\n {!isOpen && (!useServerConfig || configLoaded) && (\n <button onClick={handleOpen} style={{\n width: `${finalButtonSize}px`, height: `${finalButtonSize}px`, \n borderRadius: `${finalBorderRadius}px`,\n background: finalButtonColor, color: finalIconColor, border: 'none', cursor: 'pointer',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n boxShadow: '0 4px 20px rgba(0,0,0,0.3)', \n transition: 'all 0.3s ease, transform 0.2s',\n opacity: isInitialLoad && useServerConfig ? 0 : 1\n }}>\n {finalLogoUrl ? (\n <img src={finalLogoUrl} alt=\"Chat\" style={{ width: '60%', height: '60%', objectFit: 'contain', transition: 'opacity 0.3s ease' }} />\n ) : (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\">\n <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n </svg>\n )}\n </button>\n )}\n </div>\n </>\n );\n};\n\nexport default VoxChat;\n"],"names":["_jsx","_jsxs","useRef","useEffect","useState","useCallback","_Fragment"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vox-ai-react",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "description": "VOX AI Chat Widget for React applications with real-time configuration updates",
6
6
  "main": "dist/index.js",