@botuyo/chat-widget-standalone 1.0.37 → 1.0.38

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 (157) hide show
  1. package/dist/ShadowChatWidget.d.ts +25 -0
  2. package/dist/ShadowChatWidget.d.ts.map +1 -0
  3. package/dist/botuyo-chat.es.js +1 -1
  4. package/dist/botuyo-chat.umd.css +1 -0
  5. package/dist/botuyo-chat.umd.js +2 -0
  6. package/dist/botuyo-chat.umd.js.map +1 -0
  7. package/dist/{chunk-audio-DG3X3uze.js → chunk-audio-Bdq6NarX.js} +2 -2
  8. package/dist/{chunk-audio-DG3X3uze.js.map → chunk-audio-Bdq6NarX.js.map} +1 -1
  9. package/dist/{chunk-chat-ui-C0sPAQ4e.js → chunk-chat-ui-BUOt7M33.js} +13 -13
  10. package/dist/{chunk-chat-ui-C0sPAQ4e.js.map → chunk-chat-ui-BUOt7M33.js.map} +1 -1
  11. package/dist/{chunk-gallery-BDe3OAec.js → chunk-gallery-C_5eKbwu.js} +2 -2
  12. package/dist/{chunk-gallery-BDe3OAec.js.map → chunk-gallery-C_5eKbwu.js.map} +1 -1
  13. package/dist/src/chat-widget/ChatWidget.d.ts +5 -0
  14. package/dist/src/chat-widget/ChatWidget.d.ts.map +1 -0
  15. package/dist/src/chat-widget/ChatWidgetProvider.d.ts +81 -0
  16. package/dist/src/chat-widget/ChatWidgetProvider.d.ts.map +1 -0
  17. package/dist/src/chat-widget/components/AudioPlayer.d.ts +8 -0
  18. package/dist/src/chat-widget/components/AudioPlayer.d.ts.map +1 -0
  19. package/dist/src/chat-widget/components/AudioPlayer.stories.d.ts +37 -0
  20. package/dist/src/chat-widget/components/AudioPlayer.stories.d.ts.map +1 -0
  21. package/dist/src/chat-widget/components/Avatar3D.d.ts +23 -0
  22. package/dist/src/chat-widget/components/Avatar3D.d.ts.map +1 -0
  23. package/dist/src/chat-widget/components/ChatWindow.d.ts +35 -0
  24. package/dist/src/chat-widget/components/ChatWindow.d.ts.map +1 -0
  25. package/dist/src/chat-widget/components/ChatWindow.stories.d.ts +71 -0
  26. package/dist/src/chat-widget/components/ChatWindow.stories.d.ts.map +1 -0
  27. package/dist/src/chat-widget/components/ErrorBoundary.d.ts +36 -0
  28. package/dist/src/chat-widget/components/ErrorBoundary.d.ts.map +1 -0
  29. package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts +29 -0
  30. package/dist/src/chat-widget/components/ErrorBoundary.stories.d.ts.map +1 -0
  31. package/dist/src/chat-widget/components/Gallery.d.ts +14 -0
  32. package/dist/src/chat-widget/components/Gallery.d.ts.map +1 -0
  33. package/dist/src/chat-widget/components/Gallery.stories.d.ts +33 -0
  34. package/dist/src/chat-widget/components/Gallery.stories.d.ts.map +1 -0
  35. package/dist/src/chat-widget/components/Icons.d.ts +10 -0
  36. package/dist/src/chat-widget/components/Icons.d.ts.map +1 -0
  37. package/dist/src/chat-widget/components/InputArea.d.ts +21 -0
  38. package/dist/src/chat-widget/components/InputArea.d.ts.map +1 -0
  39. package/dist/src/chat-widget/components/InputArea.stories.d.ts +62 -0
  40. package/dist/src/chat-widget/components/InputArea.stories.d.ts.map +1 -0
  41. package/dist/src/chat-widget/components/LanguageSelector.d.ts +25 -0
  42. package/dist/src/chat-widget/components/LanguageSelector.d.ts.map +1 -0
  43. package/dist/src/chat-widget/components/Launcher.d.ts +22 -0
  44. package/dist/src/chat-widget/components/Launcher.d.ts.map +1 -0
  45. package/dist/src/chat-widget/components/Launcher.stories.d.ts +75 -0
  46. package/dist/src/chat-widget/components/Launcher.stories.d.ts.map +1 -0
  47. package/dist/src/chat-widget/components/LiveCallInputArea.d.ts +29 -0
  48. package/dist/src/chat-widget/components/LiveCallInputArea.d.ts.map +1 -0
  49. package/dist/src/chat-widget/components/MessageBubble.d.ts +15 -0
  50. package/dist/src/chat-widget/components/MessageBubble.d.ts.map +1 -0
  51. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts +71 -0
  52. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts.map +1 -0
  53. package/dist/src/chat-widget/components/MessageList.d.ts +15 -0
  54. package/dist/src/chat-widget/components/MessageList.d.ts.map +1 -0
  55. package/dist/src/chat-widget/components/MessageList.stories.d.ts +52 -0
  56. package/dist/src/chat-widget/components/MessageList.stories.d.ts.map +1 -0
  57. package/dist/src/chat-widget/components/TypingIndicator.d.ts +2 -0
  58. package/dist/src/chat-widget/components/TypingIndicator.d.ts.map +1 -0
  59. package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts +39 -0
  60. package/dist/src/chat-widget/components/TypingIndicator.stories.d.ts.map +1 -0
  61. package/dist/src/chat-widget/components/VoiceCallOverlay.d.ts +65 -0
  62. package/dist/src/chat-widget/components/VoiceCallOverlay.d.ts.map +1 -0
  63. package/dist/src/chat-widget/components/VoiceInputArea.d.ts +26 -0
  64. package/dist/src/chat-widget/components/VoiceInputArea.d.ts.map +1 -0
  65. package/dist/src/chat-widget/components/index.d.ts +16 -0
  66. package/dist/src/chat-widget/components/index.d.ts.map +1 -0
  67. package/dist/src/chat-widget/contexts/AnimationContext.d.ts +69 -0
  68. package/dist/src/chat-widget/contexts/AnimationContext.d.ts.map +1 -0
  69. package/dist/src/chat-widget/hooks/useAnalytics.d.ts +19 -0
  70. package/dist/src/chat-widget/hooks/useAnalytics.d.ts.map +1 -0
  71. package/dist/src/chat-widget/hooks/useChatSocket.d.ts +35 -0
  72. package/dist/src/chat-widget/hooks/useChatSocket.d.ts.map +1 -0
  73. package/dist/src/chat-widget/hooks/useChatState.d.ts +23 -0
  74. package/dist/src/chat-widget/hooks/useChatState.d.ts.map +1 -0
  75. package/dist/src/chat-widget/hooks/useChatWidget.d.ts +50 -0
  76. package/dist/src/chat-widget/hooks/useChatWidget.d.ts.map +1 -0
  77. package/dist/src/chat-widget/hooks/useDarkMode.d.ts +6 -0
  78. package/dist/src/chat-widget/hooks/useDarkMode.d.ts.map +1 -0
  79. package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts +10 -0
  80. package/dist/src/chat-widget/hooks/useDynamicHeight.d.ts.map +1 -0
  81. package/dist/src/chat-widget/hooks/useFocusTrap.d.ts +34 -0
  82. package/dist/src/chat-widget/hooks/useFocusTrap.d.ts.map +1 -0
  83. package/dist/src/chat-widget/hooks/useHighContrast.d.ts +6 -0
  84. package/dist/src/chat-widget/hooks/useHighContrast.d.ts.map +1 -0
  85. package/dist/src/chat-widget/hooks/useIsMobile.d.ts +2 -0
  86. package/dist/src/chat-widget/hooks/useIsMobile.d.ts.map +1 -0
  87. package/dist/src/chat-widget/hooks/useNotifications.d.ts +23 -0
  88. package/dist/src/chat-widget/hooks/useNotifications.d.ts.map +1 -0
  89. package/dist/src/chat-widget/hooks/useRateLimit.d.ts +15 -0
  90. package/dist/src/chat-widget/hooks/useRateLimit.d.ts.map +1 -0
  91. package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts +10 -0
  92. package/dist/src/chat-widget/hooks/useSEOMetadata.d.ts.map +1 -0
  93. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts +12 -0
  94. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts.map +1 -0
  95. package/dist/src/chat-widget/i18n/LanguageContext.d.ts +33 -0
  96. package/dist/src/chat-widget/i18n/LanguageContext.d.ts.map +1 -0
  97. package/dist/src/chat-widget/i18n/index.d.ts +8 -0
  98. package/dist/src/chat-widget/i18n/index.d.ts.map +1 -0
  99. package/dist/src/chat-widget/i18n/translations.d.ts +177 -0
  100. package/dist/src/chat-widget/i18n/translations.d.ts.map +1 -0
  101. package/dist/src/chat-widget/i18n/useTranslations.d.ts +27 -0
  102. package/dist/src/chat-widget/i18n/useTranslations.d.ts.map +1 -0
  103. package/dist/src/chat-widget/index.d.ts +11 -0
  104. package/dist/src/chat-widget/index.d.ts.map +1 -0
  105. package/dist/src/chat-widget/types/index.d.ts +328 -0
  106. package/dist/src/chat-widget/types/index.d.ts.map +1 -0
  107. package/dist/src/chat-widget/types/socket.d.ts +107 -0
  108. package/dist/src/chat-widget/types/socket.d.ts.map +1 -0
  109. package/dist/src/chat-widget/utils/dateUtils.d.ts +33 -0
  110. package/dist/src/chat-widget/utils/dateUtils.d.ts.map +1 -0
  111. package/dist/src/chat-widget/utils/defaultAssets.d.ts +20 -0
  112. package/dist/src/chat-widget/utils/defaultAssets.d.ts.map +1 -0
  113. package/dist/src/chat-widget/utils/deviceId.d.ts +18 -0
  114. package/dist/src/chat-widget/utils/deviceId.d.ts.map +1 -0
  115. package/dist/src/chat-widget/utils/fileValidation.d.ts +75 -0
  116. package/dist/src/chat-widget/utils/fileValidation.d.ts.map +1 -0
  117. package/dist/src/chat-widget/utils/logger.d.ts +31 -0
  118. package/dist/src/chat-widget/utils/logger.d.ts.map +1 -0
  119. package/dist/src/chat-widget/utils/performance.d.ts +50 -0
  120. package/dist/src/chat-widget/utils/performance.d.ts.map +1 -0
  121. package/dist/src/chat-widget/utils/storage.d.ts +25 -0
  122. package/dist/src/chat-widget/utils/storage.d.ts.map +1 -0
  123. package/dist/src/chat-widget/utils/theme.d.ts +122 -0
  124. package/dist/src/chat-widget/utils/theme.d.ts.map +1 -0
  125. package/dist/src/chat-widget/utils/theme.examples.d.ts +47 -0
  126. package/dist/src/chat-widget/utils/theme.examples.d.ts.map +1 -0
  127. package/dist/src/chat-widget/utils/themes/index.d.ts +12 -0
  128. package/dist/src/chat-widget/utils/themes/index.d.ts.map +1 -0
  129. package/dist/src/chat-widget/voice/components/CallButton.d.ts +12 -0
  130. package/dist/src/chat-widget/voice/components/CallButton.d.ts.map +1 -0
  131. package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts +12 -0
  132. package/dist/src/chat-widget/voice/components/LiveCallOverlay.d.ts.map +1 -0
  133. package/dist/src/chat-widget/voice/components/VoiceButton.d.ts +13 -0
  134. package/dist/src/chat-widget/voice/components/VoiceButton.d.ts.map +1 -0
  135. package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts +12 -0
  136. package/dist/src/chat-widget/voice/components/VoiceChatOverlay.d.ts.map +1 -0
  137. package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts +12 -0
  138. package/dist/src/chat-widget/voice/components/WaveformVisualizer.d.ts.map +1 -0
  139. package/dist/src/chat-widget/voice/components/index.d.ts +10 -0
  140. package/dist/src/chat-widget/voice/components/index.d.ts.map +1 -0
  141. package/dist/src/chat-widget/voice/index.d.ts +11 -0
  142. package/dist/src/chat-widget/voice/index.d.ts.map +1 -0
  143. package/dist/src/chat-widget/voice/types.d.ts +232 -0
  144. package/dist/src/chat-widget/voice/types.d.ts.map +1 -0
  145. package/dist/src/chat-widget/voice/useLiveCall.d.ts +13 -0
  146. package/dist/src/chat-widget/voice/useLiveCall.d.ts.map +1 -0
  147. package/dist/src/chat-widget/voice/useVoiceChat.d.ts +13 -0
  148. package/dist/src/chat-widget/voice/useVoiceChat.d.ts.map +1 -0
  149. package/dist/src/chat-widget/voice/useVoiceState.d.ts +38 -0
  150. package/dist/src/chat-widget/voice/useVoiceState.d.ts.map +1 -0
  151. package/dist/src/lib/utils.d.ts +3 -0
  152. package/dist/src/lib/utils.d.ts.map +1 -0
  153. package/dist/standalone.d.ts +113 -0
  154. package/dist/standalone.d.ts.map +1 -0
  155. package/dist/stats-umd.html +4949 -0
  156. package/dist/stats.html +1 -1
  157. package/package.json +1 -1
