@theonexai/chartsconnect-chat-widget 1.0.18

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 (69) hide show
  1. package/README.md +270 -0
  2. package/dist/ChatWidget-Bs0XV_7i.js +1356 -0
  3. package/dist/ChatWidget-Bs0XV_7i.js.map +1 -0
  4. package/dist/ChatWidget-PcqRrOmi.cjs +2 -0
  5. package/dist/ChatWidget-PcqRrOmi.cjs.map +1 -0
  6. package/dist/adapters/vue/index.d.ts +7 -0
  7. package/dist/adapters/vue/index.d.ts.map +1 -0
  8. package/dist/adapters/vue/useChatMode.d.ts +21 -0
  9. package/dist/adapters/vue/useChatMode.d.ts.map +1 -0
  10. package/dist/components/ChatWidget.d.ts +39 -0
  11. package/dist/components/ChatWidget.d.ts.map +1 -0
  12. package/dist/composables/useChatWidget.d.ts +35 -0
  13. package/dist/composables/useChatWidget.d.ts.map +1 -0
  14. package/dist/core/stateManager.d.ts +136 -0
  15. package/dist/core/stateManager.d.ts.map +1 -0
  16. package/dist/core/types.d.ts +64 -0
  17. package/dist/core/types.d.ts.map +1 -0
  18. package/dist/entry/next.d.ts +9 -0
  19. package/dist/entry/next.d.ts.map +1 -0
  20. package/dist/entry/nuxt.d.ts +12 -0
  21. package/dist/entry/nuxt.d.ts.map +1 -0
  22. package/dist/entry/react.d.ts +10 -0
  23. package/dist/entry/react.d.ts.map +1 -0
  24. package/dist/entry/vanilla.d.ts +33 -0
  25. package/dist/entry/vanilla.d.ts.map +1 -0
  26. package/dist/entry/vite.d.ts +11 -0
  27. package/dist/entry/vite.d.ts.map +1 -0
  28. package/dist/entry/vue.d.ts +12 -0
  29. package/dist/entry/vue.d.ts.map +1 -0
  30. package/dist/hooks/useChatMode.d.ts +17 -0
  31. package/dist/hooks/useChatMode.d.ts.map +1 -0
  32. package/dist/index.cjs.js +2 -0
  33. package/dist/index.cjs.js.map +1 -0
  34. package/dist/index.d.ts +21 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.esm.js +1383 -0
  37. package/dist/index.esm.js.map +1 -0
  38. package/dist/nuxt.cjs.js +2 -0
  39. package/dist/nuxt.cjs.js.map +1 -0
  40. package/dist/nuxt.esm.js +9 -0
  41. package/dist/nuxt.esm.js.map +1 -0
  42. package/dist/sanitize-C8MB41vY.cjs +4 -0
  43. package/dist/sanitize-C8MB41vY.cjs.map +1 -0
  44. package/dist/sanitize-Cm1kskSD.js +1842 -0
  45. package/dist/sanitize-Cm1kskSD.js.map +1 -0
  46. package/dist/services/chatService.d.ts +144 -0
  47. package/dist/services/chatService.d.ts.map +1 -0
  48. package/dist/services/dialogflowBackendService.d.ts +36 -0
  49. package/dist/services/dialogflowBackendService.d.ts.map +1 -0
  50. package/dist/services/dialogflowClient.d.ts +36 -0
  51. package/dist/services/dialogflowClient.d.ts.map +1 -0
  52. package/dist/services/sessionManager.d.ts +13 -0
  53. package/dist/services/sessionManager.d.ts.map +1 -0
  54. package/dist/styles.css +1 -0
  55. package/dist/types.d.ts +5 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/utils/dialogflowHandler.d.ts +31 -0
  58. package/dist/utils/dialogflowHandler.d.ts.map +1 -0
  59. package/dist/utils/frameworkDetector.d.ts +17 -0
  60. package/dist/utils/frameworkDetector.d.ts.map +1 -0
  61. package/dist/utils/sanitize.d.ts +25 -0
  62. package/dist/utils/sanitize.d.ts.map +1 -0
  63. package/dist/utils/ssr.d.ts +35 -0
  64. package/dist/utils/ssr.d.ts.map +1 -0
  65. package/dist/vue.cjs.js +2 -0
  66. package/dist/vue.cjs.js.map +1 -0
  67. package/dist/vue.esm.js +9 -0
  68. package/dist/vue.esm.js.map +1 -0
  69. package/package.json +114 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogflowClient.d.ts","sourceRoot":"","sources":["../../src/services/dialogflowClient.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiKD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA0EhG;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,YAAY,CAAC,CAqHvB"}
