@unctad-ai/voice-agent-ui 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/VoiceSettingsView-RP5CUCKI.js +7 -0
  2. package/dist/VoiceSettingsView-RP5CUCKI.js.map +1 -0
  3. package/dist/chunk-MUFUZ3TH.js +582 -0
  4. package/dist/chunk-MUFUZ3TH.js.map +1 -0
  5. package/dist/index.d.ts +184 -22
  6. package/dist/index.js +3287 -21
  7. package/dist/index.js.map +1 -1
  8. package/package.json +6 -5
  9. package/dist/VoiceAgentProvider.d.ts +0 -6
  10. package/dist/VoiceAgentProvider.d.ts.map +0 -1
  11. package/dist/VoiceAgentProvider.js +0 -8
  12. package/dist/VoiceAgentProvider.js.map +0 -1
  13. package/dist/components/AgentAvatar.d.ts +0 -16
  14. package/dist/components/AgentAvatar.d.ts.map +0 -1
  15. package/dist/components/AgentAvatar.js +0 -186
  16. package/dist/components/AgentAvatar.js.map +0 -1
  17. package/dist/components/GlassCopilotPanel.d.ts +0 -13
  18. package/dist/components/GlassCopilotPanel.d.ts.map +0 -1
  19. package/dist/components/GlassCopilotPanel.js +0 -438
  20. package/dist/components/GlassCopilotPanel.js.map +0 -1
  21. package/dist/components/PipelineMetricsBar.d.ts +0 -7
  22. package/dist/components/PipelineMetricsBar.d.ts.map +0 -1
  23. package/dist/components/PipelineMetricsBar.js +0 -62
  24. package/dist/components/PipelineMetricsBar.js.map +0 -1
  25. package/dist/components/VoiceA11yAnnouncer.d.ts +0 -8
  26. package/dist/components/VoiceA11yAnnouncer.d.ts.map +0 -1
  27. package/dist/components/VoiceA11yAnnouncer.js +0 -32
  28. package/dist/components/VoiceA11yAnnouncer.js.map +0 -1
  29. package/dist/components/VoiceControls.d.ts +0 -9
  30. package/dist/components/VoiceControls.d.ts.map +0 -1
  31. package/dist/components/VoiceControls.js +0 -60
  32. package/dist/components/VoiceControls.js.map +0 -1
  33. package/dist/components/VoiceCopilotFAB.d.ts +0 -9
  34. package/dist/components/VoiceCopilotFAB.d.ts.map +0 -1
  35. package/dist/components/VoiceCopilotFAB.js +0 -12
  36. package/dist/components/VoiceCopilotFAB.js.map +0 -1
  37. package/dist/components/VoiceDotRing.d.ts +0 -9
  38. package/dist/components/VoiceDotRing.d.ts.map +0 -1
  39. package/dist/components/VoiceDotRing.js +0 -64
  40. package/dist/components/VoiceDotRing.js.map +0 -1
  41. package/dist/components/VoiceErrorBoundary.d.ts +0 -19
  42. package/dist/components/VoiceErrorBoundary.d.ts.map +0 -1
  43. package/dist/components/VoiceErrorBoundary.js +0 -24
  44. package/dist/components/VoiceErrorBoundary.js.map +0 -1
  45. package/dist/components/VoiceErrorDisplay.d.ts +0 -8
  46. package/dist/components/VoiceErrorDisplay.d.ts.map +0 -1
  47. package/dist/components/VoiceErrorDisplay.js +0 -94
  48. package/dist/components/VoiceErrorDisplay.js.map +0 -1
  49. package/dist/components/VoiceOnboarding.d.ts +0 -8
  50. package/dist/components/VoiceOnboarding.d.ts.map +0 -1
  51. package/dist/components/VoiceOnboarding.js +0 -28
  52. package/dist/components/VoiceOnboarding.js.map +0 -1
  53. package/dist/components/VoiceOrb.d.ts +0 -10
  54. package/dist/components/VoiceOrb.d.ts.map +0 -1
  55. package/dist/components/VoiceOrb.js +0 -236
  56. package/dist/components/VoiceOrb.js.map +0 -1
  57. package/dist/components/VoiceOverlay.d.ts +0 -9
  58. package/dist/components/VoiceOverlay.d.ts.map +0 -1
  59. package/dist/components/VoiceOverlay.js +0 -199
  60. package/dist/components/VoiceOverlay.js.map +0 -1
  61. package/dist/components/VoiceSettingsView.d.ts +0 -7
  62. package/dist/components/VoiceSettingsView.d.ts.map +0 -1
  63. package/dist/components/VoiceSettingsView.js +0 -109
  64. package/dist/components/VoiceSettingsView.js.map +0 -1
  65. package/dist/components/VoiceToolCard.d.ts +0 -11
  66. package/dist/components/VoiceToolCard.d.ts.map +0 -1
  67. package/dist/components/VoiceToolCard.js +0 -37
  68. package/dist/components/VoiceToolCard.js.map +0 -1
  69. package/dist/components/VoiceTranscript.d.ts +0 -13
  70. package/dist/components/VoiceTranscript.d.ts.map +0 -1
  71. package/dist/components/VoiceTranscript.js +0 -313
  72. package/dist/components/VoiceTranscript.js.map +0 -1
  73. package/dist/components/VoiceWaveformCanvas.d.ts +0 -9
  74. package/dist/components/VoiceWaveformCanvas.d.ts.map +0 -1
  75. package/dist/components/VoiceWaveformCanvas.js +0 -91
  76. package/dist/components/VoiceWaveformCanvas.js.map +0 -1
  77. package/dist/contexts/VoiceSettingsContext.d.ts +0 -37
  78. package/dist/contexts/VoiceSettingsContext.d.ts.map +0 -1
  79. package/dist/contexts/VoiceSettingsContext.js +0 -89
  80. package/dist/contexts/VoiceSettingsContext.js.map +0 -1
  81. package/dist/index.d.ts.map +0 -1
  82. package/dist/utils.d.ts +0 -3
  83. package/dist/utils.d.ts.map +0 -1
  84. package/dist/utils.js +0 -6
  85. package/dist/utils.js.map +0 -1