@@ -0,0 +1,69 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { AnimationConfig, EffectsConfig } from '../types';
3
+ /**
4
+ * Default animation configuration - all premium features enabled
5
+ */
6
+ export declare const defaultAnimationConfig: Required<AnimationConfig>;
7
+ /**
8
+ * Default effects configuration - premium effects enabled
9
+ */
10
+ export declare const defaultEffectsConfig: Required<EffectsConfig>;
11
+ export interface PremiumConfigProviderProps {
12
+ children: ReactNode;
13
+ animations?: AnimationConfig;
14
+ effects?: EffectsConfig;
15
+ }
16
+ /**
17
+ * Provider for premium animation and effects configuration
18
+ * Wraps components to give them access to animation/effects settings
19
+ */
20
+ export declare function PremiumConfigProvider({ children, animations, effects, }: PremiumConfigProviderProps): import("react/jsx-runtime").JSX.Element;
21
+ /**
22
+ * Access animation configuration
23
+ * @returns Current animation config with all defaults applied
24
+ */
25
+ export declare function useAnimations(): Required<AnimationConfig>;
26
+ /**
27
+ * Access effects configuration
28
+ * @returns Current effects config with all defaults applied
29
+ */
30
+ export declare function useEffects(): Required<EffectsConfig>;
31
+ /**
32
+ * Check if animations are globally enabled
33
+ */
34
+ export declare function useAnimationsEnabled(): boolean;
35
+ /**
36
+ * Get animation duration with speed multiplier applied
37
+ * @param baseDuration - Base duration in ms
38
+ * @returns Adjusted duration
39
+ */
40
+ export declare function useAnimationDuration(baseDuration: number): number;
41
+ /**
42
+ * Get CSS class for message entry animation based on config
43
+ */
44
+ export declare function useMessageEntryClass(): string;
45
+ /**
46
+ * Get CSS class for typing indicator animation based on config
47
+ */
48
+ export declare function useTypingIndicatorClass(): string;
49
+ /**
50
+ * Get stagger delay for sequential animations
51
+ * @param index - Item index in sequence
52
+ * @returns Delay in ms
53
+ */
54
+ export declare function useStaggerDelay(index: number): number;
55
+ /**
56
+ * Hook for applying premium effects based on config
57
+ */
58
+ export declare function usePremiumEffects(): {
59
+ getGlassClass: () => "" | "backdrop-blur-md bg-white/80 dark:bg-black/80";
60
+ getShadowClass: () => "shadow-soft-xl" | "shadow-md";
61
+ getGlowClass: () => "" | "hover:shadow-primary/20";
62
+ getHoverLiftClass: () => "" | "hover:-translate-y-1 hover:shadow-lg transition-all";
63
+ getGradientClass: () => "" | "bg-gradient-to-br from-primary/10 to-transparent";
64
+ getShimmerClass: () => "animate-shimmer" | "animate-pulse";
65
+ triggerHaptic: () => void;
66
+ playSound: (type: "send" | "receive" | "notification") => void;
67
+ triggerParticles: (element: HTMLElement) => void;
68
+ };
69
+ //# sourceMappingURL=AnimationContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationContext.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/contexts/AnimationContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE9D;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,eAAe,CAU5D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAUxD,CAAA;AAMD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAA;IACnB,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,UAAU,EACV,OAAO,GACR,EAAE,0BAA0B,2CAyB5B;AAID;;;GAGG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAAC,eAAe,CAAC,CAEzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,QAAQ,CAAC,aAAa,CAAC,CAEpD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAY7C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAWhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;;sBAkBX,MAAM,GAAG,SAAS,GAAG,cAAc;gCAKzB,WAAW;EAM1C"}
@@ -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,35 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Hook optimizado para producción con soporte extendido de medios.
4
+ */
5
+ import { Socket } from 'socket.io-client';
6
+ import type { ClientToServerEvents, ServerToClientEvents } from '../types/socket';
7
+ import type { ChatMessage, ChatWidgetProps, PageContext } from '../types';
8
+ export interface UseChatSocketOptions {
9
+ apiKey: string;
10
+ apiBaseUrl: string;
11
+ agentId?: string;
12
+ pageContext?: PageContext;
13
+ userContext?: ChatWidgetProps['userContext'];
14
+ onMessage: (message: ChatMessage) => void;
15
+ onHistoryLoaded?: (messages: ChatMessage[]) => void;
16
+ onConnected: (sessionId: string, config?: any) => void;
17
+ onDisconnected: () => void;
18
+ onTyping: (isTyping: boolean) => void;
19
+ onError: (error: string) => void;
20
+ onLogin?: ChatWidgetProps['onLogin'];
21
+ onNavigate?: ChatWidgetProps['onNavigate'];
22
+ onEvent?: ChatWidgetProps['onEvent'];
23
+ onThemeUpdate?: (theme: any) => void;
24
+ }
25
+ export declare function useChatSocket(options: UseChatSocketOptions): {
26
+ isConnected: boolean;
27
+ isConnecting: boolean;
28
+ sendMessage: (content: string, type?: "text" | "image" | "audio" | "location" | "file") => string;
29
+ sendTyping: (isTyping: boolean) => void;
30
+ getSocket: () => Socket<ServerToClientEvents, ClientToServerEvents> | null;
31
+ requestHistory: () => void;
32
+ reconnect: () => void;
33
+ disconnect: () => void;
34
+ };
35
+ //# 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;AAIH,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EAGrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAmBzE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,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,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAA;IACnD,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;;;2BA0R7C,MAAM,SAAQ,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;;;;;;EAiE3E"}
@@ -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(agentId?: string): {
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;AAoGlE,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAkB;;;;;;;4BAmG9C,OAAO;yBAIP,OAAO;0BAbsB,WAAW;4BAiBvC,WAAW,EAAE;wBAId,MAAM,GAAG,IAAI;2BAId,MAAM;;;;EA6Bd"}
@@ -0,0 +1,50 @@
1
+ import type { ChatWidgetProps, ChatMessage, PageContext } from '../types';
2
+ import { BotEmotion } from '../components/Launcher';
3
+ interface UseChatWidgetOptions {
4
+ apiKey: string;
5
+ apiBaseUrl: string;
6
+ agentId?: string;
7
+ pageContext?: PageContext;
8
+ includeSEOMetadata?: boolean;
9
+ theme?: ChatWidgetProps['theme'];
10
+ mediaConfig?: ChatWidgetProps['mediaConfig'];
11
+ userContext?: ChatWidgetProps['userContext'];
12
+ onLogin?: ChatWidgetProps['onLogin'];
13
+ onNavigate?: ChatWidgetProps['onNavigate'];
14
+ onEvent?: ChatWidgetProps['onEvent'];
15
+ onStateChange?: ChatWidgetProps['onStateChange'];
16
+ onThemeUpdate?: (theme: any) => void;
17
+ }
18
+ /**
19
+ * Hook principal que maneja toda la lógica del widget de chat
20
+ * Incluye: estado, socket, mensajes, analytics, notificaciones, rate limiting
21
+ */
22
+ export declare function useChatWidget(options: UseChatWidgetOptions): {
23
+ state: import("../types").ChatState;
24
+ actions: {
25
+ toggleWindow: () => void;
26
+ openWindow: () => void;
27
+ closeWindow: () => void;
28
+ setConnected: (val: boolean) => void;
29
+ setTyping: (val: boolean) => void;
30
+ addMessage: (msg: ChatMessage) => void;
31
+ setMessages: (msgs: ChatMessage[]) => void;
32
+ setError: (err: string | null) => void;
33
+ setSessionId: (id: string) => void;
34
+ clearChat: () => void;
35
+ clearMessages: () => void;
36
+ };
37
+ unreadCount: number;
38
+ currentBotEmotion: BotEmotion;
39
+ isConnected: boolean;
40
+ getSocket: () => import("socket.io-client").Socket<import("../types/socket").ServerToClientEvents, import("../types/socket").ClientToServerEvents> | null;
41
+ handleToggle: () => void;
42
+ handleSendText: (text: string) => void;
43
+ handleSendAttachment: (file: File, type: "image" | "audio" | "file") => Promise<void>;
44
+ handleSendLocation: (location: {
45
+ latitude: number;
46
+ longitude: number;
47
+ }) => void;
48
+ };
49
+ export {};
50
+ //# 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,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,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;;;;;;;;;;;;;;;;;;;;2BAwIhD,MAAM;iCA6BA,IAAI,QAAQ,OAAO,GAAG,OAAO,GAAG,MAAM;mCAyCxC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;EAiGrD"}
@@ -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,WAqIxE"}
@@ -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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Focus management hook for accessible dialogs
4
+ *
5
+ * Principio: Single Responsibility - solo gestionar el foco del teclado
6
+ */
7
+ interface UseFocusTrapOptions {
8
+ /** Si el trap está activo */
9
+ enabled: boolean;
10
+ /** Elemento al que retornar el foco al desactivar */
11
+ returnFocusRef?: React.RefObject<HTMLElement>;
12
+ /** Callback al cerrar con Escape */
13
+ onEscape?: () => void;
14
+ }
15
+ /**
16
+ * Hook para atrapar el foco dentro de un contenedor (dialog, modal)
17
+ *
18
+ * Características:
19
+ * - Previene que Tab salga del contenedor
20
+ * - Retorna el foco al elemento anterior al cerrar
21
+ * - Cierra con tecla Escape
22
+ * - Compatible con lectores de pantalla
23
+ *
24
+ * @example
25
+ * const containerRef = useFocusTrap({
26
+ * enabled: isOpen,
27
+ * onEscape: handleClose
28
+ * })
29
+ *
30
+ * return <div ref={containerRef}>...</div>
31
+ */
32
+ export declare function useFocusTrap({ enabled, returnFocusRef, onEscape }: UseFocusTrapOptions): import("react").RefObject<HTMLDivElement | null>;
33
+ export {};
34
+ //# sourceMappingURL=useFocusTrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusTrap.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useFocusTrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,UAAU,mBAAmB;IAC3B,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,qDAAqD;IACrD,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC7C,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,mBAAmB,oDA+EtF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Hook para detectar y soportar modo de alto contraste (WCAG AAA)
4
+ */
5
+ export declare function useHighContrast(): boolean;
6
+ //# sourceMappingURL=useHighContrast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHighContrast.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useHighContrast.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,eAAe,YA4B9B"}
@@ -0,0 +1,2 @@
1
+ export declare function useIsMobile(breakpoint?: number): boolean;
2
+ //# sourceMappingURL=useIsMobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsMobile.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useIsMobile.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,UAAU,SAAM,WAkB3C"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Hook para notificaciones desktop y sonoras
4
+ */
5
+ import type { ChatMessage } from '../types';
6
+ export interface UseNotificationsOptions {
7
+ enabled?: boolean;
8
+ soundEnabled?: boolean;
9
+ desktopEnabled?: boolean;
10
+ botName?: string;
11
+ /** Custom logo URL. If not provided, uses bundled default avatar */
12
+ logoUrl?: string;
13
+ /** Custom notification sound URL. If not provided, uses bundled default sound */
14
+ notificationSoundUrl?: string;
15
+ }
16
+ export declare function useNotifications({ enabled, soundEnabled, desktopEnabled, botName, logoUrl, notificationSoundUrl, }?: UseNotificationsOptions): {
17
+ permission: NotificationPermission;
18
+ requestPermission: () => Promise<boolean>;
19
+ notify: (message: ChatMessage) => void;
20
+ playSound: () => void;
21
+ notifyWithSound: (message: ChatMessage) => void;
22
+ };
23
+ //# sourceMappingURL=useNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAI3C,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAc,EACd,YAAmB,EACnB,cAAqB,EACrB,OAAkB,EAClB,OAAO,EACP,oBAAoB,GACrB,GAAE,uBAA4B;;;sBA0CjB,WAAW;;+BA2DX,WAAW;EAcxB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @package @botuyo/chat-widget
3
+ * Hook para rate limiting y protección contra spam
4
+ */
5
+ export interface UseRateLimitOptions {
6
+ maxMessages: number;
7
+ windowMs: number;
8
+ }
9
+ export declare function useRateLimit(maxMessages?: number, windowMs?: number): {
10
+ isAllowed: () => boolean;
11
+ getRemainingAttempts: () => number;
12
+ getTimeUntilReset: () => number;
13
+ reset: () => void;
14
+ };
15
+ //# sourceMappingURL=useRateLimit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRateLimit.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useRateLimit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,YAAY,CAAC,WAAW,SAAK,EAAE,QAAQ,SAAQ;;;;;EA6C9D"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hook interno del widget para capturar metadata SEO del DOM
3
+ */
4
+ /**
5
+ * Hook para capturar metadata SEO
6
+ * @param enabled - Si está habilitado
7
+ * @param pathname - Pathname actual para detectar cambios de página
8
+ */
9
+ export declare function useSEOMetadata(enabled?: boolean): Record<string, any> | undefined;
10
+ //# sourceMappingURL=useSEOMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSEOMetadata.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useSEOMetadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiFH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,OAAe,mCAqBtD"}
@@ -0,0 +1,12 @@
1
+ import type { ChatTheme, BubbleStyles } from '../types';
2
+ /**
3
+ * Hook para gestionar el tema del widget
4
+ * Maneja el merge de temas con prioridades: proyecto > socket > default
5
+ * También gestiona alto contraste y estilos de burbujas
6
+ */
7
+ export declare function useWidgetTheme(projectTheme?: ChatTheme, socketTheme?: ChatTheme): {
8
+ mergedTheme: Required<Omit<ChatTheme, "defaultLocale" | "avatars" | "emotion" | "starterPrompt" | "launcherBorderRadius" | "borderRadius" | "bubbleStyles" | "promptPersistence" | "avatarScale" | "showPromptAvatar" | "height" | "bottom" | "animations" | "effects" | "avatar3dUrl">>;
9
+ mergedStyles: BubbleStyles;
10
+ getContainerStyle: (isOpen: boolean, isMobile: boolean, position?: "bottom-left" | "bottom-right") => React.CSSProperties;
11
+ };
12
+ //# sourceMappingURL=useWidgetTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWidgetTheme.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/hooks/useWidgetTheme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAqBvD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS;;;gCA+CpE,OAAO,YACL,OAAO,aACN,aAAa,GAAG,cAAc,KACxC,KAAK,CAAC,aAAa;EAqBvB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Contexto de idioma para el Chat Widget
3
+ * Permite cambio dinámico de idioma con persistencia en localStorage
4
+ */
5
+ import { type ReactNode } from 'react';
6
+ import { type SupportedLocale } from './translations';
7
+ interface LanguageContextType {
8
+ locale: SupportedLocale;
9
+ setLocale: (locale: SupportedLocale) => void;
10
+ }
11
+ interface LanguageProviderProps {
12
+ children: ReactNode;
13
+ defaultLocale?: SupportedLocale;
14
+ }
15
+ /**
16
+ * Provider de idioma con detección automática y persistencia
17
+ *
18
+ * @example
19
+ * <LanguageProvider>
20
+ * <ChatWidget />
21
+ * </LanguageProvider>
22
+ */
23
+ export declare function LanguageProvider({ children, defaultLocale }: LanguageProviderProps): import("react/jsx-runtime").JSX.Element;
24
+ /**
25
+ * Hook para acceder al idioma actual del widget
26
+ *
27
+ * @example
28
+ * const { locale, setLocale } = useLanguage()
29
+ * setLocale('en') // Cambiar a inglés
30
+ */
31
+ export declare function useLanguage(): LanguageContextType;
32
+ export {};
33
+ //# sourceMappingURL=LanguageContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageContext.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/i18n/LanguageContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACtF,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAA;AAErE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CAC7C;AAWD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,SAAS,CAAA;IACnB,aAAa,CAAC,EAAE,eAAe,CAAA;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,qBAAqB,2CAgDlF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,wBAI1B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sistema de internacionalización del Chat Widget
3
+ * Exportaciones centralizadas
4
+ */
5
+ export { useTranslations, t, default } from './useTranslations';
6
+ export { translations, detectLanguage, type SupportedLocale } from './translations';
7
+ export { LanguageProvider, useLanguage } from './LanguageContext';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/i18n/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Sistema de internacionalización del Chat Widget
3
+ * Idiomas soportados: español, inglés, portugués, francés
4
+ */
5
+ export declare const translations: {
6
+ es: {
7
+ online: string;
8
+ offline: string;
9
+ connecting: string;
10
+ con_amor_paseo_libre: string;
11
+ preview: string;
12
+ fotos: string;
13
+ ubicacion: string;
14
+ input_placeholder: string;
15
+ send: string;
16
+ attach_photo: string;
17
+ attach_location: string;
18
+ recording: string;
19
+ rate_limit_exceeded: string;
20
+ connection_error: string;
21
+ file_too_large: string;
22
+ invalid_file: string;
23
+ extracted: {
24
+ assistant: string;
25
+ anterior: string;
26
+ siguiente: string;
27
+ cerrar: string;
28
+ cerrar_chat: string;
29
+ abrir_chat: string;
30
+ ver_ubicacion: string;
31
+ };
32
+ accessibility: {
33
+ closeChat: string;
34
+ closeChatHint: string;
35
+ chatMessages: string;
36
+ messageHistory: string;
37
+ dialogDescription: string;
38
+ sendMessage: string;
39
+ sendMessageHint: string;
40
+ typeMessage: string;
41
+ botMessage: string;
42
+ userMessage: string;
43
+ messageFrom: string;
44
+ messageTime: string;
45
+ newMessage: string;
46
+ };
47
+ };
48
+ en: {
49
+ online: string;
50
+ offline: string;
51
+ connecting: string;
52
+ con_amor_paseo_libre: string;
53
+ preview: string;
54
+ fotos: string;
55
+ ubicacion: string;
56
+ input_placeholder: string;
57
+ send: string;
58
+ attach_photo: string;
59
+ attach_location: string;
60
+ recording: string;
61
+ rate_limit_exceeded: string;
62
+ connection_error: string;
63
+ file_too_large: string;
64
+ invalid_file: string;
65
+ extracted: {
66
+ assistant: string;
67
+ anterior: string;
68
+ siguiente: string;
69
+ cerrar: string;
70
+ cerrar_chat: string;
71
+ abrir_chat: string;
72
+ ver_ubicacion: string;
73
+ };
74
+ accessibility: {
75
+ closeChat: string;
76
+ closeChatHint: string;
77
+ chatMessages: string;
78
+ messageHistory: string;
79
+ dialogDescription: string;
80
+ sendMessage: string;
81
+ sendMessageHint: string;
82
+ typeMessage: string;
83
+ botMessage: string;
84
+ userMessage: string;
85
+ messageFrom: string;
86
+ messageTime: string;
87
+ newMessage: string;
88
+ };
89
+ };
90
+ pt: {
91
+ online: string;
92
+ offline: string;
93
+ connecting: string;
94
+ con_amor_paseo_libre: string;
95
+ preview: string;
96
+ fotos: string;
97
+ ubicacion: string;
98
+ input_placeholder: string;
99
+ send: string;
100
+ attach_photo: string;
101
+ attach_location: string;
102
+ recording: string;
103
+ rate_limit_exceeded: string;
104
+ connection_error: string;
105
+ file_too_large: string;
106
+ invalid_file: string;
107
+ extracted: {
108
+ assistant: string;
109
+ anterior: string;
110
+ siguiente: string;
111
+ cerrar: string;
112
+ cerrar_chat: string;
113
+ abrir_chat: string;
114
+ ver_ubicacion: string;
115
+ };
116
+ accessibility: {
117
+ closeChat: string;
118
+ closeChatHint: string;
119
+ chatMessages: string;
120
+ messageHistory: string;
121
+ dialogDescription: string;
122
+ sendMessage: string;
123
+ sendMessageHint: string;
124
+ typeMessage: string;
125
+ botMessage: string;
126
+ userMessage: string;
127
+ messageFrom: string;
128
+ messageTime: string;
129
+ newMessage: string;
130
+ };
131
+ };
132
+ fr: {
133
+ online: string;
134
+ offline: string;
135
+ connecting: string;
136
+ con_amor_paseo_libre: string;
137
+ preview: string;
138
+ fotos: string;
139
+ ubicacion: string;
140
+ input_placeholder: string;
141
+ send: string;
142
+ attach_photo: string;
143
+ attach_location: string;
144
+ recording: string;
145
+ rate_limit_exceeded: string;
146
+ connection_error: string;
147
+ file_too_large: string;
148
+ invalid_file: string;
149
+ extracted: {
150
+ assistant: string;
151
+ anterior: string;
152
+ siguiente: string;
153
+ cerrar: string;
154
+ cerrar_chat: string;
155
+ abrir_chat: string;
156
+ ver_ubicacion: string;
157
+ };
158
+ accessibility: {
159
+ closeChat: string;
160
+ closeChatHint: string;
161
+ chatMessages: string;
162
+ messageHistory: string;
163
+ dialogDescription: string;
164
+ sendMessage: string;
165
+ sendMessageHint: string;
166
+ typeMessage: string;
167
+ botMessage: string;
168
+ userMessage: string;
169
+ messageFrom: string;
170
+ messageTime: string;
171
+ newMessage: string;
172
+ };
173
+ };
174
+ };
175
+ export type SupportedLocale = keyof typeof translations;
176
+ export declare function detectLanguage(): SupportedLocale;
177
+ //# sourceMappingURL=translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../../src/chat-widget/i18n/translations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNxB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAA;AAGvD,wBAAgB,cAAc,IAAI,eAAe,CAKhD"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Hook de internacionalización para el Chat Widget
3
+ * Sistema multi-idioma con detección automática y contexto global
4
+ */
5
+ import { type SupportedLocale } from './translations';
6
+ /**
7
+ * Hook para acceder a las traducciones con soporte multi-idioma
8
+ * Usa el contexto global de idioma automáticamente
9
+ *
10
+ * @example
11
+ * const { t, setLocale, currentLocale } = useTranslations()
12
+ * t('online') // 'En línea' (si locale es 'es')
13
+ * t('extracted.cerrar') // 'Cerrar'
14
+ * setLocale('en') // Cambiar a inglés
15
+ */
16
+ export declare function useTranslations(namespace?: string): {
17
+ t: (key: string) => string;
18
+ setLocale: (locale: SupportedLocale) => void;
19
+ currentLocale: "es" | "en" | "pt" | "fr";
20
+ };
21
+ /**
22
+ * Función para obtener traducción directamente sin hook
23
+ * Útil para uso fuera de componentes
24
+ */
25
+ export declare function t(key: string, locale?: SupportedLocale): string;
26
+ export default useTranslations;
27
+ //# sourceMappingURL=useTranslations.d.ts.map