@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.
- 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.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-Bdq6NarX.js} +2 -2
- package/dist/{chunk-audio-DG3X3uze.js.map → chunk-audio-Bdq6NarX.js.map} +1 -1
- package/dist/{chunk-chat-ui-C0sPAQ4e.js → chunk-chat-ui-BUOt7M33.js} +13 -13
- package/dist/{chunk-chat-ui-C0sPAQ4e.js.map → chunk-chat-ui-BUOt7M33.js.map} +1 -1
- package/dist/{chunk-gallery-BDe3OAec.js → chunk-gallery-C_5eKbwu.js} +2 -2
- package/dist/{chunk-gallery-BDe3OAec.js.map → chunk-gallery-C_5eKbwu.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,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 @@
|
|
|
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 @@
|
|
|
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
|