@botuyo/chat-widget-standalone 1.0.37 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ShadowChatWidget.d.ts +25 -0
- package/dist/ShadowChatWidget.d.ts.map +1 -0
- package/dist/botuyo-chat.es.js +1 -1
- package/dist/botuyo-chat.es.js.map +1 -1
- package/dist/botuyo-chat.umd.css +1 -0
- package/dist/botuyo-chat.umd.js +2 -0
- package/dist/botuyo-chat.umd.js.map +1 -0
- package/dist/{chunk-audio-DG3X3uze.js → chunk-audio-COeJdzjG.js} +2 -2
- package/dist/{chunk-audio-DG3X3uze.js.map → chunk-audio-COeJdzjG.js.map} +1 -1
- package/dist/{chunk-chat-ui-C0sPAQ4e.js → chunk-chat-ui-SifgaVaw.js} +33 -32
- package/dist/{chunk-chat-ui-C0sPAQ4e.js.map → chunk-chat-ui-SifgaVaw.js.map} +1 -1
- package/dist/{chunk-gallery-BDe3OAec.js → chunk-gallery-CvYRVmRl.js} +2 -2
- package/dist/{chunk-gallery-BDe3OAec.js.map → chunk-gallery-CvYRVmRl.js.map} +1 -1
- package/dist/src/chat-widget/ChatWidget.d.ts +5 -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/Avatar3D.d.ts +23 -0
- package/dist/src/chat-widget/components/Avatar3D.d.ts.map +1 -0
- package/dist/src/chat-widget/components/ChatWindow.d.ts +35 -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 +10 -0
- package/dist/src/chat-widget/components/Icons.d.ts.map +1 -0
- package/dist/src/chat-widget/components/InputArea.d.ts +21 -0
- package/dist/src/chat-widget/components/InputArea.d.ts.map +1 -0
- package/dist/src/chat-widget/components/InputArea.stories.d.ts +62 -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 +22 -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 +15 -0
- package/dist/src/chat-widget/components/MessageBubble.d.ts.map +1 -0
- package/dist/src/chat-widget/components/MessageBubble.stories.d.ts +71 -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/VoiceCallOverlay.d.ts +65 -0
- package/dist/src/chat-widget/components/VoiceCallOverlay.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/contexts/AnimationContext.d.ts +69 -0
- package/dist/src/chat-widget/contexts/AnimationContext.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 +35 -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 +50 -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 +328 -0
- package/dist/src/chat-widget/types/index.d.ts.map +1 -0
- package/dist/src/chat-widget/types/socket.d.ts +107 -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 +25 -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 +113 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/stats-umd.html +4949 -0
- package/dist/stats.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { InputArea } from './InputArea';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof InputArea;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
|
|
10
|
+
isConnected: boolean;
|
|
11
|
+
placeholder?: string | undefined;
|
|
12
|
+
primaryColor?: string | undefined;
|
|
13
|
+
mediaConfig?: import("../types").MediaConfig | undefined;
|
|
14
|
+
onSendMessage: (message: string) => void;
|
|
15
|
+
onSendAttachment?: ((file: File, type: "image" | "audio" | "file") => void) | undefined;
|
|
16
|
+
onSendLocation?: ((location: {
|
|
17
|
+
latitude: number;
|
|
18
|
+
longitude: number;
|
|
19
|
+
}) => void) | undefined;
|
|
20
|
+
onVoiceCall?: (() => void) | undefined;
|
|
21
|
+
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
22
|
+
tags: string[];
|
|
23
|
+
argTypes: {
|
|
24
|
+
isConnected: {
|
|
25
|
+
control: "boolean";
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
placeholder: {
|
|
29
|
+
control: "text";
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
primaryColor: {
|
|
33
|
+
control: "color";
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
mediaConfig: {
|
|
37
|
+
control: "object";
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
onSendMessage: {
|
|
41
|
+
action: string;
|
|
42
|
+
};
|
|
43
|
+
onSendAttachment: {
|
|
44
|
+
action: string;
|
|
45
|
+
};
|
|
46
|
+
onSendLocation: {
|
|
47
|
+
action: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export default meta;
|
|
52
|
+
type Story = StoryObj<typeof meta>;
|
|
53
|
+
export declare const Default: Story;
|
|
54
|
+
export declare const Disconnected: Story;
|
|
55
|
+
export declare const CustomPlaceholder: Story;
|
|
56
|
+
export declare const CustomColor: Story;
|
|
57
|
+
export declare const AllMediaEnabled: Story;
|
|
58
|
+
export declare const OnlyText: Story;
|
|
59
|
+
export declare const OnlyImages: Story;
|
|
60
|
+
export declare const ImagesAndLocation: Story;
|
|
61
|
+
export declare const SmallFileLimit: Story;
|
|
62
|
+
//# sourceMappingURL=InputArea.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputArea.stories.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/InputArea.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCwB,CAAA;AAElC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAYxB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAY/B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAY5B,CAAA"}
|
|
@@ -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,22 @@
|
|
|
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
|
+
showPromptAvatar?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function Launcher({ isOpen, onClick, unreadCount, primaryColor, logoUrl, starterPrompt, position, emotion, avatars, styles, promptPersistence, avatarScale, showPromptAvatar: _showPromptAvatar, }: LauncherProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# 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":"AAQA,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;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;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,EACjB,gBAAgB,EAAE,iBAAyB,GAC5C,EAAE,aAAa,2CA4Qf"}
|
|
@@ -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,15 @@
|
|
|
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
|
+
index?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const MessageBubble: import("react").NamedExoticComponent<MessageBubbleProps>;
|
|
15
|
+
//# 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":"AAWA,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;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,aAAa,0DA4YzB,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
index?: number | undefined;
|
|
23
|
+
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
24
|
+
};
|
|
25
|
+
export default meta;
|
|
26
|
+
type Story = StoryObj<typeof meta>;
|
|
27
|
+
/**
|
|
28
|
+
* Mensaje simple del bot
|
|
29
|
+
*/
|
|
30
|
+
export declare const BotMessage: Story;
|
|
31
|
+
/**
|
|
32
|
+
* Mensaje del usuario
|
|
33
|
+
*/
|
|
34
|
+
export declare const UserMessage: Story;
|
|
35
|
+
/**
|
|
36
|
+
* Mensaje con markdown
|
|
37
|
+
*/
|
|
38
|
+
export declare const MessageWithMarkdown: Story;
|
|
39
|
+
/**
|
|
40
|
+
* Mensaje con enlace en markdown
|
|
41
|
+
*/
|
|
42
|
+
export declare const MessageWithLink: Story;
|
|
43
|
+
/**
|
|
44
|
+
* Mensaje con imagen
|
|
45
|
+
*/
|
|
46
|
+
export declare const MessageWithGallery: Story;
|
|
47
|
+
/**
|
|
48
|
+
* Mensaje con ubicación
|
|
49
|
+
*/
|
|
50
|
+
export declare const MessageWithLocation: Story;
|
|
51
|
+
/**
|
|
52
|
+
* Mensaje con archivo adjunto
|
|
53
|
+
*/
|
|
54
|
+
export declare const MessageWithFile: Story;
|
|
55
|
+
/**
|
|
56
|
+
* Mensaje con audio
|
|
57
|
+
*/
|
|
58
|
+
export declare const MessageWithAudio: Story;
|
|
59
|
+
/**
|
|
60
|
+
* Mensaje del usuario enviando
|
|
61
|
+
*/
|
|
62
|
+
export declare const MessageSending: Story;
|
|
63
|
+
/**
|
|
64
|
+
* Mensaje con error (ejemplo visual)
|
|
65
|
+
*/
|
|
66
|
+
export declare const MessageError: Story;
|
|
67
|
+
/**
|
|
68
|
+
* Mensaje largo
|
|
69
|
+
*/
|
|
70
|
+
export declare const LongMessage: Story;
|
|
71
|
+
//# 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":"AAIA,eAAO,MAAM,eAAe,8CAwC1B,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,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @botuyo/chat-widget
|
|
3
|
+
* Voice Call Overlay Component
|
|
4
|
+
*
|
|
5
|
+
* Real-time voice call overlay using Gemini Live API via Socket.IO.
|
|
6
|
+
* Sends raw PCM 16kHz audio chunks and receives PCM 24kHz audio responses.
|
|
7
|
+
*
|
|
8
|
+
* Flow: User Mic (PCM 16kHz) → Socket.IO → Backend → Gemini Live API →
|
|
9
|
+
* PCM 24kHz audio → Socket.IO → Web Audio API playback
|
|
10
|
+
*/
|
|
11
|
+
import type { EmotionAvatarMap } from './Launcher';
|
|
12
|
+
/** Configurable voice call overlay options */
|
|
13
|
+
export interface VoiceOverlayConfig {
|
|
14
|
+
/** Background color of the overlay. Default: '#0a0a0a' */
|
|
15
|
+
backgroundColor?: string;
|
|
16
|
+
/** Glow color when listening. Default: '#10b981' (emerald) */
|
|
17
|
+
listeningColor?: string;
|
|
18
|
+
/** Glow color when speaking. Default: uses primaryColor */
|
|
19
|
+
speakingColor?: string;
|
|
20
|
+
/** Glow color when thinking. Default: '#a855f7' (purple) */
|
|
21
|
+
thinkingColor?: string;
|
|
22
|
+
/** Show emojis for emotions when no avatar is provided. Default: true */
|
|
23
|
+
showEmojis?: boolean;
|
|
24
|
+
/** Show the emotion text label on the avatar/header. Default: true */
|
|
25
|
+
showEmotionLabel?: boolean;
|
|
26
|
+
/** Show waveform bars visualizer. Default: true */
|
|
27
|
+
showWaveform?: boolean;
|
|
28
|
+
/** Show the "Gemini Live" badge. Default: true */
|
|
29
|
+
showBadge?: boolean;
|
|
30
|
+
/** Custom badge text. Default: 'Gemini Live' */
|
|
31
|
+
badgeText?: string;
|
|
32
|
+
/** Custom emoji map overrides. Merged with defaults. */
|
|
33
|
+
emotionEmojis?: Partial<Record<string, string>>;
|
|
34
|
+
/** Custom status labels per state */
|
|
35
|
+
statusLabels?: Partial<Record<CallState, string>>;
|
|
36
|
+
/** Avatar orb size in px. Default: 128 */
|
|
37
|
+
orbSize?: number;
|
|
38
|
+
/** Scale factor when speaking. Default: 1.08 */
|
|
39
|
+
speakingScale?: number;
|
|
40
|
+
/** Scale factor when thinking. Default: 0.95 */
|
|
41
|
+
thinkingScale?: number;
|
|
42
|
+
/** URL to a .vrm/.glb 3D model. When set, replaces 2D avatar with 3D. */
|
|
43
|
+
avatar3dUrl?: string;
|
|
44
|
+
}
|
|
45
|
+
interface VoiceCallOverlayProps {
|
|
46
|
+
isOpen: boolean;
|
|
47
|
+
onClose: () => void;
|
|
48
|
+
primaryColor?: string;
|
|
49
|
+
getSocket?: () => any;
|
|
50
|
+
avatars?: EmotionAvatarMap;
|
|
51
|
+
logoUrl?: string;
|
|
52
|
+
/** URL to a .vrm/.glb 3D model for the avatar */
|
|
53
|
+
avatar3dUrl?: string;
|
|
54
|
+
/** Voice overlay configuration for full customizability */
|
|
55
|
+
voiceConfig?: VoiceOverlayConfig;
|
|
56
|
+
/** Callback to persist voice transcripts to the main chat history */
|
|
57
|
+
onAddMessage?: (message: {
|
|
58
|
+
sender: 'user' | 'bot';
|
|
59
|
+
content: string;
|
|
60
|
+
}) => void;
|
|
61
|
+
}
|
|
62
|
+
type CallState = 'idle' | 'connecting' | 'listening' | 'speaking' | 'thinking';
|
|
63
|
+
export declare function VoiceCallOverlay({ isOpen, onClose, primaryColor, getSocket, avatars, logoUrl, avatar3dUrl, voiceConfig, onAddMessage, }: VoiceCallOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=VoiceCallOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceCallOverlay.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/components/VoiceCallOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlD,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAA;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CAC9E;AAED,KAAK,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;AA+X9E,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,OAAO,EACP,YAAwB,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,GACb,EAAE,qBAAqB,kDAu1BvB"}
|
|
@@ -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"}
|