@@ -0,0 +1,13 @@
1
+ declare class ChatSessionManager {
2
+ private sessionId;
3
+ constructor();
4
+ loadSessionId(): string | null;
5
+ saveSessionId(sessionId: string | null): void;
6
+ updateSessionFromResponse(responseData: any): void;
7
+ getSessionId(): string;
8
+ getSessionHeader(): Record<string, string>;
9
+ }
10
+ export declare function getSessionManager(): ChatSessionManager;
11
+ export declare function createSessionManager(): ChatSessionManager;
12
+ export default ChatSessionManager;
13
+ //# sourceMappingURL=sessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionManager.d.ts","sourceRoot":"","sources":["../../src/services/sessionManager.ts"],"names":[],"mappings":"AAIA,cAAM,kBAAkB;IACtB,OAAO,CAAC,SAAS,CAAuB;;IAMxC,aAAa,IAAI,MAAM,GAAG,IAAI;IAO9B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAW7C,yBAAyB,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IAOlD,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAK3C;AAKD,wBAAgB,iBAAiB,IAAI,kBAAkB,CAKtD;AAED,wBAAgB,oBAAoB,IAAI,kBAAkB,CAEzD;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ .custom-chat-widget,.custom-welcome-popup,.custom-chat-window,.custom-chat-toggle-btn{font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.custom-welcome-popup{position:fixed;bottom:20px;right:90px;background:linear-gradient(135deg,#091e3e 0% 100%);color:#fff;padding:20px;border-radius:12px;box-shadow:0 8px 24px #00000026;max-width:350px;z-index:99998;animation:customSlideIn .4s ease-out;cursor:pointer;transition:transform .2s}.custom-welcome-popup:hover{transform:translateY(-2px);box-shadow:0 10px 28px #0003}@keyframes customSlideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.custom-welcome-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px}.custom-welcome-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.custom-close-popup{background:none;border:none;color:#fff;font-size:24px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;opacity:.8;transition:opacity .2s}.custom-close-popup:hover{opacity:1}.custom-welcome-message{font-size:14px;line-height:1.5;margin-bottom:10px}.custom-welcome-cta{font-size:13px;opacity:.9;font-style:italic}.custom-chat-toggle-btn{position:fixed;bottom:20px;right:20px;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,#091e3e 0% 100%);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;z-index:99999;transition:transform .2s,box-shadow .2s}.custom-chat-toggle-btn:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.custom-chat-toggle-btn:active{transform:scale(.95)}.custom-chat-window{position:fixed;bottom:20px;right:20px;width:380px;height:600px;max-height:calc(100vh - 40px);background:#fff;border-radius:16px;box-shadow:0 8px 32px #0003;display:flex;flex-direction:column;z-index:99999;animation:customChatSlideUp .3s ease-out;overflow:hidden}@keyframes customChatSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.custom-chat-header{background:#091e3e;color:#fff;padding:20px;display:flex;justify-content:space-between;align-items:flex-start;flex-shrink:0}.custom-chat-header-content{flex:1}.custom-chat-title{font-size:18px;font-weight:600;margin-bottom:4px}.custom-chat-subtitle{font-size:12px;opacity:.9}.custom-mode-indicator{font-size:11px;margin-left:4px;opacity:.85}.custom-mode-badge{font-size:10px;margin-top:6px;padding:4px 8px;background:#ffffff26;border-radius:12px;display:inline-block;font-weight:500;letter-spacing:.5px}.custom-agent-info{font-size:11px;margin-top:4px;opacity:.9;display:flex;align-items:center;gap:4px}.custom-agent-label{opacity:.8}.custom-agent-name{font-weight:500}.custom-chat-close-btn{background:none;border:none;color:#fff;font-size:28px;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;opacity:.8;transition:opacity .2s;line-height:1;border-radius:50%}.custom-chat-close-btn:hover{opacity:1;background:#ffffff1a}.custom-chat-messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:12px;background:#f8f9fa}.custom-chat-messages::-webkit-scrollbar{width:6px}.custom-chat-messages::-webkit-scrollbar-track{background:transparent}.custom-chat-messages::-webkit-scrollbar-thumb{background:#ddd;border-radius:3px}.custom-chat-messages::-webkit-scrollbar-thumb:hover{background:#bbb}.custom-chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:#666}.custom-chat-empty-icon{font-size:48px;margin-bottom:12px}.custom-chat-empty p{font-size:16px;line-height:1.5}.custom-message{display:flex;flex-direction:column;max-width:75%;animation:customMessageFadeIn .3s ease-out}@keyframes customMessageFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.custom-message-user{align-self:flex-end}.custom-message-bot,.custom-message-agent{align-self:flex-start}.custom-message-content{padding:12px 16px;border-radius:16px;word-wrap:break-word;line-height:1.5;font-size:14px}.custom-message-user .custom-message-content{background:#091e3e;color:#fff;border-bottom-right-radius:4px}.custom-message-bot .custom-message-content,.custom-message-agent .custom-message-content{background:#fff;color:#333;border-bottom-left-radius:4px;box-shadow:0 2px 4px #0000001a}.custom-message-time{font-size:10px;color:#999;margin-top:4px;padding:0 4px}.custom-chips-container{margin-top:12px;display:flex;flex-direction:column;gap:8px}.custom-chips-group{display:flex;flex-wrap:wrap;gap:8px}.custom-chip-button{background:#fff;border:1.5px solid #091e3e;color:#091e3e;padding:8px 16px;border-radius:20px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap;box-shadow:0 1px 3px #0000001a}.custom-chip-button:hover{background:linear-gradient(135deg,#091e3e 0% 100%);color:#fff;transform:translateY(-1px);box-shadow:0 2px 6px #2d7a4f4d}.custom-chip-button:active{transform:translateY(0);box-shadow:0 1px 3px #0000001a}.custom-typing-indicator{display:flex;gap:4px;padding:12px 16px;background:#fff;border-radius:16px 16px 16px 4px;box-shadow:0 2px 4px #0000001a;width:fit-content}.custom-typing-indicator span{width:8px;height:8px;border-radius:50%;background:#999;animation:customTypingBounce 1.4s infinite ease-in-out}.custom-typing-indicator span:nth-child(1){animation-delay:-.32s}.custom-typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes customTypingBounce{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1);opacity:1}}.custom-agent-typing-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;margin:4px 0;color:#666;font-size:14px;font-style:italic}.custom-typing-dots{display:inline-flex;gap:2px}.custom-typing-dots span{display:inline-block;width:4px;height:4px;border-radius:50%;background-color:#666;animation:customTypingBounce 1.4s infinite ease-in-out}.custom-typing-dots span:nth-child(2){animation-delay:-.16s}.custom-typing-dots span:nth-child(3){animation-delay:-.32s}.custom-typing-text{color:#666}.custom-chat-input-form{display:flex;padding:16px;background:#fff;border-top:1px solid #e0e0e0;gap:8px;flex-shrink:0}.custom-chat-resolved-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-top:1px solid #e0e0e0;background:#f6f8ff;color:#1f2a44;flex-shrink:0}.custom-chat-resolved-text{flex:1;font-size:13px;line-height:1.35}.custom-chat-resolved-btn{background:#091e3e;color:#fff;border:none;border-radius:10px;padding:10px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:transform .15s,opacity .15s;flex-shrink:0}.custom-chat-resolved-btn:hover:not(:disabled){transform:scale(1.02)}.custom-chat-resolved-btn:disabled{opacity:.6;cursor:not-allowed}.custom-chat-input{flex:1;padding:12px 16px;border:1px solid #e0e0e0;border-radius:24px;outline:none;font-size:14px;transition:border-color .2s;font-family:inherit}.custom-chat-input:focus{border-color:#091e3e}.custom-chat-input:disabled{background:#f5f5f5;cursor:not-allowed}.custom-chat-send-btn{width:44px;height:44px;border-radius:50%;background:#091e3e;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,opacity .2s;flex-shrink:0}.custom-chat-send-btn:hover:not(:disabled){transform:scale(1.05)}.custom-chat-send-btn:active:not(:disabled){transform:scale(.95)}.custom-chat-send-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 480px){.custom-welcome-popup{right:10px;left:10px;bottom:90px;max-width:none}.custom-chat-window{width:calc(100vw - 20px);height:calc(100vh - 20px);bottom:10px;right:10px;border-radius:12px}.custom-chat-toggle-btn{bottom:10px;right:10px;width:56px;height:56px}.custom-message{max-width:85%}}
@@ -0,0 +1,5 @@
1
+ export type { DialogflowBackendConfig, SessionResponse, ChatResponse, } from './services/dialogflowBackendService';
2
+ export type { SupportChatSession, SupportMessage, ChatInfo, WebSocketMessage, ChatServiceConfig, } from './services/chatService';
3
+ export type { ChatWidgetProps } from './components/ChatWidget';
4
+ export type { ChatMode, UseChatModeReturn } from './hooks/useChatMode';
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,MAAM,qCAAqC,CAAC;AAE7C,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface DialogflowResponse {
2
+ queryResult?: {
3
+ responseMessages?: any[];
4
+ fulfillmentText?: string;
5
+ parameters?: {
6
+ fields?: {
7
+ [key: string]: any;
8
+ };
9
+ };
10
+ intent?: {
11
+ displayName?: string;
12
+ };
13
+ };
14
+ [key: string]: any;
15
+ }
16
+ export interface ProcessedDialogflowResponse {
17
+ response: string;
18
+ richContent?: any;
19
+ handoff: boolean;
20
+ timestamp: string;
21
+ }
22
+ /**
23
+ * Check if Dialogflow response contains handoff trigger
24
+ * Handoff is triggered when response contains {"handoff": true}
25
+ */
26
+ export declare function checkForHandoff(response: DialogflowResponse): boolean;
27
+ /**
28
+ * Process Dialogflow response and extract relevant information
29
+ */
30
+ export declare function processDialogflowResponse(response: DialogflowResponse): ProcessedDialogflowResponse;
31
+ //# sourceMappingURL=dialogflowHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogflowHandler.d.ts","sourceRoot":"","sources":["../../src/utils/dialogflowHandler.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE;QACZ,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;aACpB,CAAC;SACH,CAAC;QACF,MAAM,CAAC,EAAE;YACP,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAqCrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,GAC3B,2BAA2B,CA4B7B"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Framework Detection Utility
3
+ * Detects which framework is available in the runtime environment
4
+ */
5
+ export type Framework = 'react' | 'vue' | 'next' | 'nuxt' | 'vite' | 'vanilla';
6
+ export interface FrameworkInfo {
7
+ name: Framework;
8
+ version?: string;
9
+ isSSR: boolean;
10
+ }
11
+ /**
12
+ * Detects the framework in the current environment
13
+ */
14
+ export declare function detectFramework(): FrameworkInfo;
15
+ export declare function setFramework(framework: Framework): void;
16
+ export declare function getFramework(): FrameworkInfo;
17
+ //# sourceMappingURL=frameworkDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../src/utils/frameworkDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAwE/C;AAyGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED,wBAAgB,YAAY,IAAI,aAAa,CAQ5C"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * HTML Sanitization Utilities
3
+ * Safe HTML rendering with XSS protection
4
+ */
5
+ /**
6
+ * Sanitize HTML string
7
+ * Removes dangerous scripts while preserving safe HTML
8
+ */
9
+ export declare function sanitizeHtml(html: string, options?: {
10
+ allowedTags?: string[];
11
+ allowedAttributes?: Record<string, string[]>;
12
+ }): string;
13
+ /**
14
+ * Linkify text (convert URLs to links) with sanitization
15
+ */
16
+ export declare function linkifyText(text: string): string;
17
+ /**
18
+ * Safe linkify for Vue v-html (alias for linkifyText)
19
+ */
20
+ export declare function safeLinkifyText(text: string): string;
21
+ /**
22
+ * Sanitize plain text (remove all HTML)
23
+ */
24
+ export declare function sanitizeText(text: string): string;
25
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IACnD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C,GAAG,MAAM,CAmBT;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAehD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SSR-Safe Utilities
3
+ * Safe access to browser APIs that don't exist in SSR
4
+ */
5
+ /**
6
+ * Safe localStorage access
7
+ */
8
+ export declare function safeLocalStorage(): Storage | {
9
+ getItem: () => null;
10
+ setItem: () => void;
11
+ removeItem: () => void;
12
+ clear: () => void;
13
+ key: () => null;
14
+ length: number;
15
+ };
16
+ /**
17
+ * Safe sessionStorage access
18
+ */
19
+ export declare function safeSessionStorage(): Storage | {
20
+ getItem: () => null;
21
+ setItem: () => void;
22
+ removeItem: () => void;
23
+ clear: () => void;
24
+ key: () => null;
25
+ length: number;
26
+ };
27
+ /**
28
+ * Check if code is running in browser
29
+ */
30
+ export declare function isBrowser(): boolean;
31
+ /**
32
+ * Safe document access
33
+ */
34
+ export declare function safeDocument(): Document | null;
35
+ //# sourceMappingURL=ssr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../src/utils/ssr.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,GAAG;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAYA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,GAAG;IAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAYA;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAK9C"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ChatWidget-PcqRrOmi.cjs");exports.ChatWidget=e.ChatWidgetComponent,exports.WidgetStateManager=e.WidgetStateManager,exports.default=e.ChatWidgetComponent,exports.useChatWidget=e.useChatWidget;
2
+ //# sourceMappingURL=vue.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { C as ChatWidgetComponent } from "./ChatWidget-Bs0XV_7i.js";
2
+ import { W, u } from "./ChatWidget-Bs0XV_7i.js";
3
+ export {
4
+ ChatWidgetComponent as ChatWidget,
5
+ W as WidgetStateManager,
6
+ ChatWidgetComponent as default,
7
+ u as useChatWidget
8
+ };
9
+ //# sourceMappingURL=vue.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/package.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "name": "@theonexai/chartsconnect-chat-widget",
3
+ "version": "1.0.18",
4
+ "type": "module",
5
+ "description": "chartsconnect AI Chat Widget - Universal JavaScript library supporting React, Next.js, Vue, Nuxt, and Vite",
6
+ "main": "./dist/index.cjs.js",
7
+ "module": "./dist/index.esm.js",
8
+ "types": "./dist/index.d.ts",
9
+ "style": "./dist/styles.css",
10
+ "sideEffects": [
11
+ "*.css",
12
+ "*.vue"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "import": "./dist/index.esm.js",
17
+ "require": "./dist/index.cjs.js",
18
+ "types": "./dist/index.d.ts"
19
+ },
20
+ "./react": {
21
+ "import": "./dist/react.esm.js",
22
+ "require": "./dist/react.cjs.js",
23
+ "types": "./dist/react.d.ts"
24
+ },
25
+ "./next": {
26
+ "import": "./dist/react.esm.js",
27
+ "require": "./dist/react.cjs.js",
28
+ "types": "./dist/next.d.ts"
29
+ },
30
+ "./vue": {
31
+ "import": "./dist/vue.esm.js",
32
+ "require": "./dist/vue.cjs.js",
33
+ "types": "./dist/entry/vue.d.ts"
34
+ },
35
+ "./nuxt": {
36
+ "import": "./dist/nuxt.esm.js",
37
+ "require": "./dist/nuxt.cjs.js",
38
+ "types": "./dist/entry/nuxt.d.ts"
39
+ },
40
+ "./vite": {
41
+ "import": "./dist/index.esm.js",
42
+ "require": "./dist/index.cjs.js",
43
+ "types": "./dist/vite.d.ts"
44
+ },
45
+ "./styles": "./dist/styles.css",
46
+ "./dist/styles.css": "./dist/styles.css",
47
+ "./package.json": "./package.json"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "README.md",
52
+ "ARCHITECTURE.md"
53
+ ],
54
+ "scripts": {
55
+ "build": "vite build && tsc --emitDeclarationOnly --outDir dist",
56
+ "dev": "vite build --watch",
57
+ "prepublishOnly": "npm run build",
58
+ "type-check": "tsc --noEmit"
59
+ },
60
+ "peerDependencies": {
61
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
62
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
63
+ "vue": "^3.0.0 || ^3.1.0 || ^3.2.0 || ^3.3.0 || ^3.4.0 || ^3.5.0"
64
+ },
65
+ "peerDependenciesMeta": {
66
+ "react": {
67
+ "optional": true
68
+ },
69
+ "react-dom": {
70
+ "optional": true
71
+ },
72
+ "vue": {
73
+ "optional": true
74
+ }
75
+ },
76
+ "dependencies": {
77
+ "jose": "^5.0.0",
78
+ "dompurify": "^3.0.0",
79
+ "isomorphic-dompurify": "^2.9.0"
80
+ },
81
+ "devDependencies": {
82
+ "@types/node": "^25.3.0",
83
+ "@types/react": "^18.3.5",
84
+ "@types/react-dom": "^18.3.0",
85
+ "@vitejs/plugin-react": "^4.3.1",
86
+ "@vitejs/plugin-vue": "^5.0.0",
87
+ "@vue/compiler-sfc": "^3.5.0",
88
+ "react": "^18.3.1",
89
+ "react-dom": "^18.3.1",
90
+ "terser": "^5.31.0",
91
+ "typescript": "^5.6.2",
92
+ "vite": "^5.0.0",
93
+ "vue": "^3.5.28"
94
+ },
95
+ "keywords": [
96
+ "chat",
97
+ "widget",
98
+ "react",
99
+ "vue",
100
+ "nextjs",
101
+ "nuxt",
102
+ "vite",
103
+ "universal",
104
+ "framework-agnostic",
105
+ "dialogflow",
106
+ "ai",
107
+ "chatbot"
108
+ ],
109
+ "author": "",
110
+ "license": "MIT",
111
+ "publishConfig": {
112
+ "access": "public"
113
+ }
114
+ }