@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.
Files changed (149) hide show
  1. package/README.md +243 -290
  2. package/dist/{ChatWidget-B6W68bT_.js → ChatWidget-BCHSZnMy.js} +17 -17
  3. package/dist/{ChatWidget-B6W68bT_.js.map → ChatWidget-BCHSZnMy.js.map} +1 -1
  4. package/dist/botuyo-chat.css +1 -1
  5. package/dist/botuyo-chat.js +1 -1
  6. package/dist/{chunk-audio-CgduwQLl.js → chunk-audio-BT2WWPfS.js} +2 -2
  7. package/dist/{chunk-audio-CgduwQLl.js.map → chunk-audio-BT2WWPfS.js.map} +1 -1
  8. package/dist/{chunk-chat-ui-EAAXXtnK.js → chunk-chat-ui-BHfnFN_3.js} +10 -10
  9. package/dist/{chunk-chat-ui-EAAXXtnK.js.map → chunk-chat-ui-BHfnFN_3.js.map} +1 -1
  10. package/dist/{chunk-gallery-B9sBFYYc.js → chunk-gallery-CHMxgXlB.js} +2 -2
  11. package/dist/{chunk-gallery-B9sBFYYc.js.map → chunk-gallery-CHMxgXlB.js.map} +1 -1
  12. package/dist/src/chat-widget/ChatWidget.d.ts +3 -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/ChatWindow.d.ts +28 -0
  21. package/dist/src/chat-widget/components/ChatWindow.d.ts.map +1 -0
  22. package/dist/src/chat-widget/components/ChatWindow.stories.d.ts +71 -0
  23. package/dist/src/chat-widget/components/ChatWindow.stories.d.ts.map +1 -0
  24. package/dist/src/chat-widget/components/ErrorBoundary.d.ts +36 -0
  25. package/dist/src/chat-widget/components/ErrorBoundary.d.ts.map +1 -0
  26. package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts +29 -0
  27. package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts.map +1 -0
  28. package/dist/src/chat-widget/components/Gallery.d.ts +14 -0
  29. package/dist/src/chat-widget/components/Gallery.d.ts.map +1 -0
  30. package/dist/src/chat-widget/components/Gallery.stories.d.ts +33 -0
  31. package/dist/src/chat-widget/components/Gallery.stories.d.ts.map +1 -0
  32. package/dist/src/chat-widget/components/Icons.d.ts +7 -0
  33. package/dist/src/chat-widget/components/Icons.d.ts.map +1 -0
  34. package/dist/src/chat-widget/components/InputArea.d.ts +20 -0
  35. package/dist/src/chat-widget/components/InputArea.d.ts.map +1 -0
  36. package/dist/src/chat-widget/components/InputArea.stories.d.ts +61 -0
  37. package/dist/src/chat-widget/components/InputArea.stories.d.ts.map +1 -0
  38. package/dist/src/chat-widget/components/LanguageSelector.d.ts +25 -0
  39. package/dist/src/chat-widget/components/LanguageSelector.d.ts.map +1 -0
  40. package/dist/src/chat-widget/components/Launcher.d.ts +21 -0
  41. package/dist/src/chat-widget/components/Launcher.d.ts.map +1 -0
  42. package/dist/src/chat-widget/components/Launcher.stories.d.ts +75 -0
  43. package/dist/src/chat-widget/components/Launcher.stories.d.ts.map +1 -0
  44. package/dist/src/chat-widget/components/LiveCallInputArea.d.ts +29 -0
  45. package/dist/src/chat-widget/components/LiveCallInputArea.d.ts.map +1 -0
  46. package/dist/src/chat-widget/components/MessageBubble.d.ts +14 -0
  47. package/dist/src/chat-widget/components/MessageBubble.d.ts.map +1 -0
  48. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts +70 -0
  49. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts.map +1 -0
  50. package/dist/src/chat-widget/components/MessageList.d.ts +15 -0
  51. package/dist/src/chat-widget/components/MessageList.d.ts.map +1 -0
  52. package/dist/src/chat-widget/components/MessageList.stories.d.ts +52 -0
  53. package/dist/src/chat-widget/components/MessageList.stories.d.ts.map +1 -0
  54. package/dist/src/chat-widget/components/TypingIndicator.d.ts +2 -0
  55. package/dist/src/chat-widget/components/TypingIndicator.d.ts.map +1 -0
  56. package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts +39 -0
  57. package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts.map +1 -0
  58. package/dist/src/chat-widget/components/VoiceInputArea.d.ts +26 -0
  59. package/dist/src/chat-widget/components/VoiceInputArea.d.ts.map +1 -0
  60. package/dist/src/chat-widget/components/index.d.ts +16 -0
  61. package/dist/src/chat-widget/components/index.d.ts.map +1 -0
  62. package/dist/src/chat-widget/hooks/useAnalytics.d.ts +19 -0
  63. package/dist/src/chat-widget/hooks/useAnalytics.d.ts.map +1 -0
  64. package/dist/src/chat-widget/hooks/useChatSocket.d.ts +30 -0
  65. package/dist/src/chat-widget/hooks/useChatSocket.d.ts.map +1 -0
  66. package/dist/src/chat-widget/hooks/useChatState.d.ts +23 -0
  67. package/dist/src/chat-widget/hooks/useChatState.d.ts.map +1 -0
  68. package/dist/src/chat-widget/hooks/useChatWidget.d.ts +48 -0
  69. package/dist/src/chat-widget/hooks/useChatWidget.d.ts.map +1 -0
  70. package/dist/src/chat-widget/hooks/useDarkMode.d.ts +6 -0
  71. package/dist/src/chat-widget/hooks/useDarkMode.d.ts.map +1 -0
  72. package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts +10 -0
  73. package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts.map +1 -0
  74. package/dist/src/chat-widget/hooks/useFocusTrap.d.ts +34 -0
  75. package/dist/src/chat-widget/hooks/useFocusTrap.d.ts.map +1 -0
  76. package/dist/src/chat-widget/hooks/useHighContrast.d.ts +6 -0
  77. package/dist/src/chat-widget/hooks/useHighContrast.d.ts.map +1 -0
  78. package/dist/src/chat-widget/hooks/useIsMobile.d.ts +2 -0
  79. package/dist/src/chat-widget/hooks/useIsMobile.d.ts.map +1 -0
  80. package/dist/src/chat-widget/hooks/useNotifications.d.ts +23 -0
  81. package/dist/src/chat-widget/hooks/useNotifications.d.ts.map +1 -0
  82. package/dist/src/chat-widget/hooks/useRateLimit.d.ts +15 -0
  83. package/dist/src/chat-widget/hooks/useRateLimit.d.ts.map +1 -0
  84. package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts +10 -0
  85. package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts.map +1 -0
  86. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts +12 -0
  87. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts.map +1 -0
  88. package/dist/src/chat-widget/i18n/LanguageContext.d.ts +33 -0
  89. package/dist/src/chat-widget/i18n/LanguageContext.d.ts.map +1 -0
  90. package/dist/src/chat-widget/i18n/index.d.ts +8 -0
  91. package/dist/src/chat-widget/i18n/index.d.ts.map +1 -0
  92. package/dist/src/chat-widget/i18n/translations.d.ts +177 -0
  93. package/dist/src/chat-widget/i18n/translations.d.ts.map +1 -0
  94. package/dist/src/chat-widget/i18n/useTranslations.d.ts +27 -0
  95. package/dist/src/chat-widget/i18n/useTranslations.d.ts.map +1 -0
  96. package/dist/src/chat-widget/index.d.ts +11 -0
  97. package/dist/src/chat-widget/index.d.ts.map +1 -0
  98. package/dist/src/chat-widget/types/index.d.ts +268 -0
  99. package/dist/src/chat-widget/types/index.d.ts.map +1 -0
  100. package/dist/src/chat-widget/types/socket.d.ts +101 -0
  101. package/dist/src/chat-widget/types/socket.d.ts.map +1 -0
  102. package/dist/src/chat-widget/utils/dateUtils.d.ts +33 -0
  103. package/dist/src/chat-widget/utils/dateUtils.d.ts.map +1 -0
  104. package/dist/src/chat-widget/utils/defaultAssets.d.ts +20 -0
  105. package/dist/src/chat-widget/utils/defaultAssets.d.ts.map +1 -0
  106. package/dist/src/chat-widget/utils/deviceId.d.ts +18 -0
  107. package/dist/src/chat-widget/utils/deviceId.d.ts.map +1 -0
  108. package/dist/src/chat-widget/utils/fileValidation.d.ts +75 -0
  109. package/dist/src/chat-widget/utils/fileValidation.d.ts.map +1 -0
  110. package/dist/src/chat-widget/utils/logger.d.ts +31 -0
  111. package/dist/src/chat-widget/utils/logger.d.ts.map +1 -0
  112. package/dist/src/chat-widget/utils/performance.d.ts +50 -0
  113. package/dist/src/chat-widget/utils/performance.d.ts.map +1 -0
  114. package/dist/src/chat-widget/utils/storage.d.ts +24 -0
  115. package/dist/src/chat-widget/utils/storage.d.ts.map +1 -0
  116. package/dist/src/chat-widget/utils/theme.d.ts +122 -0
  117. package/dist/src/chat-widget/utils/theme.d.ts.map +1 -0
  118. package/dist/src/chat-widget/utils/theme.examples.d.ts +47 -0
  119. package/dist/src/chat-widget/utils/theme.examples.d.ts.map +1 -0
  120. package/dist/src/chat-widget/utils/themes/index.d.ts +12 -0
  121. package/dist/src/chat-widget/utils/themes/index.d.ts.map +1 -0
  122. package/dist/src/chat-widget/voice/components/CallButton.d.ts +12 -0
  123. package/dist/src/chat-widget/voice/components/CallButton.d.ts.map +1 -0
  124. package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts +12 -0
  125. package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts.map +1 -0
  126. package/dist/src/chat-widget/voice/components/VoiceButton.d.ts +13 -0
  127. package/dist/src/chat-widget/voice/components/VoiceButton.d.ts.map +1 -0
  128. package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts +12 -0
  129. package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts.map +1 -0
  130. package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts +12 -0
  131. package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts.map +1 -0
  132. package/dist/src/chat-widget/voice/components/index.d.ts +10 -0
  133. package/dist/src/chat-widget/voice/components/index.d.ts.map +1 -0
  134. package/dist/src/chat-widget/voice/index.d.ts +11 -0
  135. package/dist/src/chat-widget/voice/index.d.ts.map +1 -0
  136. package/dist/src/chat-widget/voice/types.d.ts +232 -0
  137. package/dist/src/chat-widget/voice/types.d.ts.map +1 -0
  138. package/dist/src/chat-widget/voice/useLiveCall.d.ts +13 -0
  139. package/dist/src/chat-widget/voice/useLiveCall.d.ts.map +1 -0
  140. package/dist/src/chat-widget/voice/useVoiceChat.d.ts +13 -0
  141. package/dist/src/chat-widget/voice/useVoiceChat.d.ts.map +1 -0
  142. package/dist/src/chat-widget/voice/useVoiceState.d.ts +38 -0
  143. package/dist/src/chat-widget/voice/useVoiceState.d.ts.map +1 -0
  144. package/dist/src/lib/utils.d.ts +3 -0
  145. package/dist/src/lib/utils.d.ts.map +1 -0
  146. package/dist/standalone.d.ts +95 -0
  147. package/dist/standalone.d.ts.map +1 -0
  148. package/dist/stats.html +1 -1
  149. 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,2 @@
1
+ export declare const TypingIndicator: import("react").NamedExoticComponent<object>;
2
+ //# sourceMappingURL=TypingIndicator.d.ts.map
@@ -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"}