@botuyo/chat-widget-standalone 1.0.0 → 1.0.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.
- package/README.md +243 -290
- package/dist/{ChatWidget-B6W68bT_.js → ChatWidget-BCHSZnMy.js} +17 -17
- package/dist/{ChatWidget-B6W68bT_.js.map → ChatWidget-BCHSZnMy.js.map} +1 -1
- package/dist/botuyo-chat.css +1 -1
- package/dist/botuyo-chat.js +1 -1
- package/dist/{chunk-audio-CgduwQLl.js → chunk-audio-BT2WWPfS.js} +2 -2
- package/dist/{chunk-audio-CgduwQLl.js.map → chunk-audio-BT2WWPfS.js.map} +1 -1
- package/dist/{chunk-chat-ui-EAAXXtnK.js → chunk-chat-ui-BHfnFN_3.js} +10 -10
- package/dist/{chunk-chat-ui-EAAXXtnK.js.map → chunk-chat-ui-BHfnFN_3.js.map} +1 -1
- package/dist/{chunk-gallery-B9sBFYYc.js → chunk-gallery-CHMxgXlB.js} +2 -2
- package/dist/{chunk-gallery-B9sBFYYc.js.map → chunk-gallery-CHMxgXlB.js.map} +1 -1
- package/dist/src/chat-widget/ChatWidget.d.ts +3 -0
- package/dist/src/chat-widget/ChatWidget.d.ts.map +1 -0
- package/dist/src/chat-widget/ChatWidgetProvider.d.ts +81 -0
- package/dist/src/chat-widget/ChatWidgetProvider.d.ts.map +1 -0
- package/dist/src/chat-widget/components/AudioPlayer.d.ts +8 -0
- package/dist/src/chat-widget/components/AudioPlayer.d.ts.map +1 -0
- package/dist/src/chat-widget/components/AudioPlayer.stories.d.ts +37 -0
- package/dist/src/chat-widget/components/AudioPlayer.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/ChatWindow.d.ts +28 -0
- package/dist/src/chat-widget/components/ChatWindow.d.ts.map +1 -0
- package/dist/src/chat-widget/components/ChatWindow.stories.d.ts +71 -0
- package/dist/src/chat-widget/components/ChatWindow.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/ErrorBoundary.d.ts +36 -0
- package/dist/src/chat-widget/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts +29 -0
- package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/Gallery.d.ts +14 -0
- package/dist/src/chat-widget/components/Gallery.d.ts.map +1 -0
- package/dist/src/chat-widget/components/Gallery.stories.d.ts +33 -0
- package/dist/src/chat-widget/components/Gallery.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/Icons.d.ts +7 -0
- package/dist/src/chat-widget/components/Icons.d.ts.map +1 -0
- package/dist/src/chat-widget/components/InputArea.d.ts +20 -0
- package/dist/src/chat-widget/components/InputArea.d.ts.map +1 -0
- package/dist/src/chat-widget/components/InputArea.stories.d.ts +61 -0
- package/dist/src/chat-widget/components/InputArea.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/LanguageSelector.d.ts +25 -0
- package/dist/src/chat-widget/components/LanguageSelector.d.ts.map +1 -0
- package/dist/src/chat-widget/components/Launcher.d.ts +21 -0
- package/dist/src/chat-widget/components/Launcher.d.ts.map +1 -0
- package/dist/src/chat-widget/components/Launcher.stories.d.ts +75 -0
- package/dist/src/chat-widget/components/Launcher.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/LiveCallInputArea.d.ts +29 -0
- package/dist/src/chat-widget/components/LiveCallInputArea.d.ts.map +1 -0
- package/dist/src/chat-widget/components/MessageBubble.d.ts +14 -0
- package/dist/src/chat-widget/components/MessageBubble.d.ts.map +1 -0
- package/dist/src/chat-widget/components/MessageBubble.stories.d.ts +70 -0
- package/dist/src/chat-widget/components/MessageBubble.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/MessageList.d.ts +15 -0
- package/dist/src/chat-widget/components/MessageList.d.ts.map +1 -0
- package/dist/src/chat-widget/components/MessageList.stories.d.ts +52 -0
- package/dist/src/chat-widget/components/MessageList.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/TypingIndicator.d.ts +2 -0
- package/dist/src/chat-widget/components/TypingIndicator.d.ts.map +1 -0
- package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts +39 -0
- package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts.map +1 -0
- package/dist/src/chat-widget/components/VoiceInputArea.d.ts +26 -0
- package/dist/src/chat-widget/components/VoiceInputArea.d.ts.map +1 -0
- package/dist/src/chat-widget/components/index.d.ts +16 -0
- package/dist/src/chat-widget/components/index.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useAnalytics.d.ts +19 -0
- package/dist/src/chat-widget/hooks/useAnalytics.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useChatSocket.d.ts +30 -0
- package/dist/src/chat-widget/hooks/useChatSocket.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useChatState.d.ts +23 -0
- package/dist/src/chat-widget/hooks/useChatState.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useChatWidget.d.ts +48 -0
- package/dist/src/chat-widget/hooks/useChatWidget.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useDarkMode.d.ts +6 -0
- package/dist/src/chat-widget/hooks/useDarkMode.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts +10 -0
- package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useFocusTrap.d.ts +34 -0
- package/dist/src/chat-widget/hooks/useFocusTrap.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useHighContrast.d.ts +6 -0
- package/dist/src/chat-widget/hooks/useHighContrast.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useIsMobile.d.ts +2 -0
- package/dist/src/chat-widget/hooks/useIsMobile.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useNotifications.d.ts +23 -0
- package/dist/src/chat-widget/hooks/useNotifications.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useRateLimit.d.ts +15 -0
- package/dist/src/chat-widget/hooks/useRateLimit.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts +10 -0
- package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts.map +1 -0
- package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts +12 -0
- package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts.map +1 -0
- package/dist/src/chat-widget/i18n/LanguageContext.d.ts +33 -0
- package/dist/src/chat-widget/i18n/LanguageContext.d.ts.map +1 -0
- package/dist/src/chat-widget/i18n/index.d.ts +8 -0
- package/dist/src/chat-widget/i18n/index.d.ts.map +1 -0
- package/dist/src/chat-widget/i18n/translations.d.ts +177 -0
- package/dist/src/chat-widget/i18n/translations.d.ts.map +1 -0
- package/dist/src/chat-widget/i18n/useTranslations.d.ts +27 -0
- package/dist/src/chat-widget/i18n/useTranslations.d.ts.map +1 -0
- package/dist/src/chat-widget/index.d.ts +11 -0
- package/dist/src/chat-widget/index.d.ts.map +1 -0
- package/dist/src/chat-widget/types/index.d.ts +268 -0
- package/dist/src/chat-widget/types/index.d.ts.map +1 -0
- package/dist/src/chat-widget/types/socket.d.ts +101 -0
- package/dist/src/chat-widget/types/socket.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/dateUtils.d.ts +33 -0
- package/dist/src/chat-widget/utils/dateUtils.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/defaultAssets.d.ts +20 -0
- package/dist/src/chat-widget/utils/defaultAssets.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/deviceId.d.ts +18 -0
- package/dist/src/chat-widget/utils/deviceId.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/fileValidation.d.ts +75 -0
- package/dist/src/chat-widget/utils/fileValidation.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/logger.d.ts +31 -0
- package/dist/src/chat-widget/utils/logger.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/performance.d.ts +50 -0
- package/dist/src/chat-widget/utils/performance.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/storage.d.ts +24 -0
- package/dist/src/chat-widget/utils/storage.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/theme.d.ts +122 -0
- package/dist/src/chat-widget/utils/theme.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/theme.examples.d.ts +47 -0
- package/dist/src/chat-widget/utils/theme.examples.d.ts.map +1 -0
- package/dist/src/chat-widget/utils/themes/index.d.ts +12 -0
- package/dist/src/chat-widget/utils/themes/index.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/components/CallButton.d.ts +12 -0
- package/dist/src/chat-widget/voice/components/CallButton.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts +12 -0
- package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/components/VoiceButton.d.ts +13 -0
- package/dist/src/chat-widget/voice/components/VoiceButton.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts +12 -0
- package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts +12 -0
- package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/components/index.d.ts +10 -0
- package/dist/src/chat-widget/voice/components/index.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/index.d.ts +11 -0
- package/dist/src/chat-widget/voice/index.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/types.d.ts +232 -0
- package/dist/src/chat-widget/voice/types.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/useLiveCall.d.ts +13 -0
- package/dist/src/chat-widget/voice/useLiveCall.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/useVoiceChat.d.ts +13 -0
- package/dist/src/chat-widget/voice/useVoiceChat.d.ts.map +1 -0
- package/dist/src/chat-widget/voice/useVoiceState.d.ts +38 -0
- package/dist/src/chat-widget/voice/useVoiceState.d.ts.map +1 -0
- package/dist/src/lib/utils.d.ts +3 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/standalone.d.ts +95 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/stats.html +1 -1
- package/package.json +3 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAe3C,cAAM,WAAW;IACf,OAAO,CAAC,EAAE,CAAoC;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAI;IAEzB,IAAI;IAuBJ,WAAW,CAAC,OAAO,EAAE,WAAW;IAShC,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE;IAUpC,WAAW,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWhD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAUxD,aAAa,CAAC,EAAE,EAAE,MAAM;IASxB,aAAa;IAUb,WAAW,CAAC,IAAI,EAAE,GAAG;IASrB,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAU3B,QAAQ;IAWR,uBAAuB;CA+B9B;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Sistema de Temas y CSS Variables
|
|
4
|
+
*
|
|
5
|
+
* Este módulo centraliza toda la gestión de temas del widget.
|
|
6
|
+
* Exporta temas predefinidos, utilidades y constantes.
|
|
7
|
+
*/
|
|
8
|
+
import { ChatTheme } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* ===================================
|
|
11
|
+
* CSS VARIABLES (HSL Format)
|
|
12
|
+
* ===================================
|
|
13
|
+
*/
|
|
14
|
+
export interface CSSVariables {
|
|
15
|
+
background: string;
|
|
16
|
+
foreground: string;
|
|
17
|
+
card: string;
|
|
18
|
+
cardForeground: string;
|
|
19
|
+
primary: string;
|
|
20
|
+
primaryForeground: string;
|
|
21
|
+
muted: string;
|
|
22
|
+
mutedForeground: string;
|
|
23
|
+
border: string;
|
|
24
|
+
destructive: string;
|
|
25
|
+
radius: string;
|
|
26
|
+
spacing1?: string;
|
|
27
|
+
spacing2?: string;
|
|
28
|
+
spacing3?: string;
|
|
29
|
+
spacing4?: string;
|
|
30
|
+
spacing5?: string;
|
|
31
|
+
spacing6?: string;
|
|
32
|
+
spacing8?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Valores CSS por defecto (Light Mode - BotUyo)
|
|
36
|
+
*/
|
|
37
|
+
export declare const DEFAULT_CSS_VARIABLES: CSSVariables;
|
|
38
|
+
/**
|
|
39
|
+
* Valores CSS para Dark Mode
|
|
40
|
+
*/
|
|
41
|
+
export declare const DARK_CSS_VARIABLES: CSSVariables;
|
|
42
|
+
/**
|
|
43
|
+
* ===================================
|
|
44
|
+
* TEMAS PREDEFINIDOS
|
|
45
|
+
* ===================================
|
|
46
|
+
*
|
|
47
|
+
* Cada tema está diseñado para ser visualmente único y distintivo.
|
|
48
|
+
* Los usuarios pueden personalizar cualquier valor, y el sistema de merge
|
|
49
|
+
* garantiza que los valores faltantes se completen con defaults.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* TEMA DEFAULT - BotUyo (Verde Fresco)
|
|
53
|
+
* Tema por defecto cuando no se envía configuración
|
|
54
|
+
*/
|
|
55
|
+
export declare const DEFAULT_THEME: Required<Omit<ChatTheme, 'avatars' | 'emotion' | 'starterPrompt' | 'launcherBorderRadius' | 'borderRadius' | 'bubbleStyles' | 'promptPersistence' | 'avatarScale' | 'height' | 'bottom' | 'defaultLocale'>>;
|
|
56
|
+
/**
|
|
57
|
+
* TEMA OCEAN - Azul Profundo
|
|
58
|
+
* Diseño profesional y corporativo con tonos azules
|
|
59
|
+
*/
|
|
60
|
+
export declare const OCEAN_THEME: ChatTheme;
|
|
61
|
+
/**
|
|
62
|
+
* TEMA SUNSET - Naranja Cálido
|
|
63
|
+
* Diseño energético y amigable con tonos cálidos
|
|
64
|
+
*/
|
|
65
|
+
export declare const SUNSET_THEME: ChatTheme;
|
|
66
|
+
/**
|
|
67
|
+
* TEMA MIDNIGHT - Negro Premium
|
|
68
|
+
* Diseño oscuro y minimalista de alto contraste
|
|
69
|
+
*/
|
|
70
|
+
export declare const MIDNIGHT_THEME: ChatTheme;
|
|
71
|
+
/**
|
|
72
|
+
* TEMA NATURE - Verde Bosque
|
|
73
|
+
* Diseño natural y relajante
|
|
74
|
+
*/
|
|
75
|
+
export declare const NATURE_THEME: ChatTheme;
|
|
76
|
+
/**
|
|
77
|
+
* ===================================
|
|
78
|
+
* UTILIDADES
|
|
79
|
+
* ===================================
|
|
80
|
+
*/
|
|
81
|
+
/**
|
|
82
|
+
* Sistema de Merge de Temas con Prioridades
|
|
83
|
+
*
|
|
84
|
+
* PRIORIDAD (de mayor a menor):
|
|
85
|
+
* 1. Tema del proyecto (userTheme) - Lo que el usuario define en su código
|
|
86
|
+
* 2. Tema del socket (socketTheme) - Lo que viene de la API/configuración remota
|
|
87
|
+
* 3. Tema por defecto (DEFAULT_THEME) - Valores fallback
|
|
88
|
+
*
|
|
89
|
+
* El merge es PROFUNDO para cssVariables, garantizando que cada propiedad
|
|
90
|
+
* individual se complete con su fallback correspondiente.
|
|
91
|
+
*/
|
|
92
|
+
export declare function mergeThemeWithDefaults(userTheme?: Partial<ChatTheme>, socketTheme?: Partial<ChatTheme>): Required<Omit<ChatTheme, 'avatars' | 'emotion' | 'starterPrompt' | 'launcherBorderRadius' | 'borderRadius' | 'bubbleStyles' | 'promptPersistence' | 'avatarScale' | 'height' | 'bottom' | 'defaultLocale'>>;
|
|
93
|
+
/**
|
|
94
|
+
* Obtiene el color primario con fallback
|
|
95
|
+
*/
|
|
96
|
+
export declare function getPrimaryColor(options: {
|
|
97
|
+
primaryColor?: string;
|
|
98
|
+
}): string;
|
|
99
|
+
/**
|
|
100
|
+
* Convierte variables CSS a un objeto de estilos inline
|
|
101
|
+
*/
|
|
102
|
+
export declare function cssVariablesToInlineStyles(variables: Partial<CSSVariables>): Record<string, string>;
|
|
103
|
+
/**
|
|
104
|
+
* Genera estilos de color sólidos desde variables CSS
|
|
105
|
+
*/
|
|
106
|
+
export declare function getSolidStyles(variables?: Partial<CSSVariables>): {
|
|
107
|
+
background: string;
|
|
108
|
+
foreground: string;
|
|
109
|
+
card: string;
|
|
110
|
+
cardForeground: string;
|
|
111
|
+
primary: string;
|
|
112
|
+
primaryForeground: string;
|
|
113
|
+
muted: string;
|
|
114
|
+
mutedForeground: string;
|
|
115
|
+
border: string;
|
|
116
|
+
destructive: string;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Retorna el tema completo con fallbacks aplicados
|
|
120
|
+
*/
|
|
121
|
+
export declare function getMergedTheme(theme?: ChatTheme): ChatTheme;
|
|
122
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/theme.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IAGd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAqBnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAqBhC,CAAA;AAED;;;;;;;;GAQG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAClC,IAAI,CACF,SAAS,EACP,SAAS,GACT,SAAS,GACT,eAAe,GACf,sBAAsB,GACtB,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,eAAe,CAClB,CASF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,SAkBzB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,SAoB1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAsB5B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,SAiB1B,CAAA;AAED;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC9B,WAAW,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC/B,QAAQ,CACT,IAAI,CACF,SAAS,EACP,SAAS,GACT,SAAS,GACT,eAAe,GACf,sBAAsB,GACtB,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,eAAe,CAClB,CACF,CAsBA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;;;;;;;;;;;EAc/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAE/D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ejemplo de uso del Sistema de Temas
|
|
3
|
+
*
|
|
4
|
+
* Este archivo demuestra cómo usar los temas predefinidos,
|
|
5
|
+
* crear temas personalizados y aplicarlos al widget.
|
|
6
|
+
*/
|
|
7
|
+
declare const defaultTheme: Required<Omit<import("..").ChatTheme, "defaultLocale" | "avatars" | "emotion" | "starterPrompt" | "launcherBorderRadius" | "borderRadius" | "bubbleStyles" | "promptPersistence" | "avatarScale" | "height" | "bottom">>;
|
|
8
|
+
declare const customSimpleTheme: {
|
|
9
|
+
primaryColor: string;
|
|
10
|
+
botName: string;
|
|
11
|
+
cssVariables: {
|
|
12
|
+
primary: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
declare const customFullTheme: {
|
|
16
|
+
primaryColor: string;
|
|
17
|
+
botName: string;
|
|
18
|
+
logoUrl: string;
|
|
19
|
+
position: "bottom-left";
|
|
20
|
+
welcomeMessage: string;
|
|
21
|
+
inputPlaceholder: string;
|
|
22
|
+
cssVariables: {
|
|
23
|
+
background: string;
|
|
24
|
+
foreground: string;
|
|
25
|
+
card: string;
|
|
26
|
+
cardForeground: string;
|
|
27
|
+
primary: string;
|
|
28
|
+
primaryForeground: string;
|
|
29
|
+
muted: string;
|
|
30
|
+
mutedForeground: string;
|
|
31
|
+
border: string;
|
|
32
|
+
destructive: string;
|
|
33
|
+
radius: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export declare const mergedTheme: Required<Omit<import("..").ChatTheme, "defaultLocale" | "avatars" | "emotion" | "starterPrompt" | "launcherBorderRadius" | "borderRadius" | "bubbleStyles" | "promptPersistence" | "avatarScale" | "height" | "bottom">>;
|
|
37
|
+
export declare const myComponent: {
|
|
38
|
+
backgroundColor: string;
|
|
39
|
+
color: string;
|
|
40
|
+
borderColor: string;
|
|
41
|
+
};
|
|
42
|
+
export declare const containerStyle: {
|
|
43
|
+
backgroundColor: string;
|
|
44
|
+
};
|
|
45
|
+
export declare function MyApp(): boolean;
|
|
46
|
+
export { defaultTheme, customSimpleTheme, customFullTheme, };
|
|
47
|
+
//# sourceMappingURL=theme.examples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.examples.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/theme.examples.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH,QAAA,MAAM,YAAY,0NAAgB,CAAA;AA6BlC,QAAA,MAAM,iBAAiB;;;;;;CAOtB,CAAA;AAGD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAoBpB,CAAA;AAiBD,eAAO,MAAM,WAAW,0NAAoC,CAAA;AAmB5D,eAAO,MAAM,WAAW;;;;CAIvB,CAAA;AAkBD,eAAO,MAAM,cAAc;;CAG1B,CAAA;AAyBD,wBAAgB,KAAK,YAcpB;AAuFD,OAAO,EAEL,YAAY,EAMZ,iBAAiB,EACjB,eAAe,GAEhB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Exportaciones centrales del sistema de temas
|
|
4
|
+
*
|
|
5
|
+
* Importa desde aquí todo lo relacionado con temas:
|
|
6
|
+
* import { DEFAULT_THEME, getSolidStyles, mergeThemeWithDefaults } from './utils/themes'
|
|
7
|
+
*/
|
|
8
|
+
export type { CSSVariables } from '../theme';
|
|
9
|
+
export { DEFAULT_CSS_VARIABLES, DARK_CSS_VARIABLES } from '../theme';
|
|
10
|
+
export { DEFAULT_THEME, } from '../theme';
|
|
11
|
+
export { mergeThemeWithDefaults, getPrimaryColor, cssVariablesToInlineStyles, getSolidStyles, } from '../theme';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/utils/themes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAGpE,OAAO,EACL,aAAa,GAId,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,0BAA0B,EAC1B,cAAc,GACf,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Call Button Component
|
|
4
|
+
*
|
|
5
|
+
* Button to start/end live voice calls.
|
|
6
|
+
*/
|
|
7
|
+
import type { CallButtonProps } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Call button for starting/ending live voice calls
|
|
10
|
+
*/
|
|
11
|
+
export declare function CallButton({ state, isSupported, callDuration, primaryColor, onStartCall, onEndCall, disabled, }: CallButtonProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
//# sourceMappingURL=CallButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallButton.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/voice/components/CallButton.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAW/C;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,YAAgB,EAChB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,QAAgB,GACjB,EAAE,eAAe,kDAqEjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Live Call Overlay Component
|
|
4
|
+
*
|
|
5
|
+
* Full-screen overlay displayed during an active live call.
|
|
6
|
+
*/
|
|
7
|
+
import type { LiveCallOverlayProps } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Full-screen overlay for active live calls
|
|
10
|
+
*/
|
|
11
|
+
export declare function LiveCallOverlay({ isOpen, state, callDuration, transcription, botResponse, onEndCall, }: LiveCallOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
//# sourceMappingURL=LiveCallOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveCallOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/voice/components/LiveCallOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAwBpD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,GACV,EAAE,oBAAoB,kDA+FtB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Button Component
|
|
4
|
+
*
|
|
5
|
+
* Microphone button for initiating voice chat.
|
|
6
|
+
* Supports press-and-hold or tap interactions.
|
|
7
|
+
*/
|
|
8
|
+
import type { VoiceButtonProps } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Voice recording button with visual feedback
|
|
11
|
+
*/
|
|
12
|
+
export declare function VoiceButton({ state, isSupported, primaryColor, onPress, onRelease, onCancel, disabled, }: VoiceButtonProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
//# sourceMappingURL=VoiceButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceButton.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/voice/components/VoiceButton.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAgB,GACjB,EAAE,gBAAgB,kDAiHlB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Chat Overlay Component
|
|
4
|
+
*
|
|
5
|
+
* Full-screen overlay for voice chat interaction with visual feedback.
|
|
6
|
+
*/
|
|
7
|
+
import type { VoiceChatOverlayProps } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Full-screen overlay for voice chat interaction
|
|
10
|
+
*/
|
|
11
|
+
export declare function VoiceChatOverlay({ isOpen, state, partialTranscription, finalTranscription, botResponse, recordingDuration, maxDuration, onClose, onCancel, }: VoiceChatOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
//# sourceMappingURL=VoiceChatOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceChatOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/voice/components/VoiceChatOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAYrD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAK,EACL,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,WAAgB,EAChB,OAAO,EACP,QAAQ,GACT,EAAE,qBAAqB,kDAuJvB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Waveform Visualizer Component
|
|
4
|
+
*
|
|
5
|
+
* Animated audio waveform visualization for voice recording feedback.
|
|
6
|
+
*/
|
|
7
|
+
import type { WaveformVisualizerProps } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Animated waveform bars for audio visualization
|
|
10
|
+
*/
|
|
11
|
+
export declare function WaveformVisualizer({ isActive, className, barCount, color, }: WaveformVisualizerProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=WaveformVisualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaveformVisualizer.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/voice/components/WaveformVisualizer.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAEvD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,QAAY,EACZ,KAAK,GACN,EAAE,uBAAuB,2CAiDzB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Components Barrel Export
|
|
4
|
+
*/
|
|
5
|
+
export { CallButton } from './CallButton';
|
|
6
|
+
export { LiveCallOverlay } from './LiveCallOverlay';
|
|
7
|
+
export { VoiceButton } from './VoiceButton';
|
|
8
|
+
export { VoiceChatOverlay } from './VoiceChatOverlay';
|
|
9
|
+
export { WaveformVisualizer } from './WaveformVisualizer';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/chat-widget/voice/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Module Barrel Export
|
|
4
|
+
*/
|
|
5
|
+
export type { LiveCallState, LiveCallClientMessage, LiveCallServerMessage, LiveCallErrorCode, LiveCallErrorMessage, UseLiveCallOptions, UseLiveCallReturn, CallButtonProps, LiveCallOverlayProps, VoiceState, VoiceServerMessage, UseVoiceChatOptions, UseVoiceChatReturn, VoiceConfig, VoiceButtonProps, VoiceChatOverlayProps, WaveformVisualizerProps, } from './types';
|
|
6
|
+
export { VOICE_AUDIO_CONFIG } from './types';
|
|
7
|
+
export { useLiveCall } from './useLiveCall';
|
|
8
|
+
export { useVoiceChat } from './useVoiceChat';
|
|
9
|
+
export { useVoiceState } from './useVoiceState';
|
|
10
|
+
export { CallButton, LiveCallOverlay, VoiceButton, VoiceChatOverlay, WaveformVisualizer, } from './components';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/voice/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAEV,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EAEpB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Module Types
|
|
4
|
+
*
|
|
5
|
+
* Types for Live Call (real-time voice conversation) and Voice Notes (async).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Live Call state machine states
|
|
9
|
+
*/
|
|
10
|
+
export type LiveCallState = 'idle' | 'calling' | 'ready' | 'listening' | 'thinking' | 'speaking';
|
|
11
|
+
/**
|
|
12
|
+
* Live Call client → server messages
|
|
13
|
+
*/
|
|
14
|
+
export interface LiveCallAuthMessage {
|
|
15
|
+
type: 'auth';
|
|
16
|
+
tenantId: string;
|
|
17
|
+
sessionId: string;
|
|
18
|
+
conversationId?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface LiveCallStartMessage {
|
|
21
|
+
type: 'start_call';
|
|
22
|
+
}
|
|
23
|
+
export interface LiveCallEndMessage {
|
|
24
|
+
type: 'end_call';
|
|
25
|
+
}
|
|
26
|
+
export type LiveCallClientMessage = LiveCallAuthMessage | LiveCallStartMessage | LiveCallEndMessage;
|
|
27
|
+
/**
|
|
28
|
+
* Live Call server → client messages
|
|
29
|
+
*/
|
|
30
|
+
export interface LiveCallStartedMessage {
|
|
31
|
+
type: 'call_started';
|
|
32
|
+
greeting?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface LiveCallListeningMessage {
|
|
35
|
+
type: 'listening';
|
|
36
|
+
}
|
|
37
|
+
export interface LiveCallTranscriptionMessage {
|
|
38
|
+
type: 'transcription';
|
|
39
|
+
text: string;
|
|
40
|
+
}
|
|
41
|
+
export interface LiveCallSpeakingMessage {
|
|
42
|
+
type: 'speaking';
|
|
43
|
+
}
|
|
44
|
+
export interface LiveCallResponseTextMessage {
|
|
45
|
+
type: 'response_text';
|
|
46
|
+
text: string;
|
|
47
|
+
}
|
|
48
|
+
export interface LiveCallDoneMessage {
|
|
49
|
+
type: 'done';
|
|
50
|
+
}
|
|
51
|
+
export interface LiveCallErrorMessage {
|
|
52
|
+
type: 'error';
|
|
53
|
+
code: LiveCallErrorCode;
|
|
54
|
+
message: string;
|
|
55
|
+
}
|
|
56
|
+
export type LiveCallErrorCode = 'voice_disabled' | 'quota_exceeded' | 'connection_error' | 'microphone_denied' | 'browser_unsupported';
|
|
57
|
+
export type LiveCallServerMessage = LiveCallStartedMessage | LiveCallListeningMessage | LiveCallTranscriptionMessage | LiveCallSpeakingMessage | LiveCallResponseTextMessage | LiveCallDoneMessage | LiveCallErrorMessage;
|
|
58
|
+
/**
|
|
59
|
+
* Live Call hook options
|
|
60
|
+
*/
|
|
61
|
+
export interface UseLiveCallOptions {
|
|
62
|
+
apiBaseUrl: string;
|
|
63
|
+
tenantId: string;
|
|
64
|
+
sessionId: string;
|
|
65
|
+
conversationId?: string;
|
|
66
|
+
wsEndpoint?: string;
|
|
67
|
+
onStateChange?: (state: LiveCallState) => void;
|
|
68
|
+
onTranscription?: (text: string) => void;
|
|
69
|
+
onBotResponse?: (text: string) => void;
|
|
70
|
+
onError?: (error: LiveCallErrorMessage) => void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Live Call hook return type
|
|
74
|
+
*/
|
|
75
|
+
export interface UseLiveCallReturn {
|
|
76
|
+
state: LiveCallState;
|
|
77
|
+
isSupported: boolean;
|
|
78
|
+
callDuration: number;
|
|
79
|
+
startCall: () => Promise<void>;
|
|
80
|
+
endCall: () => void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Voice Notes state (simpler, async flow)
|
|
84
|
+
* @deprecated Use LiveCallState for real-time calls
|
|
85
|
+
*/
|
|
86
|
+
export type VoiceState = 'idle' | 'listening' | 'processing' | 'speaking';
|
|
87
|
+
/**
|
|
88
|
+
* Voice Notes server → client messages
|
|
89
|
+
* @deprecated Use LiveCallServerMessage for real-time calls
|
|
90
|
+
*/
|
|
91
|
+
export interface VoiceTranscriptionPartial {
|
|
92
|
+
type: 'transcription_partial';
|
|
93
|
+
text: string;
|
|
94
|
+
}
|
|
95
|
+
export interface VoiceTranscriptionFinal {
|
|
96
|
+
type: 'transcription_final';
|
|
97
|
+
text: string;
|
|
98
|
+
}
|
|
99
|
+
export interface VoiceResponseStart {
|
|
100
|
+
type: 'response_start';
|
|
101
|
+
}
|
|
102
|
+
export interface VoiceResponseText {
|
|
103
|
+
type: 'response_text';
|
|
104
|
+
text: string;
|
|
105
|
+
}
|
|
106
|
+
export interface VoiceResponseEnd {
|
|
107
|
+
type: 'response_end';
|
|
108
|
+
}
|
|
109
|
+
export interface VoiceErrorMessage {
|
|
110
|
+
type: 'error';
|
|
111
|
+
code: string;
|
|
112
|
+
message: string;
|
|
113
|
+
}
|
|
114
|
+
export type VoiceServerMessage = VoiceTranscriptionPartial | VoiceTranscriptionFinal | VoiceResponseStart | VoiceResponseText | VoiceResponseEnd | VoiceErrorMessage;
|
|
115
|
+
/**
|
|
116
|
+
* Voice Notes hook options
|
|
117
|
+
* @deprecated Use UseLiveCallOptions for real-time calls
|
|
118
|
+
*/
|
|
119
|
+
export interface UseVoiceChatOptions {
|
|
120
|
+
apiBaseUrl: string;
|
|
121
|
+
tenantId: string;
|
|
122
|
+
sessionId: string;
|
|
123
|
+
conversationId?: string;
|
|
124
|
+
config?: VoiceConfig;
|
|
125
|
+
onTranscription?: (text: string, isFinal: boolean) => void;
|
|
126
|
+
onBotResponse?: (text: string) => void;
|
|
127
|
+
onBotAudioPlayed?: () => void;
|
|
128
|
+
onStateChange?: (state: VoiceState) => void;
|
|
129
|
+
onError?: (error: VoiceErrorMessage) => void;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Voice Notes hook return type
|
|
133
|
+
* @deprecated Use UseLiveCallReturn for real-time calls
|
|
134
|
+
*/
|
|
135
|
+
export interface UseVoiceChatReturn {
|
|
136
|
+
state: VoiceState;
|
|
137
|
+
isConnected: boolean;
|
|
138
|
+
isSupported: boolean;
|
|
139
|
+
partialTranscription: string;
|
|
140
|
+
recordingDuration: number;
|
|
141
|
+
startRecording: () => Promise<void>;
|
|
142
|
+
stopRecording: () => void;
|
|
143
|
+
cancelRecording: () => void;
|
|
144
|
+
stopPlayback: () => void;
|
|
145
|
+
connect: () => void;
|
|
146
|
+
disconnect: () => void;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Voice configuration from tenant settings
|
|
150
|
+
*/
|
|
151
|
+
export interface VoiceConfig {
|
|
152
|
+
enabled?: boolean;
|
|
153
|
+
language?: string;
|
|
154
|
+
voiceId?: string;
|
|
155
|
+
maxDurationSeconds?: number;
|
|
156
|
+
wsEndpoint?: string;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Audio format configuration
|
|
160
|
+
*/
|
|
161
|
+
export declare const VOICE_AUDIO_CONFIG: {
|
|
162
|
+
readonly input: {
|
|
163
|
+
readonly sampleRate: 16000;
|
|
164
|
+
readonly bitDepth: 16;
|
|
165
|
+
readonly channels: 1;
|
|
166
|
+
readonly chunkSize: 320;
|
|
167
|
+
};
|
|
168
|
+
readonly output: {
|
|
169
|
+
readonly sampleRate: 24000;
|
|
170
|
+
readonly bitDepth: 16;
|
|
171
|
+
readonly channels: 1;
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Call button props (for Live Call)
|
|
176
|
+
*/
|
|
177
|
+
export interface CallButtonProps {
|
|
178
|
+
state: LiveCallState;
|
|
179
|
+
isSupported: boolean;
|
|
180
|
+
callDuration?: number;
|
|
181
|
+
primaryColor?: string;
|
|
182
|
+
onStartCall: () => void;
|
|
183
|
+
onEndCall: () => void;
|
|
184
|
+
disabled?: boolean;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Voice button props (for Voice Notes - legacy)
|
|
188
|
+
*/
|
|
189
|
+
export interface VoiceButtonProps {
|
|
190
|
+
state: VoiceState;
|
|
191
|
+
isSupported: boolean;
|
|
192
|
+
primaryColor?: string;
|
|
193
|
+
onPress: () => void;
|
|
194
|
+
onRelease: () => void;
|
|
195
|
+
onCancel: () => void;
|
|
196
|
+
disabled?: boolean;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Waveform visualizer props
|
|
200
|
+
*/
|
|
201
|
+
export interface WaveformVisualizerProps {
|
|
202
|
+
isActive: boolean;
|
|
203
|
+
className?: string;
|
|
204
|
+
barCount?: number;
|
|
205
|
+
color?: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Live call overlay props
|
|
209
|
+
*/
|
|
210
|
+
export interface LiveCallOverlayProps {
|
|
211
|
+
isOpen: boolean;
|
|
212
|
+
state: LiveCallState;
|
|
213
|
+
callDuration: number;
|
|
214
|
+
transcription?: string;
|
|
215
|
+
botResponse?: string;
|
|
216
|
+
onEndCall: () => void;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Voice chat overlay props (legacy)
|
|
220
|
+
*/
|
|
221
|
+
export interface VoiceChatOverlayProps {
|
|
222
|
+
isOpen: boolean;
|
|
223
|
+
state: VoiceState;
|
|
224
|
+
partialTranscription: string;
|
|
225
|
+
finalTranscription?: string;
|
|
226
|
+
botResponse?: string;
|
|
227
|
+
recordingDuration: number;
|
|
228
|
+
maxDuration?: number;
|
|
229
|
+
onClose: () => void;
|
|
230
|
+
onCancel: () => void;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/voice/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,SAAS,GACT,OAAO,GACP,WAAW,GACX,UAAU,GACV,UAAU,CAAA;AAEd;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAA;AAEnG;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,CAAA;AAEzB,MAAM,MAAM,qBAAqB,GAC7B,sBAAsB,GACtB,wBAAwB,GACxB,4BAA4B,GAC5B,uBAAuB,GACvB,2BAA2B,GAC3B,mBAAmB,GACnB,oBAAoB,CAAA;AAExB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAC9C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAMD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CAAA;AAEzE;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,uBAAuB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,kBAAkB,GAC1B,yBAAyB,GACzB,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAA;AAErB;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1D,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC7C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAYrB,CAAA;AAMV;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,aAAa,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;IACjB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Live Call Hook
|
|
4
|
+
*
|
|
5
|
+
* Real-time voice conversation like a phone call from the browser.
|
|
6
|
+
* Uses WebSocket for bidirectional audio streaming.
|
|
7
|
+
*/
|
|
8
|
+
import type { UseLiveCallOptions, UseLiveCallReturn } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Hook for live call voice conversation
|
|
11
|
+
*/
|
|
12
|
+
export declare function useLiveCall(options: UseLiveCallOptions): UseLiveCallReturn;
|
|
13
|
+
//# sourceMappingURL=useLiveCall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLiveCall.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/voice/useLiveCall.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAGV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,SAAS,CAAA;AA2ChB;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAuV1E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Chat Hook
|
|
4
|
+
*
|
|
5
|
+
* Main hook for managing real-time voice chat functionality via WebSocket.
|
|
6
|
+
* Handles audio capture, streaming, and playback.
|
|
7
|
+
*/
|
|
8
|
+
import type { UseVoiceChatOptions, UseVoiceChatReturn } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Hook for managing real-time voice chat
|
|
11
|
+
*/
|
|
12
|
+
export declare function useVoiceChat(options: UseVoiceChatOptions): UseVoiceChatReturn;
|
|
13
|
+
//# sourceMappingURL=useVoiceChat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVoiceChat.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/voice/useVoiceChat.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAsB,MAAM,SAAS,CAAA;AAwD1F;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAwb7E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice State Machine Hook
|
|
4
|
+
*
|
|
5
|
+
* Manages the voice chat state machine with transitions and recording timer.
|
|
6
|
+
*/
|
|
7
|
+
import type { VoiceState } from './types';
|
|
8
|
+
interface UseVoiceStateOptions {
|
|
9
|
+
/** Maximum recording duration in seconds */
|
|
10
|
+
maxDuration?: number;
|
|
11
|
+
/** Callback when max duration is reached */
|
|
12
|
+
onMaxDurationReached?: () => void;
|
|
13
|
+
/** Callback when state changes */
|
|
14
|
+
onStateChange?: (state: VoiceState) => void;
|
|
15
|
+
}
|
|
16
|
+
interface UseVoiceStateReturn {
|
|
17
|
+
/** Current voice state */
|
|
18
|
+
state: VoiceState;
|
|
19
|
+
/** Recording duration in seconds */
|
|
20
|
+
recordingDuration: number;
|
|
21
|
+
/** Transition to a new state */
|
|
22
|
+
transition: (newState: VoiceState) => void;
|
|
23
|
+
/** Reset to idle state */
|
|
24
|
+
reset: () => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Hook for managing voice chat state machine
|
|
28
|
+
*
|
|
29
|
+
* Valid transitions:
|
|
30
|
+
* - idle → listening
|
|
31
|
+
* - listening → processing
|
|
32
|
+
* - processing → speaking
|
|
33
|
+
* - speaking → idle
|
|
34
|
+
* - any → idle (reset/cancel)
|
|
35
|
+
*/
|
|
36
|
+
export declare function useVoiceState(options?: UseVoiceStateOptions): UseVoiceStateReturn;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=useVoiceState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVoiceState.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/voice/useVoiceState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,UAAU,oBAAoB;IAC5B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CAC5C;AAED,UAAU,mBAAmB;IAC3B,0BAA0B;IAC1B,KAAK,EAAE,UAAU,CAAA;IACjB,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1C,0BAA0B;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAuFrF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|