@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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selector de idioma para el Chat Widget
|
|
3
|
+
* Componente opcional que permite cambiar el idioma del widget
|
|
4
|
+
*/
|
|
5
|
+
interface LanguageSelectorProps {
|
|
6
|
+
/** Clase CSS adicional */
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Mostrar banderas en lugar de códigos */
|
|
9
|
+
showFlags?: boolean;
|
|
10
|
+
/** Estilo del selector: 'dropdown' | 'buttons' */
|
|
11
|
+
variant?: 'dropdown' | 'buttons';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Selector de idioma para el widget
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Dropdown
|
|
18
|
+
* <LanguageSelector variant="dropdown" showFlags />
|
|
19
|
+
*
|
|
20
|
+
* // Botones
|
|
21
|
+
* <LanguageSelector variant="buttons" />
|
|
22
|
+
*/
|
|
23
|
+
export declare function LanguageSelector({ className, showFlags, variant, }: LanguageSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=LanguageSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageSelector.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/LanguageSelector.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,UAAU,qBAAqB;IAC7B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;CACjC;AAeD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,SAAgB,EAChB,OAAoB,GACrB,EAAE,qBAAqB,2CAiDvB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BubbleStyles } from '../types';
|
|
2
|
+
export type BotEmotion = 'default' | 'writing' | 'thinking' | 'confused' | 'sorry' | 'happy' | 'angry' | 'love' | 'wink';
|
|
3
|
+
export type EmotionAvatarMap = Partial<Record<BotEmotion, string>>;
|
|
4
|
+
export type PromptStrategy = 'always' | 'session' | 'forever';
|
|
5
|
+
interface LauncherProps {
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
unreadCount?: number;
|
|
9
|
+
primaryColor?: string;
|
|
10
|
+
logoUrl?: string;
|
|
11
|
+
starterPrompt?: string;
|
|
12
|
+
position?: 'bottom-right' | 'bottom-left';
|
|
13
|
+
emotion?: BotEmotion;
|
|
14
|
+
avatars?: EmotionAvatarMap;
|
|
15
|
+
styles?: BubbleStyles;
|
|
16
|
+
promptPersistence?: PromptStrategy;
|
|
17
|
+
avatarScale?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function Launcher({ isOpen, onClick, unreadCount, primaryColor, logoUrl, starterPrompt, position, emotion, avatars, styles, promptPersistence, avatarScale, }: LauncherProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=Launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Launcher.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/Launcher.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAI5C,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,OAAO,GACP,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,CAAA;AACV,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAClE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAE7D,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAA;IACzC,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,iBAAiB,CAAC,EAAE,cAAc,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,OAAO,EACP,WAAe,EACf,YAAY,EACZ,OAAO,EACP,aAAa,EACb,QAAyB,EACzB,OAAmB,EACnB,OAAY,EACZ,MAAM,EACN,iBAA6B,EAC7B,WAAiB,GAClB,EAAE,aAAa,2CA+Mf"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Launcher } from './Launcher';
|
|
3
|
+
/**
|
|
4
|
+
* El componente Launcher es el botón flotante que permite abrir el chat.
|
|
5
|
+
* Se muestra en la esquina inferior derecha de la pantalla.
|
|
6
|
+
*/
|
|
7
|
+
declare const meta: {
|
|
8
|
+
title: string;
|
|
9
|
+
component: typeof Launcher;
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: string;
|
|
12
|
+
};
|
|
13
|
+
tags: string[];
|
|
14
|
+
argTypes: {
|
|
15
|
+
isOpen: {
|
|
16
|
+
control: "boolean";
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
onClick: {
|
|
20
|
+
action: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
unreadCount: {
|
|
24
|
+
control: {
|
|
25
|
+
type: "number";
|
|
26
|
+
min: number;
|
|
27
|
+
max: number;
|
|
28
|
+
};
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
primaryColor: {
|
|
32
|
+
control: "color";
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
emotion: {
|
|
36
|
+
control: "select";
|
|
37
|
+
options: string[];
|
|
38
|
+
description: string;
|
|
39
|
+
table: {
|
|
40
|
+
category: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export default meta;
|
|
46
|
+
type Story = StoryObj<typeof meta>;
|
|
47
|
+
/**
|
|
48
|
+
* Estado cerrado sin mensajes no leídos
|
|
49
|
+
*/
|
|
50
|
+
export declare const Closed: Story;
|
|
51
|
+
/**
|
|
52
|
+
* Estado cerrado con mensajes no leídos
|
|
53
|
+
*/
|
|
54
|
+
export declare const ClosedWithUnread: Story;
|
|
55
|
+
/**
|
|
56
|
+
* Estado cerrado con muchos mensajes no leídos
|
|
57
|
+
*/
|
|
58
|
+
export declare const ClosedWithManyUnread: Story;
|
|
59
|
+
/**
|
|
60
|
+
* Estado abierto
|
|
61
|
+
*/
|
|
62
|
+
export declare const Open: Story;
|
|
63
|
+
/**
|
|
64
|
+
* Con color personalizado
|
|
65
|
+
*/
|
|
66
|
+
export declare const CustomColor: Story;
|
|
67
|
+
/**
|
|
68
|
+
* Bot pensando
|
|
69
|
+
*/
|
|
70
|
+
export declare const BotThinking: Story;
|
|
71
|
+
/**
|
|
72
|
+
* Bot confundido
|
|
73
|
+
*/
|
|
74
|
+
export declare const BotConfused: Story;
|
|
75
|
+
//# sourceMappingURL=Launcher.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Launcher.stories.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/Launcher.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCuB,CAAA;AAEjC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAQpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAQ9B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAQlC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,KAQlB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Live Call Input Area Component
|
|
4
|
+
*
|
|
5
|
+
* Wrapper around InputArea that adds live call functionality.
|
|
6
|
+
*/
|
|
7
|
+
import { type InputAreaProps } from './InputArea';
|
|
8
|
+
import type { VoiceConfig } from '../voice/types';
|
|
9
|
+
export interface LiveCallInputAreaProps extends InputAreaProps {
|
|
10
|
+
/** API base URL for voice WebSocket */
|
|
11
|
+
apiBaseUrl: string;
|
|
12
|
+
/** Tenant ID for authentication */
|
|
13
|
+
tenantId: string;
|
|
14
|
+
/** Session ID for the current session */
|
|
15
|
+
sessionId: string;
|
|
16
|
+
/** Conversation ID to continue */
|
|
17
|
+
conversationId?: string;
|
|
18
|
+
/** Voice configuration */
|
|
19
|
+
voiceConfig?: VoiceConfig;
|
|
20
|
+
/** Callback when user transcription is finalized */
|
|
21
|
+
onVoiceTranscription?: (text: string) => void;
|
|
22
|
+
/** Callback when bot text response arrives */
|
|
23
|
+
onBotVoiceResponse?: (text: string) => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Input area with integrated live call functionality
|
|
27
|
+
*/
|
|
28
|
+
export declare function LiveCallInputArea({ apiBaseUrl, tenantId, sessionId, conversationId, voiceConfig, onVoiceTranscription, onBotVoiceResponse, ...inputAreaProps }: LiveCallInputAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=LiveCallInputArea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveCallInputArea.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/LiveCallInputArea.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAG5D,OAAO,KAAK,EAAE,WAAW,EAAuC,MAAM,gBAAgB,CAAA;AAEtF,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,QAAQ,EACR,SAAS,EACT,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,GAAG,cAAc,EAClB,EAAE,sBAAsB,2CAsExB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ChatMessage, BubbleStyles } from '../types';
|
|
2
|
+
import type { EmotionAvatarMap } from './Launcher';
|
|
3
|
+
export interface MessageBubbleProps {
|
|
4
|
+
message: ChatMessage;
|
|
5
|
+
primaryColor?: string;
|
|
6
|
+
botAvatar?: string;
|
|
7
|
+
botName?: string;
|
|
8
|
+
styles?: BubbleStyles;
|
|
9
|
+
avatars?: EmotionAvatarMap;
|
|
10
|
+
isFirst?: boolean;
|
|
11
|
+
isLast?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const MessageBubble: import("react").NamedExoticComponent<MessageBubbleProps>;
|
|
14
|
+
//# sourceMappingURL=MessageBubble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/MessageBubble.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAMb,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,aAAa,0DAmYzB,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
/**
|
|
3
|
+
* MessageBubble muestra un mensaje individual en el chat.
|
|
4
|
+
* Soporta texto, markdown, imágenes, audio, enlaces y archivos.
|
|
5
|
+
*/
|
|
6
|
+
declare const meta: {
|
|
7
|
+
title: string;
|
|
8
|
+
component: import("react").NamedExoticComponent<import("./MessageBubble").MessageBubbleProps>;
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: string;
|
|
11
|
+
};
|
|
12
|
+
tags: string[];
|
|
13
|
+
decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
|
|
14
|
+
message: import("..").ChatMessage;
|
|
15
|
+
primaryColor?: string | undefined;
|
|
16
|
+
botAvatar?: string | undefined;
|
|
17
|
+
botName?: string | undefined;
|
|
18
|
+
styles?: import("..").BubbleStyles | undefined;
|
|
19
|
+
avatars?: import("./Launcher").EmotionAvatarMap | undefined;
|
|
20
|
+
isFirst?: boolean | undefined;
|
|
21
|
+
isLast?: boolean | undefined;
|
|
22
|
+
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
23
|
+
};
|
|
24
|
+
export default meta;
|
|
25
|
+
type Story = StoryObj<typeof meta>;
|
|
26
|
+
/**
|
|
27
|
+
* Mensaje simple del bot
|
|
28
|
+
*/
|
|
29
|
+
export declare const BotMessage: Story;
|
|
30
|
+
/**
|
|
31
|
+
* Mensaje del usuario
|
|
32
|
+
*/
|
|
33
|
+
export declare const UserMessage: Story;
|
|
34
|
+
/**
|
|
35
|
+
* Mensaje con markdown
|
|
36
|
+
*/
|
|
37
|
+
export declare const MessageWithMarkdown: Story;
|
|
38
|
+
/**
|
|
39
|
+
* Mensaje con enlace en markdown
|
|
40
|
+
*/
|
|
41
|
+
export declare const MessageWithLink: Story;
|
|
42
|
+
/**
|
|
43
|
+
* Mensaje con imagen
|
|
44
|
+
*/
|
|
45
|
+
export declare const MessageWithGallery: Story;
|
|
46
|
+
/**
|
|
47
|
+
* Mensaje con ubicación
|
|
48
|
+
*/
|
|
49
|
+
export declare const MessageWithLocation: Story;
|
|
50
|
+
/**
|
|
51
|
+
* Mensaje con archivo adjunto
|
|
52
|
+
*/
|
|
53
|
+
export declare const MessageWithFile: Story;
|
|
54
|
+
/**
|
|
55
|
+
* Mensaje con audio
|
|
56
|
+
*/
|
|
57
|
+
export declare const MessageWithAudio: Story;
|
|
58
|
+
/**
|
|
59
|
+
* Mensaje del usuario enviando
|
|
60
|
+
*/
|
|
61
|
+
export declare const MessageSending: Story;
|
|
62
|
+
/**
|
|
63
|
+
* Mensaje con error (ejemplo visual)
|
|
64
|
+
*/
|
|
65
|
+
export declare const MessageError: Story;
|
|
66
|
+
/**
|
|
67
|
+
* Mensaje largo
|
|
68
|
+
*/
|
|
69
|
+
export declare const LongMessage: Story;
|
|
70
|
+
//# sourceMappingURL=MessageBubble.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageBubble.stories.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/MessageBubble.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAU3D;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;CAc4B,CAAA;AAEtC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAUlC;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAwBjC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAU7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAahC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAcjC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAe7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAY9B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,KAW1B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BubbleStyles, ChatMessage } from '../types';
|
|
3
|
+
import type { EmotionAvatarMap } from './Launcher';
|
|
4
|
+
export interface MessageListProps {
|
|
5
|
+
messages: ChatMessage[];
|
|
6
|
+
isTyping: boolean;
|
|
7
|
+
welcomeMessage?: string;
|
|
8
|
+
primaryColor?: string;
|
|
9
|
+
logoUrl?: string;
|
|
10
|
+
botName?: string;
|
|
11
|
+
bubbleStyles?: BubbleStyles;
|
|
12
|
+
avatars?: EmotionAvatarMap;
|
|
13
|
+
}
|
|
14
|
+
export declare const MessageList: React.NamedExoticComponent<MessageListProps>;
|
|
15
|
+
//# sourceMappingURL=MessageList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/MessageList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4C,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAIzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,eAAO,MAAM,WAAW,8CA8RvB,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import type { ChatMessage } from '../types';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import("react").NamedExoticComponent<import("./MessageList").MessageListProps>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
|
|
10
|
+
messages: ChatMessage[];
|
|
11
|
+
isTyping: boolean;
|
|
12
|
+
welcomeMessage?: string | undefined;
|
|
13
|
+
primaryColor?: string | undefined;
|
|
14
|
+
logoUrl?: string | undefined;
|
|
15
|
+
botName?: string | undefined;
|
|
16
|
+
bubbleStyles?: import("..").BubbleStyles | undefined;
|
|
17
|
+
avatars?: import("./Launcher").EmotionAvatarMap | undefined;
|
|
18
|
+
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
19
|
+
tags: string[];
|
|
20
|
+
argTypes: {
|
|
21
|
+
isTyping: {
|
|
22
|
+
control: "boolean";
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
welcomeMessage: {
|
|
26
|
+
control: "text";
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
primaryColor: {
|
|
30
|
+
control: "color";
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
botName: {
|
|
34
|
+
control: "text";
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export default meta;
|
|
40
|
+
type Story = StoryObj<typeof meta>;
|
|
41
|
+
export declare const Default: Story;
|
|
42
|
+
export declare const Empty: Story;
|
|
43
|
+
export declare const BotTyping: Story;
|
|
44
|
+
export declare const WithMarkdown: Story;
|
|
45
|
+
export declare const WithGallery: Story;
|
|
46
|
+
export declare const WithLocation: Story;
|
|
47
|
+
export declare const WithAudio: Story;
|
|
48
|
+
export declare const LongConversation: Story;
|
|
49
|
+
export declare const VirtualizedList: Story;
|
|
50
|
+
export declare const CustomColor: Story;
|
|
51
|
+
export declare const WithLogo: Story;
|
|
52
|
+
//# sourceMappingURL=MessageList.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageList.stories.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/MessageList.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,UAAU,CAAA;AAEjB,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC0B,CAAA;AAEpC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AA0BlC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAQnB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAe1B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAezB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAgB1B,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAcvB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAiB9B,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypingIndicator.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/TypingIndicator.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,8CA+B1B,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
/**
|
|
3
|
+
* TypingIndicator muestra una animación cuando el bot está escribiendo.
|
|
4
|
+
* Proporciona feedback visual al usuario de que el bot está procesando.
|
|
5
|
+
*/
|
|
6
|
+
declare const meta: {
|
|
7
|
+
title: string;
|
|
8
|
+
component: import("react").NamedExoticComponent<object>;
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: string;
|
|
11
|
+
};
|
|
12
|
+
tags: string[];
|
|
13
|
+
argTypes: {
|
|
14
|
+
primaryColor: {
|
|
15
|
+
control: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, object>) => import("react/jsx-runtime").JSX.Element)[];
|
|
20
|
+
};
|
|
21
|
+
export default meta;
|
|
22
|
+
type Story = StoryObj<typeof meta>;
|
|
23
|
+
/**
|
|
24
|
+
* Indicador de escritura con color por defecto
|
|
25
|
+
*/
|
|
26
|
+
export declare const Default: Story;
|
|
27
|
+
/**
|
|
28
|
+
* Indicador con color azul
|
|
29
|
+
*/
|
|
30
|
+
export declare const Blue: Story;
|
|
31
|
+
/**
|
|
32
|
+
* Indicador con color púrpura
|
|
33
|
+
*/
|
|
34
|
+
export declare const Purple: Story;
|
|
35
|
+
/**
|
|
36
|
+
* Indicador con color rojo
|
|
37
|
+
*/
|
|
38
|
+
export declare const Red: Story;
|
|
39
|
+
//# sourceMappingURL=TypingIndicator.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypingIndicator.stories.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/TypingIndicator.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAG3D;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;CAoB8B,CAAA;AAExC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,KAIlB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,KAIjB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Input Area Component
|
|
4
|
+
*
|
|
5
|
+
* Extends InputArea with voice chat functionality.
|
|
6
|
+
* This is a wrapper that adds voice button and overlay to the standard InputArea.
|
|
7
|
+
*/
|
|
8
|
+
import { type InputAreaProps } from './InputArea';
|
|
9
|
+
import { type VoiceConfig } from '../voice';
|
|
10
|
+
export interface VoiceInputAreaProps extends InputAreaProps {
|
|
11
|
+
/** Voice chat configuration (Enterprise tier) */
|
|
12
|
+
voiceConfig?: VoiceConfig;
|
|
13
|
+
/** API base URL for voice WebSocket */
|
|
14
|
+
apiBaseUrl: string;
|
|
15
|
+
/** Tenant ID for voice authentication */
|
|
16
|
+
tenantId: string;
|
|
17
|
+
/** Session ID for voice authentication */
|
|
18
|
+
sessionId: string;
|
|
19
|
+
/** Callback when voice message transcription is complete */
|
|
20
|
+
onVoiceTranscription?: (text: string) => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* InputArea with integrated voice chat functionality
|
|
24
|
+
*/
|
|
25
|
+
export declare function VoiceInputArea({ voiceConfig, apiBaseUrl, tenantId, sessionId, onVoiceTranscription, onSendMessage, primaryColor, isConnected, ...inputAreaProps }: VoiceInputAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=VoiceInputArea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceInputArea.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/VoiceInputArea.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAGxF,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,iDAAiD;IACjD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,GAAG,cAAc,EAClB,EAAE,mBAAmB,2CA0HrB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Components Index
|
|
3
|
+
* Exporta todos los componentes del ChatWidget
|
|
4
|
+
*/
|
|
5
|
+
export { Launcher } from './Launcher';
|
|
6
|
+
export { ChatWindow } from './ChatWindow';
|
|
7
|
+
export { MessageList } from './MessageList';
|
|
8
|
+
export { MessageBubble } from './MessageBubble';
|
|
9
|
+
export { TypingIndicator } from './TypingIndicator';
|
|
10
|
+
export { InputArea } from './InputArea';
|
|
11
|
+
export { VoiceInputArea } from './VoiceInputArea';
|
|
12
|
+
export { LiveCallInputArea } from './LiveCallInputArea';
|
|
13
|
+
export { Gallery } from './Gallery';
|
|
14
|
+
export { ErrorBoundary } from './ErrorBoundary';
|
|
15
|
+
export { LanguageSelector } from './LanguageSelector';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Hook para analytics y telemetría
|
|
4
|
+
*/
|
|
5
|
+
export interface AnalyticsEvent {
|
|
6
|
+
event: string;
|
|
7
|
+
properties?: Record<string, any>;
|
|
8
|
+
timestamp: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function useAnalytics(apiBaseUrl: string, apiKey: string, enabled?: boolean): {
|
|
11
|
+
trackOpen: () => void;
|
|
12
|
+
trackClose: () => void;
|
|
13
|
+
trackMessageSent: (type: "text" | "image" | "audio" | "location" | "file") => void;
|
|
14
|
+
trackMessageReceived: (type: string, latency?: number) => void;
|
|
15
|
+
trackError: (error: string, context?: any) => void;
|
|
16
|
+
trackConnectionStatus: (isConnected: boolean) => void;
|
|
17
|
+
trackFeatureUsed: (feature: string) => void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useAnalytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useAnalytics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;CAClB;AAwID,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,UAAO;;;6BAmCjC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;iCAI5C,MAAM,YAAY,MAAM;wBAIjC,MAAM,YAAY,GAAG;yCAIJ,OAAO;gCAIhB,MAAM;EAatD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Hook optimizado para producción con soporte extendido de medios.
|
|
4
|
+
*/
|
|
5
|
+
import type { ChatMessage, ChatWidgetProps, PageContext } from '../types';
|
|
6
|
+
export interface UseChatSocketOptions {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
apiBaseUrl: string;
|
|
9
|
+
pageContext?: PageContext;
|
|
10
|
+
userContext?: ChatWidgetProps['userContext'];
|
|
11
|
+
onMessage: (message: ChatMessage) => void;
|
|
12
|
+
onConnected: (sessionId: string, config?: any) => void;
|
|
13
|
+
onDisconnected: () => void;
|
|
14
|
+
onTyping: (isTyping: boolean) => void;
|
|
15
|
+
onError: (error: string) => void;
|
|
16
|
+
onLogin?: ChatWidgetProps['onLogin'];
|
|
17
|
+
onNavigate?: ChatWidgetProps['onNavigate'];
|
|
18
|
+
onEvent?: ChatWidgetProps['onEvent'];
|
|
19
|
+
onThemeUpdate?: (theme: any) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function useChatSocket(options: UseChatSocketOptions): {
|
|
22
|
+
isConnected: boolean;
|
|
23
|
+
isConnecting: boolean;
|
|
24
|
+
sendMessage: (content: string, type?: "text" | "image" | "audio" | "location" | "file") => string;
|
|
25
|
+
sendTyping: (isTyping: boolean) => void;
|
|
26
|
+
requestHistory: () => void;
|
|
27
|
+
reconnect: () => void;
|
|
28
|
+
disconnect: () => void;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=useChatSocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatSocket.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useChatSocket.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKzE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;IAC5C,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IACzC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;CACrC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;2BA6Q7C,MAAM,SAAQ,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;;;;;EAgE3E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Hook de estado global con persistencia de historial y fix de renderizado inmediato.
|
|
4
|
+
*/
|
|
5
|
+
import type { ChatState, ChatMessage } from '../types';
|
|
6
|
+
export declare function useChatState(): {
|
|
7
|
+
state: ChatState;
|
|
8
|
+
isHydrated: boolean;
|
|
9
|
+
actions: {
|
|
10
|
+
toggleWindow: () => void;
|
|
11
|
+
openWindow: () => void;
|
|
12
|
+
closeWindow: () => void;
|
|
13
|
+
setConnected: (val: boolean) => void;
|
|
14
|
+
setTyping: (val: boolean) => void;
|
|
15
|
+
addMessage: (msg: ChatMessage) => void;
|
|
16
|
+
setMessages: (msgs: ChatMessage[]) => void;
|
|
17
|
+
setError: (err: string | null) => void;
|
|
18
|
+
setSessionId: (id: string) => void;
|
|
19
|
+
clearChat: () => void;
|
|
20
|
+
clearMessages: () => void;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=useChatState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatState.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useChatState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,WAAW,EAAE,MAAM,UAAU,CAAA;AAgFlE,wBAAgB,YAAY;;;;;;;4BAiGlB,OAAO;yBAIP,OAAO;0BAbsB,WAAW;4BAiBvC,WAAW,EAAE;wBAId,MAAM,GAAG,IAAI;2BAId,MAAM;;;;EA6Bd"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ChatWidgetProps, ChatMessage, PageContext } from '../types';
|
|
2
|
+
import { BotEmotion } from '../components/Launcher';
|
|
3
|
+
interface UseChatWidgetOptions {
|
|
4
|
+
apiKey: string;
|
|
5
|
+
apiBaseUrl: string;
|
|
6
|
+
pageContext?: PageContext;
|
|
7
|
+
includeSEOMetadata?: boolean;
|
|
8
|
+
theme?: ChatWidgetProps['theme'];
|
|
9
|
+
mediaConfig?: ChatWidgetProps['mediaConfig'];
|
|
10
|
+
userContext?: ChatWidgetProps['userContext'];
|
|
11
|
+
onLogin?: ChatWidgetProps['onLogin'];
|
|
12
|
+
onNavigate?: ChatWidgetProps['onNavigate'];
|
|
13
|
+
onEvent?: ChatWidgetProps['onEvent'];
|
|
14
|
+
onStateChange?: ChatWidgetProps['onStateChange'];
|
|
15
|
+
onThemeUpdate?: (theme: any) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Hook principal que maneja toda la lógica del widget de chat
|
|
19
|
+
* Incluye: estado, socket, mensajes, analytics, notificaciones, rate limiting
|
|
20
|
+
*/
|
|
21
|
+
export declare function useChatWidget(options: UseChatWidgetOptions): {
|
|
22
|
+
state: import("../types").ChatState;
|
|
23
|
+
actions: {
|
|
24
|
+
toggleWindow: () => void;
|
|
25
|
+
openWindow: () => void;
|
|
26
|
+
closeWindow: () => void;
|
|
27
|
+
setConnected: (val: boolean) => void;
|
|
28
|
+
setTyping: (val: boolean) => void;
|
|
29
|
+
addMessage: (msg: ChatMessage) => void;
|
|
30
|
+
setMessages: (msgs: ChatMessage[]) => void;
|
|
31
|
+
setError: (err: string | null) => void;
|
|
32
|
+
setSessionId: (id: string) => void;
|
|
33
|
+
clearChat: () => void;
|
|
34
|
+
clearMessages: () => void;
|
|
35
|
+
};
|
|
36
|
+
unreadCount: number;
|
|
37
|
+
currentBotEmotion: BotEmotion;
|
|
38
|
+
isConnected: boolean;
|
|
39
|
+
handleToggle: () => void;
|
|
40
|
+
handleSendText: (text: string) => void;
|
|
41
|
+
handleSendAttachment: (file: File, type: "image" | "audio" | "file") => Promise<void>;
|
|
42
|
+
handleSendLocation: (location: {
|
|
43
|
+
latitude: number;
|
|
44
|
+
longitude: number;
|
|
45
|
+
}) => void;
|
|
46
|
+
};
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=useChatWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatWidget.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useChatWidget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAKX,WAAW,EACZ,MAAM,UAAU,CAAA;AAQjB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAanD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;IAC5C,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;IAC5C,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAA;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;CACrC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;2BAiHhD,MAAM;iCA6BA,IAAI,QAAQ,OAAO,GAAG,OAAO,GAAG,MAAM;mCAyCxC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;EA8DrD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook para detectar y sincronizar el dark mode del widget con el container padre
|
|
3
|
+
* Observa cambios en las clases 'dark' de los ancestros y aplica/remueve la clase al widget
|
|
4
|
+
*/
|
|
5
|
+
export declare function useDarkMode(containerRef: React.RefObject<HTMLDivElement>): boolean;
|
|
6
|
+
//# sourceMappingURL=useDarkMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDarkMode.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useDarkMode.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,WA6HxE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface DynamicHeightOptions {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
headerHeight?: number;
|
|
4
|
+
marginTop?: number;
|
|
5
|
+
height?: string;
|
|
6
|
+
bottom?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function useDynamicHeight({ isOpen, height, bottom }: DynamicHeightOptions): import("react").CSSProperties;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=useDynamicHeight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDynamicHeight.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useDynamicHeight.ts"],"names":[],"mappings":"AAKA,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,iCAoFhF"}
|