@botuyo/chat-widget-standalone 1.0.55 → 1.0.56

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 (156) hide show
  1. package/dist/ShadowChatWidget.d.ts +25 -0
  2. package/dist/ShadowChatWidget.d.ts.map +1 -0
  3. package/dist/botuyo-chat.es.js +1 -1
  4. package/dist/botuyo-chat.umd.js +1 -1
  5. package/dist/botuyo-chat.umd.js.map +1 -1
  6. package/dist/{chunk-audio-BVQXZDLV.js → chunk-audio-spHoezuq.js} +2 -2
  7. package/dist/{chunk-audio-BVQXZDLV.js.map → chunk-audio-spHoezuq.js.map} +1 -1
  8. package/dist/{chunk-chat-ui-DDzNzbmQ.js → chunk-chat-ui-CS2bp5m0.js} +14 -14
  9. package/dist/{chunk-chat-ui-DDzNzbmQ.js.map → chunk-chat-ui-CS2bp5m0.js.map} +1 -1
  10. package/dist/{chunk-gallery-DVsqIt59.js → chunk-gallery-ChBULh0Z.js} +2 -2
  11. package/dist/{chunk-gallery-DVsqIt59.js.map → chunk-gallery-ChBULh0Z.js.map} +1 -1
  12. package/dist/src/chat-widget/ChatWidget.d.ts +5 -0
  13. package/dist/src/chat-widget/ChatWidget.d.ts.map +1 -0
  14. package/dist/src/chat-widget/ChatWidgetProvider.d.ts +81 -0
  15. package/dist/src/chat-widget/ChatWidgetProvider.d.ts.map +1 -0
  16. package/dist/src/chat-widget/components/AudioPlayer.d.ts +8 -0
  17. package/dist/src/chat-widget/components/AudioPlayer.d.ts.map +1 -0
  18. package/dist/src/chat-widget/components/AudioPlayer.stories.d.ts +37 -0
  19. package/dist/src/chat-widget/components/AudioPlayer.stories.d.ts.map +1 -0
  20. package/dist/src/chat-widget/components/Avatar3D.d.ts +23 -0
  21. package/dist/src/chat-widget/components/Avatar3D.d.ts.map +1 -0
  22. package/dist/src/chat-widget/components/ChatWindow.d.ts +35 -0
  23. package/dist/src/chat-widget/components/ChatWindow.d.ts.map +1 -0
  24. package/dist/src/chat-widget/components/ChatWindow.stories.d.ts +71 -0
  25. package/dist/src/chat-widget/components/ChatWindow.stories.d.ts.map +1 -0
  26. package/dist/src/chat-widget/components/ErrorBoundary.d.ts +36 -0
  27. package/dist/src/chat-widget/components/ErrorBoundary.d.ts.map +1 -0
  28. package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts +29 -0
  29. package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts.map +1 -0
  30. package/dist/src/chat-widget/components/Gallery.d.ts +14 -0
  31. package/dist/src/chat-widget/components/Gallery.d.ts.map +1 -0
  32. package/dist/src/chat-widget/components/Gallery.stories.d.ts +33 -0
  33. package/dist/src/chat-widget/components/Gallery.stories.d.ts.map +1 -0
  34. package/dist/src/chat-widget/components/Icons.d.ts +10 -0
  35. package/dist/src/chat-widget/components/Icons.d.ts.map +1 -0
  36. package/dist/src/chat-widget/components/InputArea.d.ts +21 -0
  37. package/dist/src/chat-widget/components/InputArea.d.ts.map +1 -0
  38. package/dist/src/chat-widget/components/InputArea.stories.d.ts +62 -0
  39. package/dist/src/chat-widget/components/InputArea.stories.d.ts.map +1 -0
  40. package/dist/src/chat-widget/components/LanguageSelector.d.ts +25 -0
  41. package/dist/src/chat-widget/components/LanguageSelector.d.ts.map +1 -0
  42. package/dist/src/chat-widget/components/Launcher.d.ts +22 -0
  43. package/dist/src/chat-widget/components/Launcher.d.ts.map +1 -0
  44. package/dist/src/chat-widget/components/Launcher.stories.d.ts +75 -0
  45. package/dist/src/chat-widget/components/Launcher.stories.d.ts.map +1 -0
  46. package/dist/src/chat-widget/components/LiveCallInputArea.d.ts +29 -0
  47. package/dist/src/chat-widget/components/LiveCallInputArea.d.ts.map +1 -0
  48. package/dist/src/chat-widget/components/MessageBubble.d.ts +15 -0
  49. package/dist/src/chat-widget/components/MessageBubble.d.ts.map +1 -0
  50. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts +71 -0
  51. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts.map +1 -0
  52. package/dist/src/chat-widget/components/MessageList.d.ts +15 -0
  53. package/dist/src/chat-widget/components/MessageList.d.ts.map +1 -0
  54. package/dist/src/chat-widget/components/MessageList.stories.d.ts +52 -0
  55. package/dist/src/chat-widget/components/MessageList.stories.d.ts.map +1 -0
  56. package/dist/src/chat-widget/components/TypingIndicator.d.ts +2 -0
  57. package/dist/src/chat-widget/components/TypingIndicator.d.ts.map +1 -0
  58. package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts +39 -0
  59. package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts.map +1 -0
  60. package/dist/src/chat-widget/components/VoiceCallOverlay.d.ts +66 -0
  61. package/dist/src/chat-widget/components/VoiceCallOverlay.d.ts.map +1 -0
  62. package/dist/src/chat-widget/components/VoiceInputArea.d.ts +26 -0
  63. package/dist/src/chat-widget/components/VoiceInputArea.d.ts.map +1 -0
  64. package/dist/src/chat-widget/components/index.d.ts +16 -0
  65. package/dist/src/chat-widget/components/index.d.ts.map +1 -0
  66. package/dist/src/chat-widget/contexts/AnimationContext.d.ts +69 -0
  67. package/dist/src/chat-widget/contexts/AnimationContext.d.ts.map +1 -0
  68. package/dist/src/chat-widget/hooks/useAnalytics.d.ts +19 -0
  69. package/dist/src/chat-widget/hooks/useAnalytics.d.ts.map +1 -0
  70. package/dist/src/chat-widget/hooks/useChatSocket.d.ts +35 -0
  71. package/dist/src/chat-widget/hooks/useChatSocket.d.ts.map +1 -0
  72. package/dist/src/chat-widget/hooks/useChatState.d.ts +23 -0
  73. package/dist/src/chat-widget/hooks/useChatState.d.ts.map +1 -0
  74. package/dist/src/chat-widget/hooks/useChatWidget.d.ts +50 -0
  75. package/dist/src/chat-widget/hooks/useChatWidget.d.ts.map +1 -0
  76. package/dist/src/chat-widget/hooks/useDarkMode.d.ts +6 -0
  77. package/dist/src/chat-widget/hooks/useDarkMode.d.ts.map +1 -0
  78. package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts +10 -0
  79. package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts.map +1 -0
  80. package/dist/src/chat-widget/hooks/useFocusTrap.d.ts +34 -0
  81. package/dist/src/chat-widget/hooks/useFocusTrap.d.ts.map +1 -0
  82. package/dist/src/chat-widget/hooks/useHighContrast.d.ts +6 -0
  83. package/dist/src/chat-widget/hooks/useHighContrast.d.ts.map +1 -0
  84. package/dist/src/chat-widget/hooks/useIsMobile.d.ts +2 -0
  85. package/dist/src/chat-widget/hooks/useIsMobile.d.ts.map +1 -0
  86. package/dist/src/chat-widget/hooks/useNotifications.d.ts +23 -0
  87. package/dist/src/chat-widget/hooks/useNotifications.d.ts.map +1 -0
  88. package/dist/src/chat-widget/hooks/useRateLimit.d.ts +15 -0
  89. package/dist/src/chat-widget/hooks/useRateLimit.d.ts.map +1 -0
  90. package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts +10 -0
  91. package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts.map +1 -0
  92. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts +12 -0
  93. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts.map +1 -0
  94. package/dist/src/chat-widget/i18n/LanguageContext.d.ts +33 -0
  95. package/dist/src/chat-widget/i18n/LanguageContext.d.ts.map +1 -0
  96. package/dist/src/chat-widget/i18n/index.d.ts +8 -0
  97. package/dist/src/chat-widget/i18n/index.d.ts.map +1 -0
  98. package/dist/src/chat-widget/i18n/translations.d.ts +189 -0
  99. package/dist/src/chat-widget/i18n/translations.d.ts.map +1 -0
  100. package/dist/src/chat-widget/i18n/useTranslations.d.ts +27 -0
  101. package/dist/src/chat-widget/i18n/useTranslations.d.ts.map +1 -0
  102. package/dist/src/chat-widget/index.d.ts +11 -0
  103. package/dist/src/chat-widget/index.d.ts.map +1 -0
  104. package/dist/src/chat-widget/types/index.d.ts +328 -0
  105. package/dist/src/chat-widget/types/index.d.ts.map +1 -0
  106. package/dist/src/chat-widget/types/socket.d.ts +107 -0
  107. package/dist/src/chat-widget/types/socket.d.ts.map +1 -0
  108. package/dist/src/chat-widget/utils/dateUtils.d.ts +33 -0
  109. package/dist/src/chat-widget/utils/dateUtils.d.ts.map +1 -0
  110. package/dist/src/chat-widget/utils/defaultAssets.d.ts +20 -0
  111. package/dist/src/chat-widget/utils/defaultAssets.d.ts.map +1 -0
  112. package/dist/src/chat-widget/utils/deviceId.d.ts +18 -0
  113. package/dist/src/chat-widget/utils/deviceId.d.ts.map +1 -0
  114. package/dist/src/chat-widget/utils/fileValidation.d.ts +75 -0
  115. package/dist/src/chat-widget/utils/fileValidation.d.ts.map +1 -0
  116. package/dist/src/chat-widget/utils/logger.d.ts +31 -0
  117. package/dist/src/chat-widget/utils/logger.d.ts.map +1 -0
  118. package/dist/src/chat-widget/utils/performance.d.ts +50 -0
  119. package/dist/src/chat-widget/utils/performance.d.ts.map +1 -0
  120. package/dist/src/chat-widget/utils/storage.d.ts +25 -0
  121. package/dist/src/chat-widget/utils/storage.d.ts.map +1 -0
  122. package/dist/src/chat-widget/utils/theme.d.ts +122 -0
  123. package/dist/src/chat-widget/utils/theme.d.ts.map +1 -0
  124. package/dist/src/chat-widget/utils/theme.examples.d.ts +47 -0
  125. package/dist/src/chat-widget/utils/theme.examples.d.ts.map +1 -0
  126. package/dist/src/chat-widget/utils/themes/index.d.ts +12 -0
  127. package/dist/src/chat-widget/utils/themes/index.d.ts.map +1 -0
  128. package/dist/src/chat-widget/voice/components/CallButton.d.ts +12 -0
  129. package/dist/src/chat-widget/voice/components/CallButton.d.ts.map +1 -0
  130. package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts +12 -0
  131. package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts.map +1 -0
  132. package/dist/src/chat-widget/voice/components/VoiceButton.d.ts +13 -0
  133. package/dist/src/chat-widget/voice/components/VoiceButton.d.ts.map +1 -0
  134. package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts +12 -0
  135. package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts.map +1 -0
  136. package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts +12 -0
  137. package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts.map +1 -0
  138. package/dist/src/chat-widget/voice/components/index.d.ts +10 -0
  139. package/dist/src/chat-widget/voice/components/index.d.ts.map +1 -0
  140. package/dist/src/chat-widget/voice/index.d.ts +11 -0
  141. package/dist/src/chat-widget/voice/index.d.ts.map +1 -0
  142. package/dist/src/chat-widget/voice/types.d.ts +232 -0
  143. package/dist/src/chat-widget/voice/types.d.ts.map +1 -0
  144. package/dist/src/chat-widget/voice/useLiveCall.d.ts +13 -0
  145. package/dist/src/chat-widget/voice/useLiveCall.d.ts.map +1 -0
  146. package/dist/src/chat-widget/voice/useVoiceChat.d.ts +13 -0
  147. package/dist/src/chat-widget/voice/useVoiceChat.d.ts.map +1 -0
  148. package/dist/src/chat-widget/voice/useVoiceState.d.ts +38 -0
  149. package/dist/src/chat-widget/voice/useVoiceState.d.ts.map +1 -0
  150. package/dist/src/lib/utils.d.ts +3 -0
  151. package/dist/src/lib/utils.d.ts.map +1 -0
  152. package/dist/standalone.d.ts +113 -0
  153. package/dist/standalone.d.ts.map +1 -0
  154. package/dist/stats-umd.html +1 -1
  155. package/dist/stats.html +1 -1
  156. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Hook de internacionalización para el Chat Widget
