@botuyo/chat-widget-standalone 1.0.2 → 1.0.3

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 (40) hide show
  1. package/dist/ChatWidget-DQS2YAHX.js +33 -0
  2. package/dist/ChatWidget-DQS2YAHX.js.map +1 -0
  3. package/dist/botuyo-chat.css +1 -1
  4. package/dist/{botuyo-chat.js → botuyo-chat.es.js} +2 -2
  5. package/dist/botuyo-chat.es.js.map +1 -0
  6. package/dist/botuyo-chat.umd.css +1 -0
  7. package/dist/botuyo-chat.umd.js +2 -0
  8. package/dist/botuyo-chat.umd.js.map +1 -0
  9. package/dist/{chunk-audio-BT2WWPfS.js → chunk-audio-DG36n3qS.js} +2 -2
  10. package/dist/{chunk-audio-BT2WWPfS.js.map → chunk-audio-DG36n3qS.js.map} +1 -1
  11. package/dist/{chunk-chat-ui-BHfnFN_3.js → chunk-chat-ui-TnfA4tMe.js} +42 -41
  12. package/dist/chunk-chat-ui-TnfA4tMe.js.map +1 -0
  13. package/dist/{chunk-gallery-CHMxgXlB.js → chunk-gallery-DsrT5sHg.js} +2 -2
  14. package/dist/{chunk-gallery-CHMxgXlB.js.map → chunk-gallery-DsrT5sHg.js.map} +1 -1
  15. package/dist/src/chat-widget/ChatWidget.d.ts +1 -0
  16. package/dist/src/chat-widget/ChatWidget.d.ts.map +1 -1
  17. package/dist/src/chat-widget/components/ChatWindow.d.ts.map +1 -1
  18. package/dist/src/chat-widget/components/Launcher.d.ts.map +1 -1
  19. package/dist/src/chat-widget/components/MessageBubble.d.ts +1 -0
  20. package/dist/src/chat-widget/components/MessageBubble.d.ts.map +1 -1
  21. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts +1 -0
  22. package/dist/src/chat-widget/components/MessageBubble.stories.d.ts.map +1 -1
  23. package/dist/src/chat-widget/contexts/AnimationContext.d.ts +69 -0
  24. package/dist/src/chat-widget/contexts/AnimationContext.d.ts.map +1 -0
  25. package/dist/src/chat-widget/hooks/useChatSocket.d.ts.map +1 -1
  26. package/dist/src/chat-widget/hooks/useChatWidget.d.ts.map +1 -1
  27. package/dist/src/chat-widget/hooks/useWidgetTheme.d.ts +1 -1
  28. package/dist/src/chat-widget/types/index.d.ts +52 -0
  29. package/dist/src/chat-widget/types/index.d.ts.map +1 -1
  30. package/dist/src/chat-widget/utils/theme.d.ts +2 -2
  31. package/dist/src/chat-widget/utils/theme.d.ts.map +1 -1
  32. package/dist/src/chat-widget/utils/theme.examples.d.ts +2 -2
  33. package/dist/src/chat-widget/utils/theme.examples.d.ts.map +1 -1
  34. package/dist/stats-umd.html +4949 -0
  35. package/dist/stats.html +1 -1
  36. package/package.json +6 -2
  37. package/dist/ChatWidget-BCHSZnMy.js +0 -33
  38. package/dist/ChatWidget-BCHSZnMy.js.map +0 -1
  39. package/dist/botuyo-chat.js.map +0 -1
  40. package/dist/chunk-chat-ui-BHfnFN_3.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"botuyo-chat.js","sources":["../standalone.tsx"],"sourcesContent":["/**\r\n * BotUyo Chat Widget - Standalone Version\r\n * Entry point for CDN distribution\r\n * \r\n * This file creates a global `BotUyoChat` object that can be used\r\n * to initialize the chat widget on any website without React/Next.js\r\n * \r\n * OPTIMIZATION: Code splitting enabled\r\n * - Core bundle loads only Launcher (~80KB)\r\n * - ChatWidget lazy loads on user interaction (~200KB)\r\n * - Total reduction: 306KB -> ~100KB initial load (66% reduction)\r\n */\r\n\r\nimport { createRoot, Root } from 'react-dom/client';\r\nimport React, { lazy, Suspense } from 'react';\r\nimport type { ChatWidgetProps } from './src/chat-widget/types';\r\nimport { LanguageProvider } from './src/chat-widget/i18n/LanguageContext';\r\n\r\n// Import standalone styles\r\nimport './styles.css';\r\n\r\n// Lazy load ChatWidget - only loaded when user opens chat\r\nconst ChatWidget = lazy(() => \r\n import('./src/chat-widget/ChatWidget').then(module => ({\r\n default: module.ChatWidget\r\n }))\r\n);\r\n\r\ninterface CSSVariables {\r\n background?: string;\r\n foreground?: string;\r\n card?: string;\r\n cardForeground?: string;\r\n primary?: string;\r\n primaryForeground?: string;\r\n muted?: string;\r\n mutedForeground?: string;\r\n border?: string;\r\n destructive?: string;\r\n radius?: string;\r\n spacing1?: string;\r\n spacing2?: string;\r\n spacing3?: string;\r\n spacing4?: string;\r\n spacing5?: string;\r\n spacing6?: string;\r\n spacing8?: string;\r\n}\r\n\r\ninterface StandaloneConfig extends Partial<ChatWidgetProps> {\r\n // Override required fields to make them optional for standalone\r\n apiKey: string;\r\n apiBaseUrl: string;\r\n theme?: ChatWidgetProps['theme'] & {\r\n cssVariables?: CSSVariables;\r\n };\r\n}\r\n\r\nclass BotUyoChatWidget {\r\n private root: Root | null = null;\r\n private container: HTMLElement | null = null;\r\n private config: StandaloneConfig | null = null;\r\n\r\n /**\r\n * Initialize the chat widget\r\n * @param config - Widget configuration\r\n * @returns Widget instance for chaining\r\n */\r\n init(config: StandaloneConfig): this {\r\n this.config = config;\r\n this.render();\r\n return this;\r\n }\r\n\r\n /**\r\n * Render the widget into the DOM\r\n */\r\n private render(): void {\r\n if (!this.config) {\r\n console.error('[BotUyoChat] No configuration provided');\r\n return;\r\n }\r\n\r\n // Create container if it doesn't exist\r\n if (!this.container) {\r\n this.container = document.createElement('div');\r\n this.container.id = 'botuyo-chat-widget-root';\r\n this.container.style.position = 'fixed';\r\n this.container.style.zIndex = '999999';\r\n document.body.appendChild(this.container);\r\n }\r\n\r\n // Apply CSS variables to container if provided\r\n if (this.config.theme?.cssVariables) {\r\n const vars = this.config.theme.cssVariables;\r\n const varMap: Record<string, string | undefined> = {\r\n background: vars.background,\r\n foreground: vars.foreground,\r\n card: vars.card,\r\n cardForeground: vars.cardForeground,\r\n primary: vars.primary,\r\n primaryForeground: vars.primaryForeground,\r\n muted: vars.muted,\r\n mutedForeground: vars.mutedForeground,\r\n border: vars.border,\r\n destructive: vars.destructive,\r\n radius: vars.radius,\r\n // Design System - Spacing (no spacing7 - no existe en CSSVariables)\r\n spacing1: vars.spacing1,\r\n spacing2: vars.spacing2,\r\n spacing3: vars.spacing3,\r\n spacing4: vars.spacing4,\r\n spacing5: vars.spacing5,\r\n spacing6: vars.spacing6,\r\n spacing8: vars.spacing8,\r\n };\r\n\r\n Object.entries(varMap).forEach(([key, value]) => {\r\n if (value !== undefined) {\r\n this.container!.style.setProperty(`--${key}`, value);\r\n }\r\n });\r\n }\r\n\r\n // Create React root\r\n if (!this.root) {\r\n this.root = createRoot(this.container);\r\n }\r\n\r\n // Merge config with defaults (user config takes precedence)\r\n const widgetProps: ChatWidgetProps = {\r\n apiKey: this.config.apiKey,\r\n apiBaseUrl: this.config.apiBaseUrl,\r\n theme: {\r\n // Defaults\r\n primaryColor: '#10b981',\r\n botName: 'Asistente Virtual',\r\n // logoUrl is optional - components use DEFAULT_AVATAR_URL if not provided\r\n position: 'bottom-right',\r\n welcomeMessage: '¡Hola! 👋 ¿En qué puedo ayudarte?',\r\n inputPlaceholder: 'Escribe tu mensaje...',\r\n borderRadius: '0.75rem',\r\n launcherBorderRadius: '50%',\r\n // User config overrides defaults\r\n ...this.config.theme,\r\n },\r\n userContext: this.config.userContext,\r\n pageContext: this.config.pageContext,\r\n includeSEOMetadata: this.config.includeSEOMetadata ?? false,\r\n onNavigate: this.config.onNavigate,\r\n onLogin: this.config.onLogin,\r\n onEvent: this.config.onEvent,\r\n onStateChange: this.config.onStateChange,\r\n };\r\n\r\n // Render React component with Suspense for code splitting\r\n const suspenseElement = React.createElement(\r\n Suspense,\r\n {\r\n fallback: React.createElement(\r\n 'div',\r\n {\r\n style: {\r\n position: 'fixed',\r\n bottom: '24px',\r\n right: '24px',\r\n width: '60px',\r\n height: '60px',\r\n borderRadius: '50%',\r\n backgroundColor: widgetProps.theme?.primaryColor || '#10b981',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\r\n cursor: 'wait',\r\n }\r\n },\r\n React.createElement(\r\n 'div',\r\n {\r\n style: {\r\n width: '24px',\r\n height: '24px',\r\n border: '3px solid rgba(255, 255, 255, 0.3)',\r\n borderTopColor: '#fff',\r\n borderRadius: '50%',\r\n animation: 'spin 1s linear infinite',\r\n }\r\n }\r\n )\r\n )\r\n },\r\n React.createElement(ChatWidget, widgetProps)\r\n );\r\n\r\n this.root.render(\r\n React.createElement(\r\n LanguageProvider,\r\n { \r\n defaultLocale: this.config.theme?.defaultLocale,\r\n children: suspenseElement\r\n }\r\n )\r\n );\r\n\r\n console.log('[BotUyoChat] Widget initialized', widgetProps);\r\n }\r\n\r\n /**\r\n * Update widget configuration\r\n * @param config - Partial configuration to update\r\n */\r\n update(config: Partial<StandaloneConfig>): void {\r\n if (!this.config) {\r\n console.error('[BotUyoChat] Widget not initialized');\r\n return;\r\n }\r\n\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n theme: {\r\n ...this.config.theme,\r\n ...config.theme,\r\n },\r\n };\r\n\r\n this.render();\r\n }\r\n\r\n /**\r\n * Destroy the widget and clean up\r\n */\r\n destroy(): void {\r\n if (this.root) {\r\n this.root.unmount();\r\n this.root = null;\r\n }\r\n\r\n if (this.container && this.container.parentNode) {\r\n this.container.parentNode.removeChild(this.container);\r\n this.container = null;\r\n }\r\n\r\n this.config = null;\r\n console.log('[BotUyoChat] Widget destroyed');\r\n }\r\n\r\n /**\r\n * Open the chat window programmatically\r\n */\r\n open(): void {\r\n // This will be implemented by dispatching a custom event\r\n // that the widget listens to\r\n window.dispatchEvent(new CustomEvent('botuyo-chat:open'));\r\n }\r\n\r\n /**\r\n * Close the chat window programmatically\r\n */\r\n close(): void {\r\n window.dispatchEvent(new CustomEvent('botuyo-chat:close'));\r\n }\r\n\r\n /**\r\n * Send a message programmatically\r\n * @param message - Message text\r\n */\r\n sendMessage(message: string): void {\r\n window.dispatchEvent(\r\n new CustomEvent('botuyo-chat:send-message', {\r\n detail: { message },\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get current widget state\r\n */\r\n getState(): { isOpen: boolean; messageCount: number } | null {\r\n // This would need to be implemented with proper state management\r\n return null;\r\n }\r\n}\r\n\r\n// Create global instance\r\nconst instance = new BotUyoChatWidget();\r\n\r\n// Expose to window\r\ndeclare global {\r\n interface Window {\r\n BotUyoChat: BotUyoChatWidget;\r\n }\r\n}\r\n\r\nwindow.BotUyoChat = instance;\r\n\r\n// Export for module systems\r\nexport default instance;\r\nexport { BotUyoChatWidget };\r\nexport type { StandaloneConfig };\r\n"],"names":["ChatWidget","lazy","import","then","module","default","BotUyoChatWidget","root","container","config","init","this","render","console","error","document","createElement","id","style","position","zIndex","body","appendChild","theme","cssVariables","vars","varMap","background","foreground","card","cardForeground","primary","primaryForeground","muted","mutedForeground","border","destructive","radius","spacing1","spacing2","spacing3","spacing4","spacing5","spacing6","spacing8","Object","entries","forEach","key","value","setProperty","createRoot","widgetProps","apiKey","apiBaseUrl","primaryColor","botName","welcomeMessage","inputPlaceholder","borderRadius","launcherBorderRadius","userContext","pageContext","includeSEOMetadata","onNavigate","onLogin","onEvent","onStateChange","suspenseElement","React","Suspense","fallback","bottom","right","width","height","backgroundColor","display","alignItems","justifyContent","boxShadow","cursor","borderTopColor","animation","LanguageProvider","defaultLocale","children","log","update","destroy","unmount","parentNode","removeChild","open","window","dispatchEvent","CustomEvent","close","sendMessage","message","detail","getState","instance","BotUyoChat"],"mappings":"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"}