@unctad-ai/voice-agent-ui 0.1.1
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/VoiceAgentProvider.d.ts +6 -0
- package/dist/VoiceAgentProvider.d.ts.map +1 -0
- package/dist/VoiceAgentProvider.js +8 -0
- package/dist/VoiceAgentProvider.js.map +1 -0
- package/dist/components/AgentAvatar.d.ts +16 -0
- package/dist/components/AgentAvatar.d.ts.map +1 -0
- package/dist/components/AgentAvatar.js +186 -0
- package/dist/components/AgentAvatar.js.map +1 -0
- package/dist/components/GlassCopilotPanel.d.ts +13 -0
- package/dist/components/GlassCopilotPanel.d.ts.map +1 -0
- package/dist/components/GlassCopilotPanel.js +438 -0
- package/dist/components/GlassCopilotPanel.js.map +1 -0
- package/dist/components/PipelineMetricsBar.d.ts +7 -0
- package/dist/components/PipelineMetricsBar.d.ts.map +1 -0
- package/dist/components/PipelineMetricsBar.js +62 -0
- package/dist/components/PipelineMetricsBar.js.map +1 -0
- package/dist/components/VoiceA11yAnnouncer.d.ts +8 -0
- package/dist/components/VoiceA11yAnnouncer.d.ts.map +1 -0
- package/dist/components/VoiceA11yAnnouncer.js +32 -0
- package/dist/components/VoiceA11yAnnouncer.js.map +1 -0
- package/dist/components/VoiceControls.d.ts +9 -0
- package/dist/components/VoiceControls.d.ts.map +1 -0
- package/dist/components/VoiceControls.js +60 -0
- package/dist/components/VoiceControls.js.map +1 -0
- package/dist/components/VoiceCopilotFAB.d.ts +9 -0
- package/dist/components/VoiceCopilotFAB.d.ts.map +1 -0
- package/dist/components/VoiceCopilotFAB.js +12 -0
- package/dist/components/VoiceCopilotFAB.js.map +1 -0
- package/dist/components/VoiceDotRing.d.ts +9 -0
- package/dist/components/VoiceDotRing.d.ts.map +1 -0
- package/dist/components/VoiceDotRing.js +64 -0
- package/dist/components/VoiceDotRing.js.map +1 -0
- package/dist/components/VoiceErrorBoundary.d.ts +19 -0
- package/dist/components/VoiceErrorBoundary.d.ts.map +1 -0
- package/dist/components/VoiceErrorBoundary.js +24 -0
- package/dist/components/VoiceErrorBoundary.js.map +1 -0
- package/dist/components/VoiceErrorDisplay.d.ts +8 -0
- package/dist/components/VoiceErrorDisplay.d.ts.map +1 -0
- package/dist/components/VoiceErrorDisplay.js +94 -0
- package/dist/components/VoiceErrorDisplay.js.map +1 -0
- package/dist/components/VoiceOnboarding.d.ts +8 -0
- package/dist/components/VoiceOnboarding.d.ts.map +1 -0
- package/dist/components/VoiceOnboarding.js +28 -0
- package/dist/components/VoiceOnboarding.js.map +1 -0
- package/dist/components/VoiceOrb.d.ts +10 -0
- package/dist/components/VoiceOrb.d.ts.map +1 -0
- package/dist/components/VoiceOrb.js +236 -0
- package/dist/components/VoiceOrb.js.map +1 -0
- package/dist/components/VoiceOverlay.d.ts +9 -0
- package/dist/components/VoiceOverlay.d.ts.map +1 -0
- package/dist/components/VoiceOverlay.js +199 -0
- package/dist/components/VoiceOverlay.js.map +1 -0
- package/dist/components/VoiceSettingsView.d.ts +7 -0
- package/dist/components/VoiceSettingsView.d.ts.map +1 -0
- package/dist/components/VoiceSettingsView.js +109 -0
- package/dist/components/VoiceSettingsView.js.map +1 -0
- package/dist/components/VoiceToolCard.d.ts +11 -0
- package/dist/components/VoiceToolCard.d.ts.map +1 -0
- package/dist/components/VoiceToolCard.js +37 -0
- package/dist/components/VoiceToolCard.js.map +1 -0
- package/dist/components/VoiceTranscript.d.ts +13 -0
- package/dist/components/VoiceTranscript.d.ts.map +1 -0
- package/dist/components/VoiceTranscript.js +313 -0
- package/dist/components/VoiceTranscript.js.map +1 -0
- package/dist/components/VoiceWaveformCanvas.d.ts +9 -0
- package/dist/components/VoiceWaveformCanvas.d.ts.map +1 -0
- package/dist/components/VoiceWaveformCanvas.js +91 -0
- package/dist/components/VoiceWaveformCanvas.js.map +1 -0
- package/dist/contexts/VoiceSettingsContext.d.ts +37 -0
- package/dist/contexts/VoiceSettingsContext.d.ts.map +1 -0
- package/dist/contexts/VoiceSettingsContext.js +89 -0
- package/dist/contexts/VoiceSettingsContext.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +6 -0
- package/dist/utils.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SiteConfig } from '@unctad-ai/voice-agent-core';
|
|
2
|
+
export declare function VoiceAgentProvider({ config, children, }: {
|
|
3
|
+
config: SiteConfig;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=VoiceAgentProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceAgentProvider.d.ts","sourceRoot":"","sources":["../src/VoiceAgentProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAUA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SiteConfigProvider } from '@unctad-ai/voice-agent-core';
|
|
3
|
+
import { CopilotProvider } from '@unctad-ai/voice-agent-registries';
|
|
4
|
+
import { VoiceSettingsProvider } from './contexts/VoiceSettingsContext';
|
|
5
|
+
export function VoiceAgentProvider({ config, children, }) {
|
|
6
|
+
return (_jsx(SiteConfigProvider, { config: config, children: _jsx(CopilotProvider, { children: _jsx(VoiceSettingsProvider, { children: children }) }) }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=VoiceAgentProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceAgentProvider.js","sourceRoot":"","sources":["../src/VoiceAgentProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,MAAM,UAAU,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,GAIT;IACC,OAAO,CACL,KAAC,kBAAkB,IAAC,MAAM,EAAE,MAAM,YAChC,KAAC,eAAe,cACd,KAAC,qBAAqB,cACnB,QAAQ,GACa,GACR,GACC,CACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OrbState } from '@unctad-ai/voice-agent-core';
|
|
2
|
+
interface AgentAvatarProps {
|
|
3
|
+
state: OrbState;
|
|
4
|
+
getAmplitude: () => number;
|
|
5
|
+
size?: number;
|
|
6
|
+
showAura?: boolean;
|
|
7
|
+
/** Show audio-reactive conic-gradient ring around portrait */
|
|
8
|
+
showRing?: boolean;
|
|
9
|
+
/** URL for the avatar portrait image */
|
|
10
|
+
portraitSrc?: string;
|
|
11
|
+
/** Monogram letter shown when image fails to load */
|
|
12
|
+
monogram?: string;
|
|
13
|
+
}
|
|
14
|
+
export default function AgentAvatar({ state, getAmplitude, size, showAura, showRing, portraitSrc, monogram, }: AgentAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=AgentAvatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentAvatar.d.ts","sourceRoot":"","sources":["../../src/components/AgentAvatar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAW5D,UAAU,gBAAgB;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,YAAY,EACZ,IAAS,EACT,QAAe,EACf,QAAgB,EAChB,WAAW,EACX,QAAQ,GACT,EAAE,gBAAgB,2CA0OlB"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect, useState, useCallback } from 'react';
|
|
3
|
+
import VoiceOrb from './VoiceOrb';
|
|
4
|
+
import { AVATAR_PORTRAIT_RATIO, AVATAR_STATE_FILTERS, buildGlowColors, useSiteConfig, } from '@unctad-ai/voice-agent-core';
|
|
5
|
+
/** Conic gradient colors per state — [color1, color2] */
|
|
6
|
+
const RING_COLORS = {
|
|
7
|
+
idle: ['#93a3c8', '#b0bfdb'],
|
|
8
|
+
listening: ['#DB2129', '#34d399'],
|
|
9
|
+
processing: ['#F59E0B', '#FBBF24'],
|
|
10
|
+
speaking: ['#14B8A6', '#34d399'],
|
|
11
|
+
error: ['#DC2626', '#991B1B'],
|
|
12
|
+
};
|
|
13
|
+
function lerp(a, b, t) {
|
|
14
|
+
return a + (b - a) * t;
|
|
15
|
+
}
|
|
16
|
+
export default function AgentAvatar({ state, getAmplitude, size = 36, showAura = true, showRing = false, portraitSrc, monogram, }) {
|
|
17
|
+
const config = useSiteConfig();
|
|
18
|
+
const initial = monogram ?? config.copilotName?.charAt(0)?.toUpperCase() ?? 'A';
|
|
19
|
+
const { colors } = useSiteConfig();
|
|
20
|
+
const AVATAR_GLOW_COLORS = buildGlowColors(colors);
|
|
21
|
+
const portraitSize = Math.round(size * AVATAR_PORTRAIT_RATIO);
|
|
22
|
+
const offset = Math.round((size - portraitSize) / 2);
|
|
23
|
+
// Ring sits between aura and portrait — 3px border around portrait
|
|
24
|
+
const ringWidth = 3;
|
|
25
|
+
const ringSize = portraitSize + ringWidth * 2;
|
|
26
|
+
const ringOffset = Math.round((size - ringSize) / 2);
|
|
27
|
+
const imgRef = useRef(null);
|
|
28
|
+
const glowRef = useRef(null);
|
|
29
|
+
const ringRef = useRef(null);
|
|
30
|
+
const rafRef = useRef(0);
|
|
31
|
+
const stateRef = useRef(state);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
stateRef.current = state;
|
|
34
|
+
});
|
|
35
|
+
const getAmpRef = useRef(getAmplitude);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
getAmpRef.current = getAmplitude;
|
|
38
|
+
});
|
|
39
|
+
const [loaded, setLoaded] = useState(false);
|
|
40
|
+
const [errored, setErrored] = useState(false);
|
|
41
|
+
// Detect prefers-reduced-motion
|
|
42
|
+
const reducedRef = useRef(false);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
const mql = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
45
|
+
reducedRef.current = mql.matches;
|
|
46
|
+
const handler = (e) => {
|
|
47
|
+
reducedRef.current = e.matches;
|
|
48
|
+
};
|
|
49
|
+
mql.addEventListener('change', handler);
|
|
50
|
+
return () => mql.removeEventListener('change', handler);
|
|
51
|
+
}, []);
|
|
52
|
+
// Animated filter values — lerped each frame, no React re-renders
|
|
53
|
+
const animRef = useRef({
|
|
54
|
+
brightness: AVATAR_STATE_FILTERS.idle.brightness,
|
|
55
|
+
saturate: AVATAR_STATE_FILTERS.idle.saturate,
|
|
56
|
+
opacity: AVATAR_STATE_FILTERS.idle.opacity,
|
|
57
|
+
scale: AVATAR_STATE_FILTERS.idle.scale,
|
|
58
|
+
glowIntensity: AVATAR_STATE_FILTERS.idle.glowIntensity,
|
|
59
|
+
ringAngle: 0,
|
|
60
|
+
});
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
let startTime = null;
|
|
63
|
+
let prevTimestamp = 0;
|
|
64
|
+
const tick = (timestamp) => {
|
|
65
|
+
if (startTime === null)
|
|
66
|
+
startTime = timestamp;
|
|
67
|
+
const elapsed = (timestamp - startTime) / 1000;
|
|
68
|
+
const dt = prevTimestamp ? (timestamp - prevTimestamp) / 1000 : 0.016;
|
|
69
|
+
prevTimestamp = timestamp;
|
|
70
|
+
const target = AVATAR_STATE_FILTERS[stateRef.current];
|
|
71
|
+
const a = animRef.current;
|
|
72
|
+
const speed = 0.08;
|
|
73
|
+
a.brightness = lerp(a.brightness, target.brightness, speed);
|
|
74
|
+
a.saturate = lerp(a.saturate, target.saturate, speed);
|
|
75
|
+
a.scale = lerp(a.scale, target.scale, speed);
|
|
76
|
+
a.glowIntensity = lerp(a.glowIntensity, target.glowIntensity, speed);
|
|
77
|
+
// Processing opacity pulses
|
|
78
|
+
let targetOpacity = target.opacity;
|
|
79
|
+
if (stateRef.current === 'processing') {
|
|
80
|
+
targetOpacity = 0.92 + Math.sin(elapsed * 4) * 0.06;
|
|
81
|
+
}
|
|
82
|
+
a.opacity = lerp(a.opacity, targetOpacity, speed);
|
|
83
|
+
// Speaking state: portrait scale reacts to amplitude
|
|
84
|
+
const amp = getAmpRef.current();
|
|
85
|
+
const ampFactor = reducedRef.current ? 0.2 : 1;
|
|
86
|
+
let scaleBoost = 0;
|
|
87
|
+
if (stateRef.current === 'speaking') {
|
|
88
|
+
scaleBoost = amp * 0.03 * ampFactor;
|
|
89
|
+
}
|
|
90
|
+
// Apply to portrait image via direct DOM mutation
|
|
91
|
+
const img = imgRef.current;
|
|
92
|
+
if (img) {
|
|
93
|
+
img.style.filter = `brightness(${a.brightness}) saturate(${a.saturate})`;
|
|
94
|
+
img.style.opacity = String(a.opacity);
|
|
95
|
+
img.style.transform = `scale(${a.scale + scaleBoost})`;
|
|
96
|
+
}
|
|
97
|
+
// Apply glow overlay
|
|
98
|
+
const glow = glowRef.current;
|
|
99
|
+
if (glow) {
|
|
100
|
+
glow.style.backgroundColor = AVATAR_GLOW_COLORS[stateRef.current];
|
|
101
|
+
glow.style.opacity = String(a.glowIntensity);
|
|
102
|
+
}
|
|
103
|
+
// Audio-reactive ring
|
|
104
|
+
const ring = ringRef.current;
|
|
105
|
+
if (ring) {
|
|
106
|
+
const ringColors = RING_COLORS[stateRef.current];
|
|
107
|
+
// Rotation: base 120 deg/s, amplitude boosts up to 3x
|
|
108
|
+
const rotSpeed = reducedRef.current ? 0 : 120 * (1 + amp * 2);
|
|
109
|
+
a.ringAngle = (a.ringAngle + rotSpeed * dt) % 360;
|
|
110
|
+
// Ring opacity: idle = subtle, active states = brighter with amplitude boost
|
|
111
|
+
const isActive = stateRef.current !== 'idle';
|
|
112
|
+
const ringOpacity = isActive ? 0.7 + amp * 0.3 : 0.35;
|
|
113
|
+
// Scale pulse with amplitude
|
|
114
|
+
const ringScale = 1 + amp * 0.04 * ampFactor;
|
|
115
|
+
ring.style.background = `conic-gradient(from ${a.ringAngle}deg, ${ringColors[0]}, ${ringColors[1]}, ${ringColors[0]})`;
|
|
116
|
+
ring.style.opacity = String(ringOpacity);
|
|
117
|
+
ring.style.transform = `scale(${ringScale})`;
|
|
118
|
+
}
|
|
119
|
+
rafRef.current = requestAnimationFrame(tick);
|
|
120
|
+
};
|
|
121
|
+
rafRef.current = requestAnimationFrame(tick);
|
|
122
|
+
return () => cancelAnimationFrame(rafRef.current);
|
|
123
|
+
}, []);
|
|
124
|
+
const handleLoad = useCallback(() => setLoaded(true), []);
|
|
125
|
+
const handleError = useCallback(() => setErrored(true), []);
|
|
126
|
+
return (_jsxs("div", { style: {
|
|
127
|
+
position: 'relative',
|
|
128
|
+
width: size,
|
|
129
|
+
height: size,
|
|
130
|
+
flexShrink: 0,
|
|
131
|
+
}, children: [showAura && (_jsx("div", { style: { position: 'absolute', inset: 0 }, children: _jsx(VoiceOrb, { state: state, getAmplitude: getAmplitude, size: size }) })), showRing && (_jsx("div", { ref: ringRef, style: {
|
|
132
|
+
position: 'absolute',
|
|
133
|
+
top: ringOffset,
|
|
134
|
+
left: ringOffset,
|
|
135
|
+
width: ringSize,
|
|
136
|
+
height: ringSize,
|
|
137
|
+
borderRadius: '50%',
|
|
138
|
+
background: `conic-gradient(from 0deg, ${RING_COLORS.idle[0]}, ${RING_COLORS.idle[1]}, ${RING_COLORS.idle[0]})`,
|
|
139
|
+
opacity: 0.35,
|
|
140
|
+
WebkitMask: `radial-gradient(circle, transparent ${Math.round((portraitSize / ringSize) * 50)}%, black ${Math.round((portraitSize / ringSize) * 50)}%)`,
|
|
141
|
+
mask: `radial-gradient(circle, transparent ${Math.round((portraitSize / ringSize) * 50)}%, black ${Math.round((portraitSize / ringSize) * 50)}%)`,
|
|
142
|
+
pointerEvents: 'none',
|
|
143
|
+
willChange: 'transform, background, opacity',
|
|
144
|
+
} })), _jsx("div", { ref: glowRef, style: {
|
|
145
|
+
position: 'absolute',
|
|
146
|
+
top: offset,
|
|
147
|
+
left: offset,
|
|
148
|
+
width: portraitSize,
|
|
149
|
+
height: portraitSize,
|
|
150
|
+
borderRadius: '50%',
|
|
151
|
+
mixBlendMode: 'soft-light',
|
|
152
|
+
opacity: 0,
|
|
153
|
+
pointerEvents: 'none',
|
|
154
|
+
transition: 'background-color 0.3s',
|
|
155
|
+
} }), _jsx("div", { style: {
|
|
156
|
+
position: 'absolute',
|
|
157
|
+
top: offset,
|
|
158
|
+
left: offset,
|
|
159
|
+
width: portraitSize,
|
|
160
|
+
height: portraitSize,
|
|
161
|
+
borderRadius: '50%',
|
|
162
|
+
overflow: 'hidden',
|
|
163
|
+
}, children: errored || !portraitSrc ? (
|
|
164
|
+
// Monogram fallback
|
|
165
|
+
_jsx("div", { style: {
|
|
166
|
+
width: '100%',
|
|
167
|
+
height: '100%',
|
|
168
|
+
display: 'flex',
|
|
169
|
+
alignItems: 'center',
|
|
170
|
+
justifyContent: 'center',
|
|
171
|
+
backgroundColor: colors.primary,
|
|
172
|
+
color: 'white',
|
|
173
|
+
fontFamily: 'DM Sans, sans-serif',
|
|
174
|
+
fontWeight: 700,
|
|
175
|
+
fontSize: Math.round(portraitSize * 0.45),
|
|
176
|
+
}, children: initial })) : (_jsx("img", { ref: imgRef, src: portraitSrc, alt: "Avatar", onLoad: handleLoad, onError: handleError, style: {
|
|
177
|
+
width: '100%',
|
|
178
|
+
height: '100%',
|
|
179
|
+
objectFit: 'cover',
|
|
180
|
+
borderRadius: '50%',
|
|
181
|
+
opacity: loaded ? 0.95 : 0,
|
|
182
|
+
transition: loaded ? 'none' : 'opacity 0.3s ease-in',
|
|
183
|
+
willChange: 'filter, transform, opacity',
|
|
184
|
+
}, draggable: false })) })] }));
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=AgentAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentAvatar.js","sourceRoot":"","sources":["../../src/components/AgentAvatar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { OrbState } from '@unctad-ai/voice-agent-core';
|
|
2
|
+
import './AgentAvatarFAB.css';
|
|
3
|
+
interface GlassCopilotPanelProps {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onOpen?: () => void;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onStateChange?: (orbState: OrbState) => void;
|
|
8
|
+
/** URL for the avatar portrait image */
|
|
9
|
+
portraitSrc?: string;
|
|
10
|
+
}
|
|
11
|
+
export default function GlassCopilotPanel({ isOpen, onOpen, onClose, onStateChange, portraitSrc }: GlassCopilotPanelProps): import("react").ReactPortal;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=GlassCopilotPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlassCopilotPanel.d.ts","sourceRoot":"","sources":["../../src/components/GlassCopilotPanel.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,QAAQ,EAA8D,MAAM,6BAA6B,CAAC;AAGxH,OAAO,sBAAsB,CAAC;AAoC9B,UAAU,sBAAsB;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC7C,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2zBD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,sBAAsB,+BAqExH"}
|