3
+ * Sistema multi-idioma con detección automática y contexto global
4
+ */
5
+ import { type SupportedLocale } from './translations';
6
+ /**
7
+ * Hook para acceder a las traducciones con soporte multi-idioma
8
+ * Usa el contexto global de idioma automáticamente
9
+ *
10
+ * @example
11
+ * const { t, setLocale, currentLocale } = useTranslations()
12
+ * t('online') // 'En línea' (si locale es 'es')
13
+ * t('extracted.cerrar') // 'Cerrar'
14
+ * setLocale('en') // Cambiar a inglés
15
+ */
16
+ export declare function useTranslations(namespace?: string): {
17
+ t: (key: string) => string;
18
+ setLocale: (locale: SupportedLocale) => void;
19
+ currentLocale: "es" | "en" | "pt" | "fr";
20
+ };
21
+ /**
22
+ * Función para obtener traducción directamente sin hook
23
+ * Útil para uso fuera de componentes
24
+ */
25
+ export declare function t(key: string, locale?: SupportedLocale): string;
26
+ export default useTranslations;
27
+ //# sourceMappingURL=useTranslations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTranslations.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/i18n/useTranslations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAQnE;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM;aAIxC,MAAM,KAAG,MAAM;;;EAcxB;AAED;;;GAGG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,eAAsB,GAAG,MAAM,CAErE;AAED,eAAe,eAAe,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Entry Point - Exporta el componente principal, Provider y tipos
4
+ */
5
+ export { ChatWidget } from './ChatWidget';
6
+ export { ChatWidgetProvider, useChatWidget } from './ChatWidgetProvider';
7
+ export type { ChatWidgetContextValue } from './ChatWidgetProvider';
8
+ export type { ChatWidgetProps, ChatTheme, UserContext, ChatMessage, TextMessage, ImageMessage, AudioMessage, LocationMessage, PageContext, BubbleStyles, AuthenticatedUser, } from './types';
9
+ export type { ChatWidgetProviderProps } from './ChatWidgetProvider';
10
+ export { ChatWidgetProvider as default } from './ChatWidgetProvider';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chat-widget/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAGlE,YAAY,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAGnE,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,328 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Tipos principales del Chat Widget
4
+ */
5
+ import { BotEmotion, EmotionAvatarMap, PromptStrategy } from '../components/Launcher';
6
+ /**
7
+ * Configuración de funcionalidades multimedia
8
+ */
9
+ export interface MediaConfig {
10
+ /** Habilitar envío de imágenes (default: true) */
11
+ enableImages?: boolean;
12
+ /** Habilitar grabación y envío de audio (default: true) */
13
+ enableAudio?: boolean;
14
+ /** Habilitar voice chat en tiempo real - Enterprise (default: false) */
15
+ enableVoice?: boolean;
16
+ /** Habilitar envío de archivos (default: true) */
17
+ enableFiles?: boolean;
18
+ /** Habilitar compartir ubicación (default: true) */
19
+ enableLocation?: boolean;
20
+ /** Tipos de archivos permitidos (default: todos) */
21
+ allowedFileTypes?: string[];
22
+ /** Tamaño máximo de archivo en MB (default: 10) */
23
+ maxFileSizeMB?: number;
24
+ }
25
+ /**
26
+ * Animation configuration - all toggleable
27
+ * Control every aspect of widget animations
28
+ */
29
+ export interface AnimationConfig {
30
+ /** Enable all animations (master toggle, default: true) */
31
+ enabled?: boolean;
32
+ /** Message entry animation style */
33
+ messageEntry?: 'slide' | 'fade' | 'scale' | 'spring' | 'none';
34
+ /** Typing indicator animation style */
35
+ typingIndicator?: 'dots' | 'wave' | 'pulse' | 'none';
36
+ /** Enable button micro-interactions (hover, press effects) */
37
+ buttonEffects?: boolean;
38
+ /** Enable smooth scroll in message list */
39
+ smoothScroll?: boolean;
40
+ /** Animation duration multiplier (0.5 = faster, 2 = slower, default: 1) */
41
+ speedMultiplier?: number;
42
+ /** Stagger delay between sequential message animations in ms (default: 50) */
43
+ staggerDelay?: number;
44
+ /** Enable chat window entry/exit animations */
45
+ windowTransitions?: boolean;
46
+ /** Enable launcher pulse animation */
47
+ launcherPulse?: boolean;
48
+ }
49
+ /**
50
+ * Visual effects configuration
51
+ * Premium visual enhancements - all toggleable
52
+ */
53
+ export interface EffectsConfig {
54
+ /** Enable glassmorphism blur effect on headers (default: true) */
55
+ glassmorphism?: boolean;
56
+ /** Enable gradient backgrounds (default: true) */
57
+ gradients?: boolean;
58
+ /** Enable soft shadow effects (default: true) */
59
+ softShadows?: boolean;
60
+ /** Enable glow effects on hover/focus (default: true) */
61
+ glowEffects?: boolean;
62
+ /** Enable particle/confetti effects on actions (default: false) */
63
+ particles?: boolean;
64
+ /** Enable UI sound effects (default: false) */
65
+ soundEffects?: boolean;
66
+ /** Enable haptic feedback on mobile (default: true) */
67
+ hapticFeedback?: boolean;
68
+ /** Enable shimmer loading effect (default: true) */
69
+ shimmerLoading?: boolean;
70
+ /** Enable hover lift effect on cards (default: true) */
71
+ hoverLift?: boolean;
72
+ }
73
+ /**
74
+ * Voice chat configuration (Enterprise tier)
75
+ * Received from /api/widget/config endpoint
76
+ */
77
+ export interface VoiceConfig {
78
+ /** If false, voice feature is disabled for this tenant */
79
+ enabled: boolean;
80
+ /** Preferred language for STT/TTS (e.g., 'es-AR', 'en-US') */
81
+ language?: string;
82
+ /** Voice ID for TTS (default or custom cloned voice) */
83
+ voiceId?: string;
84
+ /** Maximum recording duration in seconds (default: 60) */
85
+ maxDurationSeconds?: number;
86
+ /** WebSocket endpoint override (optional) */
87
+ wsEndpoint?: string;
88
+ }
89
+ /**
90
+ * Contexto de página que se envía con cada mensaje
91
+ * El padre puede pasar información sobre qué está viendo el usuario
92
+ * IMPORTANTE: Esto NO debe causar reconexiones del socket
93
+ */
94
+ export interface PageContext {
95
+ page?: string;
96
+ id?: string | number;
97
+ url?: string;
98
+ title?: string;
99
+ [key: string]: any;
100
+ }
101
+ export interface ChatWidgetProps {
102
+ /** Public API Key del tenant/cliente */
103
+ apiKey: string;
104
+ /** URL base del backend (Gateway). Defaults to 'https://api.botuyo.com' */
105
+ apiBaseUrl?: string;
106
+ /** Optional agent flow ID — connects to a specific agent for this tenant */
107
+ agentId?: string;
108
+ /**
109
+ * Contexto de la página actual que se inyecta en cada mensaje
110
+ * ⚠️ IMPORTANTE: Usa useRef internamente para evitar reconexiones del socket
111
+ * Ejemplo: { page: 'Room', id: 123, price: 100 }
112
+ */
113
+ pageContext?: PageContext;
114
+ /**
115
+ * Incluir metadata SEO automáticamente en el contexto
116
+ * Si es true, captura: title, description, keywords, og:*, twitter:*, structured data
117
+ * Default: false
118
+ */
119
+ includeSEOMetadata?: boolean;
120
+ theme?: ChatTheme;
121
+ /** Configuración de funcionalidades multimedia (imágenes, audio, archivos, ubicación) */
122
+ mediaConfig?: MediaConfig;
123
+ /** Context del usuario si ya está autenticado en la app host */
124
+ userContext?: UserContext;
125
+ /** Se ejecuta cuando el bot completa un login/autenticación */
126
+ onLogin?: (userData: AuthenticatedUser) => void;
127
+ /** El bot solicita navegación a una ruta específica */
128
+ onNavigate?: (url: string) => void;
129
+ /** Eventos genéricos del widget */
130
+ onEvent?: (eventName: string, data: any) => void;
131
+ /** Callback cuando el widget cambia de estado (abierto/cerrado) */
132
+ onStateChange?: (isOpen: boolean) => void;
133
+ }
134
+ export interface BubbleStyles {
135
+ radius?: {
136
+ bubble?: string;
137
+ image?: string;
138
+ button?: string;
139
+ card?: string;
140
+ };
141
+ bot?: {
142
+ bg?: string;
143
+ text?: string;
144
+ border?: string;
145
+ };
146
+ user?: {
147
+ text?: string;
148
+ };
149
+ mapCard?: {
150
+ iconBg?: string;
151
+ iconColor?: string;
152
+ };
153
+ launcher?: {
154
+ bg?: string;
155
+ pulse?: boolean;
156
+ };
157
+ }
158
+ export interface ChatTheme {
159
+ /** Color primario (botón, burbujas del usuario) */
160
+ primaryColor?: string;
161
+ /** Nombre del bot que aparece en el header */
162
+ botName?: string;
163
+ /** URL del avatar/logo del bot */
164
+ logoUrl?: string;
165
+ avatars?: EmotionAvatarMap;
166
+ /** URL to a .vrm/.glb 3D model for voice call avatar */
167
+ avatar3dUrl?: string;
168
+ /** Posición del launcher */
169
+ position?: 'bottom-right' | 'bottom-left';
170
+ /** Mensaje de bienvenida personalizado */
171
+ welcomeMessage?: string;
172
+ /** Placeholder del input */
173
+ inputPlaceholder?: string;
174
+ /** Border radius del chat window (CSS value, ej: '24px', '1.5rem') */
175
+ borderRadius?: string;
176
+ /** Border radius del launcher button (CSS value, ej: '50%', '24px') */
177
+ launcherBorderRadius?: string;
178
+ /** Altura del chat window en desktop (CSS value, ej: '600px', '80vh') */
179
+ height?: string;
180
+ /** Distancia desde el bottom en desktop (CSS value, ej: '24px', '1.5rem') */
181
+ bottom?: string;
182
+ starterPrompt?: string;
183
+ bubbleStyles?: BubbleStyles;
184
+ promptPersistence?: PromptStrategy;
185
+ avatarScale?: number;
186
+ /** Muestra un mini avatar en el prompt bubble (default: false) */
187
+ showPromptAvatar?: boolean;
188
+ /** Idioma por defecto del widget */
189
+ defaultLocale?: 'es' | 'en' | 'pt' | 'fr';
190
+ /** Oculta el widget completamente (usado para agentes en modo borrador) */
191
+ isHidden?: boolean;
192
+ /** Variables CSS personalizadas para design system */
193
+ cssVariables?: {
194
+ /** Color de fondo principal (formato HSL sin hsl(), ej: "0 0% 100%") */
195
+ background?: string;
196
+ /** Color de texto principal (formato HSL sin hsl(), ej: "240 10% 3.9%") */
197
+ foreground?: string;
198
+ /** Color de fondo de tarjetas (formato HSL sin hsl(), ej: "0 0% 100%") */
199
+ card?: string;
200
+ /** Color de texto en tarjetas (formato HSL sin hsl(), ej: "240 10% 3.9%") */
201
+ cardForeground?: string;
202
+ /** Color primario (formato HSL sin hsl(), ej: "160 84% 39%") */
203
+ primary?: string;
204
+ /** Color de texto sobre fondo primario (formato HSL sin hsl(), ej: "0 0% 100%") */
205
+ primaryForeground?: string;
206
+ /** Color de fondo silenciado (formato HSL sin hsl(), ej: "240 4.8% 95.9%") */
207
+ muted?: string;
208
+ /** Color de texto silenciado (formato HSL sin hsl(), ej: "240 3.8% 46.1%") */
209
+ mutedForeground?: string;
210
+ /** Color de bordes (formato HSL sin hsl(), ej: "240 5.9% 90%") */
211
+ border?: string;
212
+ /** Color destructivo/error (formato HSL sin hsl(), ej: "0 84.2% 60.2%") */
213
+ destructive?: string;
214
+ /** Border radius base (ej: "0.5rem") */
215
+ radius?: string;
216
+ /** Spacing 1 - Extra small (ej: "0.25rem") */
217
+ spacing1?: string;
218
+ /** Spacing 2 - Small (ej: "0.5rem") */
219
+ spacing2?: string;
220
+ /** Spacing 3 - Medium small (ej: "0.75rem") */
221
+ spacing3?: string;
222
+ /** Spacing 4 - Medium (ej: "1rem") */
223
+ spacing4?: string;
224
+ /** Spacing 5 - Default padding (ej: "0.75rem") */
225
+ spacing5?: string;
226
+ /** Spacing 6 - Large (ej: "1.5rem") */
227
+ spacing6?: string;
228
+ /** Spacing 8 - Extra large (ej: "2rem") */
229
+ spacing8?: string;
230
+ };
231
+ /** Animation configuration - control all widget animations */
232
+ animations?: AnimationConfig;
233
+ /** Visual effects configuration - premium visual enhancements */
234
+ effects?: EffectsConfig;
235
+ }
236
+ export interface UserContext {
237
+ /** JWT token para autenticar al usuario real */
238
+ token?: string;
239
+ /** Metadata adicional del usuario */
240
+ metadata?: Record<string, any>;
241
+ }
242
+ export interface AuthenticatedUser {
243
+ user: {
244
+ id: string;
245
+ email?: string;
246
+ name?: string;
247
+ token?: string;
248
+ [key: string]: any;
249
+ };
250
+ token: string;
251
+ }
252
+ export type MessageType = 'text' | 'image' | 'location' | 'system' | 'audio' | 'location' | 'file';
253
+ export type MessageSender = 'user' | 'bot' | 'system';
254
+ export interface BaseMessage {
255
+ id: string;
256
+ type: MessageType;
257
+ sender: MessageSender;
258
+ timestamp: Date;
259
+ }
260
+ export interface TextMessage extends BaseMessage {
261
+ type: 'text';
262
+ content: string;
263
+ emotion?: BotEmotion;
264
+ }
265
+ export interface ImageMessage extends BaseMessage {
266
+ type: 'image';
267
+ imageUrl: string;
268
+ altText?: string;
269
+ }
270
+ export interface LocationMessage extends BaseMessage {
271
+ type: 'location';
272
+ latitude: number;
273
+ longitude: number;
274
+ name?: string;
275
+ }
276
+ export interface SystemMessage extends BaseMessage {
277
+ type: 'system';
278
+ sender: 'system';
279
+ content: string;
280
+ }
281
+ export interface AudioMessage extends BaseMessage {
282
+ type: 'audio';
283
+ content: string;
284
+ }
285
+ export interface FileMessage extends BaseMessage {
286
+ type: 'file';
287
+ fileUrl: string;
288
+ fileName: string;
289
+ fileSize?: number;
290
+ mimeType?: string;
291
+ }
292
+ export type ChatMessage = TextMessage | ImageMessage | LocationMessage | SystemMessage | AudioMessage | FileMessage;
293
+ export interface ChatState {
294
+ isOpen: boolean;
295
+ isConnected: boolean;
296
+ isTyping: boolean;
297
+ messages: ChatMessage[];
298
+ error: string | null;
299
+ sessionId: string | null;
300
+ }
301
+ export type ChatAction = {
302
+ type: 'TOGGLE_WINDOW';
303
+ } | {
304
+ type: 'OPEN_WINDOW';
305
+ } | {
306
+ type: 'CLOSE_WINDOW';
307
+ } | {
308
+ type: 'SET_CONNECTED';
309
+ payload: boolean;
310
+ } | {
311
+ type: 'SET_TYPING';
312
+ payload: boolean;
313
+ } | {
314
+ type: 'ADD_MESSAGE';
315
+ payload: ChatMessage;
316
+ } | {
317
+ type: 'SET_MESSAGES';
318
+ payload: ChatMessage[];
319
+ } | {
320
+ type: 'SET_ERROR';
321
+ payload: string | null;
322
+ } | {
323
+ type: 'SET_SESSION_ID';
324
+ payload: string;
325
+ } | {
326
+ type: 'CLEAR_CHAT';
327
+ };
328
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Tipos de eventos Socket.IO del protocolo Backend
4
+ */
5
+ import { BotEmotion } from '../components/Launcher';
6
+ export interface ClientToServerEvents {
7
+ /** Enviar mensaje del usuario con confirmación opcional */
8
+ user_message: (data: UserMessagePayload, callback?: (ack: {
9
+ success: boolean;
10
+ }) => void) => void;
11
+ /** Solicitar historial de chat */
12
+ request_history: () => void;
13
+ /** Notificar que el usuario está escribiendo */
14
+ typing: (isTyping: boolean) => void;
15
+ /** Desconexión manual */
16
+ disconnect_session: () => void;
17
+ }
18
+ export interface UserMessagePayload {
19
+ content: string;
20
+ type: 'text' | 'image' | 'audio' | 'file' | 'location';
21
+ metadata?: Record<string, any>;
22
+ }
23
+ export interface ServerToClientEvents {
24
+ /** Mensaje del bot */
25
+ bot_message: (data: BotMessagePayload) => void;
26
+ /** Confirmación de conexión con configuración del backend */
27
+ connection_ack: (data: ConnectionAckPayload) => void;
28
+ /** Bot está escribiendo */
29
+ bot_typing: (isTyping: boolean) => void;
30
+ /** Autenticación exitosa */
31
+ auth_success: (data: AuthSuccessPayload) => void;
32
+ /** Error del servidor */
33
+ error: (data: ErrorPayload) => void;
34
+ /** Historial de mensajes */
35
+ chat_history: (data: ChatHistoryPayload) => void;
36
+ /** Evento de navegación (bot solicita cambio de ruta) */
37
+ navigate: (url: string) => void;
38
+ /** Evento genérico custom */
39
+ custom_event: (data: CustomEventPayload) => void;
40
+ }
41
+ export interface BotMessagePayload {
42
+ id: string;
43
+ type: 'text' | 'image' | 'audio' | 'location' | 'system';
44
+ content?: string;
45
+ imageUrl?: string;
46
+ audioUrl?: string;
47
+ latitude?: number;
48
+ longitude?: number;
49
+ timestamp: string;
50
+ metadata?: Record<string, any>;
51
+ emotion?: BotEmotion;
52
+ }
53
+ export interface ConnectionAckPayload {
54
+ sessionId: string;
55
+ deviceId: string;
56
+ /** Configuración que el backend puede sobrescribir */
57
+ config?: {
58
+ botName?: string;
59
+ logoUrl?: string;
60
+ primaryColor?: string;
61
+ welcomeMessage?: string;
62
+ avatar3dUrl?: string;
63
+ avatarAnimations?: Record<string, string>;
64
+ voiceEnabled?: boolean;
65
+ isHidden?: boolean;
66
+ };
67
+ /** Si el usuario ya tenía sesión previa */
68
+ hasHistory?: boolean;
69
+ }
70
+ export interface AuthSuccessPayload {
71
+ token: string;
72
+ user: {
73
+ id: string;
74
+ email?: string;
75
+ name?: string;
76
+ token?: string;
77
+ [key: string]: any;
78
+ };
79
+ message?: string;
80
+ theme?: import('./index').ChatTheme;
81
+ }
82
+ export interface ErrorPayload {
83
+ code: string;
84
+ message: string;
85
+ details?: any;
86
+ }
87
+ export interface ChatHistoryPayload {
88
+ messages: BotMessagePayload[];
89
+ hasMore: boolean;
90
+ }
91
+ export interface CustomEventPayload {
92
+ eventName: string;
93
+ data: any;
94
+ }
95
+ export interface SocketAuthPayload {
96
+ /** API Key del tenant */
97
+ apiKey: string;
98
+ /** Device ID del guest (persistido en localStorage) */
99
+ deviceId: string;
100
+ /** Optional agent flow ID to connect to a specific agent */
101
+ agentId?: string;
102
+ /** Token JWT opcional si el usuario ya está autenticado */
103
+ token?: string;
104
+ /** Metadata adicional */
105
+ metadata?: Record<string, any>;
106
+ }
107
+ //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/types/socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Utilidades de formateo de fechas usando Intl nativo
3
+ * Reemplaza date-fns para reducir el bundle
4
+ */
5
+ /**
6
+ * Formatea una fecha en formato corto (día de mes, HH:mm)
7
+ */
8
+ export declare function formatShort(date: Date): string;
9
+ /**
10
+ * Verifica si una fecha es hoy
11
+ */
12
+ export declare function isToday(date: Date): boolean;
13
+ /**
14
+ * Verifica si una fecha fue ayer
15
+ */
16
+ export declare function isYesterday(date: Date): boolean;
17
+ /**
18
+ * Calcula la diferencia en minutos entre dos fechas
19
+ */
20
+ export declare function differenceInMinutes(laterDate: Date, earlierDate: Date): number;
21
+ /**
22
+ * Formatea la hora en formato HH:mm
23
+ */
24
+ export declare function formatTime(date: Date): string;
25
+ /**
26
+ * Formatea fecha completa con día, mes y hora
27
+ */
28
+ export declare function formatFull(date: Date): string;
29
+ /**
30
+ * Formatea fecha relativa (Hoy, Ayer, o fecha)
31
+ */
32
+ export declare function formatRelative(date: Date): string;
33
+ //# sourceMappingURL=dateUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/dateUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO9C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAO3C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAQ/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,CAG9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQ7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQjD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Default assets bundled inline to avoid external dependencies
4
+ *
5
+ * These are fallback values when the client doesn't provide custom assets.
6
+ * All assets are embedded as data URLs or inline content to work regardless
7
+ * of the hosting environment.
8
+ */
9
+ /**
10
+ * Default bot avatar as an inline SVG data URL
11
+ * Simple friendly bot icon in a circular format
12
+ */
13
+ export declare const DEFAULT_AVATAR_URL: string;
14
+ /**
15
+ * Notification sound as base64-encoded WAV
16
+ * Simple short "ding" sound (minimal file size)
17
+ * Generated programmatically - a brief 440Hz tone
18
+ */
19
+ export declare const DEFAULT_NOTIFICATION_SOUND_URL: string;
20
+ //# sourceMappingURL=defaultAssets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultAssets.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/defaultAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAe3B,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,QAAmC,CAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Utilidad para gestionar el Device ID persistente
4
+ */
5
+ /**
6
+ * Obtiene el Device ID existente o genera uno nuevo
7
+ * Crítico: Esto permite mantener la sesión de chat tras refrescar la página
8
+ */
9
+ export declare function getOrCreateDeviceId(): string;
10
+ /**
11
+ * Limpia el Device ID (útil para testing o logout completo)
12
+ */
13
+ export declare function clearDeviceId(): void;
14
+ /**
15
+ * Obtiene el Device ID sin crearlo (retorna null si no existe)
16
+ */
17
+ export declare function getDeviceId(): string | null;
18
+ //# sourceMappingURL=deviceId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceId.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/deviceId.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAmB5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAM3C"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * File validation utilities with magic bytes verification
4
+ *
5
+ * Validates file types by checking magic bytes (file signatures)
6
+ * to prevent MIME type spoofing and detect corrupted files.
7
+ */
8
+ /**
9
+ * Validates a file by checking its magic bytes against expected signature
10
+ *
11
+ * @param file - File to validate
12
+ * @returns Promise<boolean> - true if file matches expected type, false otherwise
13
+ *
14
+ * @example
15
+ * const isValid = await validateFileType(file)
16
+ * if (!isValid) {
17
+ * alert('El archivo está corrupto o no es del tipo indicado')
18
+ * }
19
+ */
20
+ export declare function validateFileType(file: File): Promise<boolean>;
21
+ /**
22
+ * Validates file size against maximum allowed
23
+ *
24
+ * @param file - File to validate
25
+ * @param maxSizeMB - Maximum size in megabytes (default: 10MB)
26
+ * @returns boolean - true if file is within size limit
27
+ *
28
+ * @example
29
+ * if (!validateFileSize(file, 5)) {
30
+ * alert('El archivo es demasiado grande. Máximo 5MB')
31
+ * }
32
+ */
33
+ export declare function validateFileSize(file: File, maxSizeMB?: number): boolean;
34
+ /**
35
+ * Validates file extension matches allowed list
36
+ *
37
+ * @param file - File to validate
38
+ * @param allowedExtensions - Array of allowed extensions (e.g., ['jpg', 'png'])
39
+ * @returns boolean - true if extension is allowed
40
+ *
41
+ * @example
42
+ * if (!validateFileExtension(file, ['jpg', 'png', 'webp'])) {
43
+ * alert('Solo se permiten imágenes JPG, PNG o WebP')
44
+ * }
45
+ */
46
+ export declare function validateFileExtension(file: File, allowedExtensions: string[]): boolean;
47
+ /**
48
+ * Comprehensive file validation combining all checks
49
+ *
50
+ * @param file - File to validate
51
+ * @param options - Validation options
52
+ * @returns Promise<ValidationResult> - Validation result with details
53
+ *
54
+ * @example
55
+ * const result = await validateFile(file, {
56
+ * maxSizeMB: 5,
57
+ * allowedExtensions: ['jpg', 'png'],
58
+ * checkMagicBytes: true
59
+ * })
60
+ *
61
+ * if (!result.valid) {
62
+ * alert(result.error)
63
+ * }
64
+ */
65
+ export interface FileValidationOptions {
66
+ maxSizeMB?: number;
67
+ allowedExtensions?: string[];
68
+ checkMagicBytes?: boolean;
69
+ }
70
+ export interface ValidationResult {
71
+ valid: boolean;
72
+ error?: string;
73
+ }
74
+ export declare function validateFile(file: File, options?: FileValidationOptions): Promise<ValidationResult>;
75
+ //# sourceMappingURL=fileValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileValidation.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/utils/fileValidation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,GAAE,MAAW,GAAG,OAAO,CAG5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAKtF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,gBAAgB,CAAC,CA+B3B"}