@@ -1,236 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef, useEffect, useCallback, useState } from 'react';
3
- import { createNoise3D } from 'simplex-noise';
4
- import { ORB_NUM_POINTS, ORB_LERP_SPEED, useSiteConfig } from '@unctad-ai/voice-agent-core';
5
- /** Glow color that pulses around the orb per state */
6
- const STATE_GLOW = {
7
- idle: 'rgba(59, 130, 246, 0.25)',
8
- listening: 'rgba(219, 33, 41, 0.45)',
9
- processing: 'rgba(245, 158, 11, 0.4)',
10
- speaking: 'rgba(20, 184, 166, 0.4)',
11
- error: 'rgba(220, 38, 38, 0.4)',
12
- };
13
- function buildStateConfig(primaryColor) {
14
- return {
15
- idle: {
16
- colors: ['#1E3A5F', '#3B82F6'],
17
- noiseSpeed: 0.3,
18
- noiseMag: 8,
19
- baseScale: 0.975,
20
- breathAmp: 0.025,
21
- breathSpeed: 0.25,
22
- rotation: 0,
23
- shimmer: false,
24
- },
25
- listening: {
26
- colors: [primaryColor, '#F59E0B'],
27
- noiseSpeed: 0.6,
28
- noiseMag: 18,
29
- baseScale: 1.0,
30
- breathAmp: 0.04,
31
- breathSpeed: 0.5,
32
- rotation: 0,
33
- shimmer: false,
34
- },
35
- processing: {
36
- colors: ['#D97706', '#FBBF24'],
37
- noiseSpeed: 1.0,
38
- noiseMag: 14,
39
- baseScale: 1.0,
40
- breathAmp: 0.02,
41
- breathSpeed: 0.8,
42
- rotation: 0.4,
43
- shimmer: true,
44
- },
45
- speaking: {
46
- colors: ['#1B7A50', '#2DD4BF'],
47
- noiseSpeed: 0.5,
48
- noiseMag: 16,
49
- baseScale: 1.0,
50
- breathAmp: 0.05,
51
- breathSpeed: 0.4,
52
- rotation: 0,
53
- shimmer: false,
54
- },
55
- error: {
56
- colors: ['#DC2626', '#991B1B'],
57
- noiseSpeed: 1.4,
58
- noiseMag: 22,
59
- baseScale: 0.95,
60
- breathAmp: 0.01,
61
- breathSpeed: 1.2,
62
- rotation: 0,
63
- shimmer: false,
64
- },
65
- };
66
- }
67
- const NUM_POINTS = ORB_NUM_POINTS;
68
- const LERP_SPEED = ORB_LERP_SPEED;
69
- function useReducedMotion() {
70
- const [reduced, setReduced] = useState(() => window.matchMedia('(prefers-reduced-motion: reduce)').matches);
71
- useEffect(() => {
72
- const mql = window.matchMedia('(prefers-reduced-motion: reduce)');
73
- const handler = (e) => setReduced(e.matches);
74
- mql.addEventListener('change', handler);
75
- return () => mql.removeEventListener('change', handler);
76
- }, []);
77
- return reduced;
78
- }
79
- function lerp(a, b, t) {
80
- return a + (b - a) * t;
81
- }
82
- function lerpColor(a, b, t) {
83
- const parseHex = (h) => [
84
- parseInt(h.slice(1, 3), 16),
85
- parseInt(h.slice(3, 5), 16),
86
- parseInt(h.slice(5, 7), 16),
87
- ];
88
- const ca = parseHex(a);
89
- const cb = parseHex(b);
90
- const r = Math.round(lerp(ca[0], cb[0], t));
91
- const g = Math.round(lerp(ca[1], cb[1], t));
92
- const bl = Math.round(lerp(ca[2], cb[2], t));
93
- return `#${((1 << 24) | (r << 16) | (g << 8) | bl).toString(16).slice(1)}`;
94
- }
95
- export default function VoiceOrb({ state, getAmplitude, size = 200 }) {
96
- const config = useSiteConfig();
97
- const STATE_CONFIG = buildStateConfig(config.colors.primary);
98
- const svgRef = useRef(null);
99
- const rafRef = useRef(0);
100
- const noise3D = useRef(createNoise3D());
101
- const prefersReduced = useReducedMotion();
102
- const reducedRef = useRef(prefersReduced);
103
- reducedRef.current = prefersReduced;
104
- // Animated (lerped) config values that transition smoothly between states
105
- const animRef = useRef({
106
- noiseSpeed: STATE_CONFIG.idle.noiseSpeed,
107
- noiseMag: STATE_CONFIG.idle.noiseMag,
108
- baseScale: STATE_CONFIG.idle.baseScale,
109
- breathAmp: STATE_CONFIG.idle.breathAmp,
110
- breathSpeed: STATE_CONFIG.idle.breathSpeed,
111
- rotation: STATE_CONFIG.idle.rotation,
112
- color0: STATE_CONFIG.idle.colors[0],
113
- color1: STATE_CONFIG.idle.colors[1],
114
- shimmer: 0,
115
- errorShake: 0,
116
- });
117
- const stateRef = useRef(state);
118
- stateRef.current = state;
119
- const getAmplitudeRef = useRef(getAmplitude);
120
- getAmplitudeRef.current = getAmplitude;
121
- const stateConfigRef = useRef(STATE_CONFIG);
122
- stateConfigRef.current = STATE_CONFIG;
123
- const buildPath = useCallback((time, a) => {
124
- const cx = size / 2;
125
- const cy = size / 2;
126
- const baseR = size * 0.35;
127
- const amp = getAmplitudeRef.current();
128
- // amplitude influences noise magnitude
129
- const mag = a.noiseMag + amp * 20;
130
- const points = [];
131
- for (let i = 0; i < NUM_POINTS; i++) {
132
- const angle = (i / NUM_POINTS) * Math.PI * 2;
133
- const nx = Math.cos(angle);
134
- const ny = Math.sin(angle);
135
- const noiseVal = noise3D.current(nx * 1.5, ny * 1.5, time * a.noiseSpeed);
136
- const r = baseR + noiseVal * mag;
137
- points.push([cx + Math.cos(angle) * r, cy + Math.sin(angle) * r]);
138
- }
139
- // Build smooth closed path with cubic beziers
140
- let d = `M ${points[0][0]},${points[0][1]} `;
141
- for (let i = 0; i < NUM_POINTS; i++) {
142
- const curr = points[i];
143
- const next = points[(i + 1) % NUM_POINTS];
144
- const prev = points[(i - 1 + NUM_POINTS) % NUM_POINTS];
145
- const next2 = points[(i + 2) % NUM_POINTS];
146
- const cp1x = curr[0] + (next[0] - prev[0]) / 6;
147
- const cp1y = curr[1] + (next[1] - prev[1]) / 6;
148
- const cp2x = next[0] - (next2[0] - curr[0]) / 6;
149
- const cp2y = next[1] - (next2[1] - curr[1]) / 6;
150
- d += `C ${cp1x},${cp1y} ${cp2x},${cp2y} ${next[0]},${next[1]} `;
151
- }
152
- d += 'Z';
153
- return d;
154
- }, [size]);
155
- useEffect(() => {
156
- let startTime = null;
157
- const tick = (timestamp) => {
158
- if (startTime === null)
159
- startTime = timestamp;
160
- const elapsed = (timestamp - startTime) / 1000;
161
- const target = stateConfigRef.current[stateRef.current];
162
- const a = animRef.current;
163
- // When prefers-reduced-motion is active, dampen animations significantly
164
- const rd = reducedRef.current ? 0.15 : 1;
165
- // Lerp all animated values toward target
166
- a.noiseSpeed = lerp(a.noiseSpeed, target.noiseSpeed * rd, LERP_SPEED);
167
- a.noiseMag = lerp(a.noiseMag, target.noiseMag * rd, LERP_SPEED);
168
- a.baseScale = lerp(a.baseScale, target.baseScale, LERP_SPEED);
169
- a.breathAmp = lerp(a.breathAmp, target.breathAmp * rd, LERP_SPEED);
170
- a.breathSpeed = lerp(a.breathSpeed, target.breathSpeed * rd, LERP_SPEED);
171
- a.rotation = lerp(a.rotation, target.rotation * rd, LERP_SPEED);
172
- a.shimmer = lerp(a.shimmer, target.shimmer ? (reducedRef.current ? 0 : 1) : 0, LERP_SPEED);
173
- a.color0 = lerpColor(a.color0, target.colors[0], LERP_SPEED);
174
- a.color1 = lerpColor(a.color1, target.colors[1], LERP_SPEED);
175
- // Error shake decays
176
- if (stateRef.current === 'error') {
177
- a.errorShake = lerp(a.errorShake, 1, 0.1);
178
- }
179
- else {
180
- a.errorShake = lerp(a.errorShake, 0, 0.08);
181
- }
182
- const svg = svgRef.current;
183
- if (!svg) {
184
- rafRef.current = requestAnimationFrame(tick);
185
- return;
186
- }
187
- // Breathing scale
188
- const breath = a.baseScale + Math.sin(elapsed * Math.PI * 2 * a.breathSpeed) * a.breathAmp;
189
- // Error shake offset
190
- const shakeX = a.errorShake * Math.sin(elapsed * 30) * 3 * (1 - Math.min(elapsed * 0.3, 1));
191
- // Rotation
192
- const rot = elapsed * a.rotation * 360;
193
- // Update transform
194
- const group = svg.querySelector('[data-orb-group]');
195
- if (group) {
196
- group.setAttribute('transform', `translate(${size / 2 + shakeX}, ${size / 2}) scale(${breath}) rotate(${rot}) translate(${-size / 2}, ${-size / 2})`);
197
- }
198
- // Update blob path
199
- const path = svg.querySelector('[data-orb-path]');
200
- if (path) {
201
- path.setAttribute('d', buildPath(elapsed, a));
202
- }
203
- // Update gradient colors
204
- const stop0 = svg.querySelector('[data-stop-0]');
205
- const stop1 = svg.querySelector('[data-stop-1]');
206
- if (stop0)
207
- stop0.setAttribute('stop-color', a.color0);
208
- if (stop1)
209
- stop1.setAttribute('stop-color', a.color1);
210
- // Shimmer opacity
211
- const shimmerEl = svg.querySelector('[data-shimmer]');
212
- if (shimmerEl) {
213
- const shimmerOpacity = a.shimmer * (0.15 + Math.sin(elapsed * 6) * 0.1);
214
- shimmerEl.setAttribute('opacity', String(shimmerOpacity));
215
- }
216
- // Ambient glow — color follows state, opacity pulses with breath
217
- const glowEl = svg.querySelector('[data-orb-glow]');
218
- if (glowEl) {
219
- const amp = getAmplitudeRef.current();
220
- const glowPulse = 0.35 + Math.sin(elapsed * Math.PI * 2 * a.breathSpeed) * 0.15 + amp * 0.3;
221
- glowEl.setAttribute('opacity', String(Math.min(glowPulse, 1)));
222
- glowEl.setAttribute('fill', STATE_GLOW[stateRef.current]);
223
- }
224
- rafRef.current = requestAnimationFrame(tick);
225
- };
226
- rafRef.current = requestAnimationFrame(tick);
227
- return () => cancelAnimationFrame(rafRef.current);
228
- }, [size, buildPath]);
229
- const idRef = useRef(null);
230
- idRef.current ??= Math.random().toString(36).slice(2, 8);
231
- const gradientId = `orb-gradient-${idRef.current}`;
232
- const shimmerId = `orb-shimmer-${idRef.current}`;
233
- const glowFilterId = `orb-glow-${idRef.current}`;
234
- return (_jsxs("svg", { ref: svgRef, width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "select-none", style: { overflow: 'visible' }, "aria-hidden": "true", children: [_jsxs("defs", { children: [_jsxs("radialGradient", { id: gradientId, cx: "40%", cy: "35%", r: "60%", children: [_jsx("stop", { "data-stop-0": true, offset: "0%", stopColor: STATE_CONFIG.idle.colors[0] }), _jsx("stop", { "data-stop-1": true, offset: "100%", stopColor: STATE_CONFIG.idle.colors[1] })] }), _jsxs("radialGradient", { id: shimmerId, cx: "30%", cy: "30%", r: "50%", children: [_jsx("stop", { offset: "0%", stopColor: "white", stopOpacity: "0.6" }), _jsx("stop", { offset: "100%", stopColor: "white", stopOpacity: "0" })] }), _jsx("filter", { id: glowFilterId, x: "-50%", y: "-50%", width: "200%", height: "200%", children: _jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "18" }) })] }), _jsx("circle", { "data-orb-glow": true, cx: size / 2, cy: size / 2, r: size * 0.38, fill: STATE_GLOW.idle, opacity: "0.5", filter: `url(#${glowFilterId})` }), _jsxs("g", { "data-orb-group": true, children: [_jsx("path", { "data-orb-path": true, fill: `url(#${gradientId})` }), _jsx("circle", { "data-shimmer": true, cx: size / 2, cy: size / 2, r: size * 0.3, fill: `url(#${shimmerId})`, opacity: "0" })] })] }));
235
- }
236
- //# sourceMappingURL=VoiceOrb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoiceOrb.js","sourceRoot":"","sources":["../../src/components/VoiceOrb.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { OrbState } from '@unctad-ai/voice-agent-core';
2
- interface VoiceOverlayProps {
3
- isOpen: boolean;
4
- onClose: () => void;
5
- onStateChange?: (orbState: OrbState) => void;
6
- }
7
- export default function VoiceOverlay({ isOpen, onClose, onStateChange }: VoiceOverlayProps): import("react/jsx-runtime").JSX.Element | null;
8
- export {};
9
- //# sourceMappingURL=VoiceOverlay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoiceOverlay.d.ts","sourceRoot":"","sources":["../../src/components/VoiceOverlay.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,6BAA6B,CAAC;AAoB7E,UAAU,iBAAiB;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC9C;AAiWD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,iBAAiB,kDAiCzF"}
@@ -1,199 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useEffect, useCallback, useRef } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import { motion } from 'motion/react';
5
- import { X } from 'lucide-react';
6
- import { useVoiceAgent, voiceStateToOrbState } from '@unctad-ai/voice-agent-core';
7
- import { IDLE_TIMEOUT_MS, WIND_DOWN_MS, EXIT_ANIMATION_MS } from '@unctad-ai/voice-agent-core';
8
- import { useVoiceSettings } from '../contexts/VoiceSettingsContext';
9
- import VoiceOrb from './VoiceOrb';
10
- import VoiceWaveformCanvas from './VoiceWaveformCanvas';
11
- import VoiceTranscript from './VoiceTranscript';
12
- import VoiceToolCard from './VoiceToolCard';
13
- import VoiceControls from './VoiceControls';
14
- import VoiceErrorBoundary from './VoiceErrorBoundary';
15
- import VoiceErrorDisplay from './VoiceErrorDisplay';
16
- /** Inline z-index guarantees stacking above all page elements */
17
- const OVERLAY_Z = 2147483647;
18
- /** Liquid spring configs for entrance choreography */
19
- const SPRING_BOUNCY = { type: 'spring', damping: 20, stiffness: 180 };
20
- const SPRING_SMOOTH = { type: 'spring', damping: 28, stiffness: 160 };
21
- /** Exit easing — smooth start, accelerating pull */
22
- const EXIT_EASE = [0.4, 0, 0.7, 0.2];
23
- function WiredOverlayContent({ isMobile, onClose, onStateChange, isClosing, }) {
24
- const orbSize = isMobile ? 120 : 200;
25
- const { settings, volumeRef, speedRef } = useVoiceSettings();
26
- const { state, start, stop, messages, isLLMLoading, getAmplitude, analyser, sendTextMessage, voiceError, dismissError, } = useVoiceAgent({ settings, volumeRef, speedRef });
27
- const [toolResult, setToolResult] = useState(null);
28
- const orbState = voiceStateToOrbState(state);
29
- // Notify parent of state changes for a11y announcer
30
- const onStateChangeRef = useRef(onStateChange);
31
- useEffect(() => {
32
- onStateChangeRef.current = onStateChange;
33
- });
34
- useEffect(() => {
35
- onStateChangeRef.current?.(orbState);
36
- }, [orbState]);
37
- // Start VAD when overlay mounts, force-stop on unmount (bypass debounce)
38
- const startRef = useRef(start);
39
- const stopRef = useRef(stop);
40
- useEffect(() => {
41
- startRef.current = start;
42
- }, [start]);
43
- useEffect(() => {
44
- stopRef.current = stop;
45
- }, [stop]);
46
- useEffect(() => {
47
- startRef.current();
48
- return () => stopRef.current(true);
49
- }, []);
50
- // Stop VAD immediately when exit starts
51
- useEffect(() => {
52
- if (isClosing)
53
- stop();
54
- }, [isClosing, stop]);
55
- // --- Idle timeout: auto-close after 30s of no user activity ---
56
- const [isWindingDown, setIsWindingDown] = useState(false);
57
- const idleTimerRef = useRef(null);
58
- const windDownTimerRef = useRef(null);
59
- const onCloseRef = useRef(onClose);
60
- useEffect(() => {
61
- onCloseRef.current = onClose;
62
- });
63
- useEffect(() => {
64
- const clear = () => {
65
- if (idleTimerRef.current)
66
- clearTimeout(idleTimerRef.current);
67
- if (windDownTimerRef.current)
68
- clearTimeout(windDownTimerRef.current);
69
- idleTimerRef.current = null;
70
- windDownTimerRef.current = null;
71
- };
72
- if (isClosing || state === 'PROCESSING' || state === 'AI_SPEAKING') {
73
- clear();
74
- setIsWindingDown(false);
75
- return;
76
- }
77
- clear();
78
- setIsWindingDown(false);
79
- windDownTimerRef.current = setTimeout(() => {
80
- setIsWindingDown(true);
81
- }, IDLE_TIMEOUT_MS - WIND_DOWN_MS);
82
- idleTimerRef.current = setTimeout(() => {
83
- onCloseRef.current();
84
- }, IDLE_TIMEOUT_MS);
85
- return clear;
86
- }, [state, isClosing]);
87
- const handleTextSubmit = useCallback((text) => {
88
- sendTextMessage(text);
89
- }, [sendTextMessage]);
90
- const isListening = state === 'LISTENING' || state === 'USER_SPEAKING';
91
- return (_jsxs("div", { className: "flex flex-col items-center justify-center gap-6 h-full px-6", style: { pointerEvents: 'none' }, children: [_jsxs(motion.div, { initial: { opacity: 0, scale: 0.15 }, animate: isClosing
92
- ? { opacity: 0, scale: 0 }
93
- : { opacity: isWindingDown ? 0.3 : 1, scale: isWindingDown ? 0.92 : 1 }, transition: isClosing
94
- ? { duration: 0.3, ease: EXIT_EASE, delay: 0.15 }
95
- : isWindingDown
96
- ? { duration: WIND_DOWN_MS / 1000, ease: 'easeOut' }
97
- : { ...SPRING_BOUNCY, delay: 0.1 }, className: "relative flex items-center justify-center", style: { width: orbSize + 100, height: orbSize + 100, pointerEvents: 'auto' }, children: [_jsx("div", { className: "absolute rounded-full", style: {
98
- width: orbSize + 100,
99
- height: orbSize + 100,
100
- backdropFilter: 'blur(2px)',
101
- WebkitBackdropFilter: 'blur(2px)',
102
- filter: 'url(#liquid-glass-orb)',
103
- isolation: 'isolate',
104
- } }), _jsx("div", { className: "absolute rounded-full pointer-events-none", style: {
105
- width: orbSize + 100,
106
- height: orbSize + 100,
107
- backgroundColor: 'rgba(255, 255, 255, 0.02)',
108
- border: '1px solid rgba(255, 255, 255, 0.15)',
109
- boxShadow: '0 6px 24px rgba(0, 0, 0, 0.08), inset 0 0 20px -5px rgba(255, 255, 255, 0.3)',
110
- } }), _jsx("div", { className: "absolute rounded-full pointer-events-none", style: {
111
- width: orbSize + 100,
112
- height: orbSize + 100,
113
- background: 'radial-gradient(ellipse 70% 40% at 50% 12%, rgba(255,255,255,0.2) 0%, transparent 55%)',
114
- } }), _jsx(VoiceWaveformCanvas, { analyserNode: analyser, state: orbState, size: orbSize + 100 }), _jsx("div", { className: "absolute rounded-full", style: { width: orbSize, height: orbSize }, children: _jsx(VoiceOrb, { state: orbState, getAmplitude: getAmplitude, size: orbSize }) })] }), _jsx(motion.div, { initial: { opacity: 0, y: 24 }, animate: isClosing ? { opacity: 0, y: 16 } : { opacity: 1, y: 0 }, transition: isClosing
115
- ? { duration: 0.25, ease: EXIT_EASE, delay: 0.08 }
116
- : { ...SPRING_SMOOTH, delay: 0.3 }, children: _jsx(VoiceTranscript, { messages: messages, isTyping: state === 'AI_SPEAKING' || isLLMLoading }) }), _jsx("div", { style: { pointerEvents: 'auto' }, children: _jsx(VoiceErrorDisplay, { error: voiceError, onDismiss: dismissError }) }), _jsx("div", { style: { pointerEvents: 'auto' }, children: _jsx(VoiceToolCard, { result: toolResult, onDismiss: () => setToolResult(null) }) }), _jsx(motion.div, { initial: { opacity: 0, y: 48 }, animate: isClosing ? { opacity: 0, y: 30 } : { opacity: 1, y: 0 }, transition: isClosing
117
- ? { duration: 0.25, ease: EXIT_EASE, delay: 0 }
118
- : { ...SPRING_SMOOTH, delay: 0.4 }, className: "w-full", style: { pointerEvents: 'auto' }, children: _jsx(VoiceControls, { state: state, onTextSubmit: handleTextSubmit, isListening: isListening }) })] }));
119
- }
120
- function OverlayPortal({ isOpen, isClosing, onClose, onStateChange, isMobile, }) {
121
- if (!isOpen)
122
- return null;
123
- return createPortal(_jsxs(_Fragment, { children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "0", height: "0", style: { position: 'absolute', overflow: 'hidden' }, "aria-hidden": "true", children: _jsx("defs", { children: _jsxs("filter", { id: "liquid-glass-orb", x: "0%", y: "0%", width: "100%", height: "100%", children: [_jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.008 0.008", numOctaves: "2", seed: "92", result: "noise" }), _jsx("feGaussianBlur", { in: "noise", stdDeviation: "2", result: "blurred_noise" }), _jsx("feDisplacementMap", { in: "SourceGraphic", in2: "blurred_noise", scale: "50", xChannelSelector: "R", yChannelSelector: "G" })] }) }) }), _jsx(motion.div, { initial: { opacity: 0 }, animate: isClosing ? { opacity: 0 } : { opacity: 1 }, transition: {
124
- duration: isClosing ? 0.35 : 0.4,
125
- ease: 'easeOut',
126
- delay: isClosing ? 0.2 : 0,
127
- }, "aria-hidden": "true", style: {
128
- position: 'fixed',
129
- inset: 0,
130
- zIndex: OVERLAY_Z,
131
- pointerEvents: 'none',
132
- backgroundColor: 'rgba(0, 0, 0, 0.15)',
133
- } }, "voice-overlay-bg"), _jsx(motion.div, { initial: { opacity: 0, y: 80 }, animate: isClosing ? { opacity: 0, y: 60 } : { opacity: 1, y: 0 }, transition: isClosing
134
- ? { duration: 0.3, ease: EXIT_EASE, delay: 0.2 }
135
- : { duration: 0.6, ease: [0.22, 1, 0.36, 1], delay: 0.05 }, "aria-hidden": "true", style: {
136
- position: 'fixed',
137
- bottom: 0,
138
- left: 0,
139
- right: 0,
140
- height: '28rem',
141
- zIndex: OVERLAY_Z,
142
- pointerEvents: 'none',
143
- background: 'linear-gradient(to top, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.15) 40%, transparent 100%)',
144
- } }, "voice-overlay-gradient"), _jsxs("div", { role: "dialog", "aria-label": "Voice Assistant", "aria-modal": "false", style: {
145
- position: 'fixed',
146
- inset: 0,
147
- zIndex: OVERLAY_Z,
148
- pointerEvents: 'none',
149
- display: 'flex',
150
- alignItems: 'center',
151
- justifyContent: 'center',
152
- }, children: [_jsx(motion.button, { initial: { opacity: 0, scale: 0.7 }, animate: isClosing ? { opacity: 0, scale: 0.7 } : { opacity: 1, scale: 1 }, transition: isClosing
153
- ? { duration: 0.2, ease: EXIT_EASE, delay: 0.06 }
154
- : { ...SPRING_SMOOTH, delay: 0.35 }, onClick: onClose, className: "absolute top-6 right-6 flex items-center justify-center rounded-full transition-all duration-200 cursor-pointer hover:scale-110", style: {
155
- pointerEvents: 'auto',
156
- zIndex: OVERLAY_Z,
157
- width: 44,
158
- height: 44,
159
- backgroundColor: 'rgba(255, 255, 255, 0.12)',
160
- border: '1px solid rgba(255, 255, 255, 0.25)',
161
- backdropFilter: 'blur(12px)',
162
- WebkitBackdropFilter: 'blur(12px)',
163
- color: 'rgba(255, 255, 255, 0.85)',
164
- }, "aria-label": "Close voice assistant", children: _jsx(X, { className: "h-5 w-5" }) }), _jsx("div", { className: "w-full h-full", style: { pointerEvents: 'none' }, children: _jsx(WiredOverlayContent, { isMobile: isMobile, onClose: onClose, onStateChange: onStateChange, isClosing: isClosing }) })] })] }), document.body);
165
- }
166
- function useIsMobile(breakpoint = 768) {
167
- const [isMobile, setIsMobile] = useState(() => window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches);
168
- useEffect(() => {
169
- const mql = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
170
- const handler = (e) => setIsMobile(e.matches);
171
- mql.addEventListener('change', handler);
172
- return () => mql.removeEventListener('change', handler);
173
- }, [breakpoint]);
174
- return isMobile;
175
- }
176
- export default function VoiceOverlay({ isOpen, onClose, onStateChange }) {
177
- const isMobile = useIsMobile();
178
- const [isClosing, setIsClosing] = useState(false);
179
- const closeTimerRef = useRef(null);
180
- const handleClose = useCallback(() => {
181
- if (isClosing)
182
- return;
183
- setIsClosing(true);
184
- closeTimerRef.current = setTimeout(() => {
185
- setIsClosing(false);
186
- onClose();
187
- }, EXIT_ANIMATION_MS);
188
- }, [isClosing, onClose]);
189
- useEffect(() => {
190
- return () => {
191
- if (closeTimerRef.current != null)
192
- clearTimeout(closeTimerRef.current);
193
- };
194
- }, []);
195
- if (!isOpen)
196
- return null;
197
- return (_jsx(VoiceErrorBoundary, { onReset: onClose, children: _jsx(OverlayPortal, { isOpen: isOpen, isClosing: isClosing, onClose: handleClose, onStateChange: onStateChange, isMobile: isMobile }) }));
198
- }
199
- //# sourceMappingURL=VoiceOverlay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoiceOverlay.js","sourceRoot":"","sources":["../../src/components/VoiceOverlay.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- interface VoiceSettingsViewProps {
2
- onBack: () => void;
3
- onVolumeChange?: (v: number) => void;
4
- }
5
- export default function VoiceSettingsView({ onBack, onVolumeChange }: VoiceSettingsViewProps): import("react/jsx-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=VoiceSettingsView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoiceSettingsView.d.ts","sourceRoot":"","sources":["../../src/components/VoiceSettingsView.tsx"],"names":[],"mappings":"AAuBA,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAwID,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,sBAAsB,2CAoR3F"}