@schmitech/chatbot-widget 0.6.2 → 0.6.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.
- package/dist/{_baseUniq-BPMphbq5-DMP9r7Vq.js → _baseUniq-BPMphbq5-xiRWQlDn.js} +1 -1
- package/dist/{arc-D9rhTKV0-CJ8LWPjh.js → arc-D9rhTKV0-3XdW6Lry.js} +1 -1
- package/dist/{architecture-U656AL7Q-BFNI3st4-DvKvVX9r.js → architecture-U656AL7Q-BFNI3st4-ChEUjpe5.js} +1 -1
- package/dist/{architectureDiagram-VXUJARFQ-BiqZtsDe-CYIgkUOK.js → architectureDiagram-VXUJARFQ-BiqZtsDe-rYpYn0Hz.js} +3 -3
- package/dist/{blockDiagram-VD42YOAC-zcRIdFTD-CD2wucRu.js → blockDiagram-VD42YOAC-zcRIdFTD-B54KiQJD.js} +5 -5
- package/dist/{c4Diagram-YG6GDRKO-DYXNcDX4-D9N-19L1.js → c4Diagram-YG6GDRKO-DYXNcDX4-B9fXQAMg.js} +2 -2
- package/dist/{channel-CUIutAfm-o4y9epAJ.js → channel-CUIutAfm-COC3Ib4R.js} +1 -1
- package/dist/chatbot-widget.es.js +1 -1
- package/dist/chatbot-widget.umd.js +307 -307
- package/dist/{chunk-4BX2VUAB-DAh9ktmY-D0dvKuQ8.js → chunk-4BX2VUAB-DAh9ktmY-CF6YTNXg.js} +1 -1
- package/dist/{chunk-55IACEB6-Cza7pcpr-CZLIdy7J.js → chunk-55IACEB6-Cza7pcpr-C1E53ZSc.js} +1 -1
- package/dist/{chunk-B4BG7PRW-BTUSpeKy-DkeOeNjN.js → chunk-B4BG7PRW-BTUSpeKy-CXaYsx4a.js} +4 -4
- package/dist/{chunk-DI55MBZ5-DKt4WII7-CI83hF6w.js → chunk-DI55MBZ5-DKt4WII7-CjsnNRFb.js} +3 -3
- package/dist/{chunk-FMBD7UC4-DdcCR8w3-C6skh5kz.js → chunk-FMBD7UC4-DdcCR8w3-BbYkKjQZ.js} +1 -1
- package/dist/{chunk-QN33PNHL-v6AkzOl1-BzCLMEQ4.js → chunk-QN33PNHL-v6AkzOl1-DrzKpDUJ.js} +1 -1
- package/dist/{chunk-QZHKN3VN-DVJOrqBZ-C9U4vuhS.js → chunk-QZHKN3VN-DVJOrqBZ-BQORk0pj.js} +1 -1
- package/dist/{chunk-TZMSLE5B-G2jJHqli-Dyg_6-74.js → chunk-TZMSLE5B-G2jJHqli-B_BRSOS0.js} +1 -1
- package/dist/{classDiagram-v2-WZHVMYZB-CxmgTanh-BWwIycXo.js → classDiagram-2ON5EDUG-CxmgTanh-ByLirDpd.js} +2 -2
- package/dist/{classDiagram-2ON5EDUG-CxmgTanh-BWwIycXo.js → classDiagram-v2-WZHVMYZB-CxmgTanh-ByLirDpd.js} +2 -2
- package/dist/{clone-CsNB4mMi-BnUGc5TV.js → clone-CsNB4mMi-B2bGL_Hr.js} +1 -1
- package/dist/{cose-bilkent-S5V4N54A-BRr2Y6dg-DpInmTtB.js → cose-bilkent-S5V4N54A-BRr2Y6dg-C4O3AMLV.js} +1 -1
- package/dist/{dagre-6UL2VRFP-DX8gNHmJ-Bh5foYg4.js → dagre-6UL2VRFP-DX8gNHmJ-BSzSR8Xh.js} +5 -5
- package/dist/{diagram-PSM6KHXK-DNX818To-BxzyrHRF.js → diagram-PSM6KHXK-DNX818To-D60Hp_rL.js} +4 -4
- package/dist/{diagram-QEK2KX5R-BDO6hKtm-YT5ZKMET.js → diagram-QEK2KX5R-BDO6hKtm-BHvRInjZ.js} +3 -3
- package/dist/{diagram-S2PKOQOG-IEqaDwzi-JACscn1D.js → diagram-S2PKOQOG-IEqaDwzi-CZZkmLuc.js} +3 -3
- package/dist/{erDiagram-Q2GNP2WA-DbLpN8Jp-DFNoJJAG.js → erDiagram-Q2GNP2WA-DbLpN8Jp-902zC-_U.js} +4 -4
- package/dist/{flowDiagram-NV44I4VS-pJlHae8Y-D9-ShBKg.js → flowDiagram-NV44I4VS-pJlHae8Y-hM8e9jah.js} +5 -5
- package/dist/{ganttDiagram-JELNMOA3-J0Tkq5TR-URJOR5tK.js → ganttDiagram-JELNMOA3-J0Tkq5TR-C8n0Mtt1.js} +1 -1
- package/dist/{gitGraph-F6HP7TQM-CD3YuciB-BSVnvRqM.js → gitGraph-F6HP7TQM-CD3YuciB-WOZqeAgY.js} +1 -1
- package/dist/{gitGraphDiagram-NY62KEGX-DgYonpsZ-B9GX0gjB.js → gitGraphDiagram-NY62KEGX-DgYonpsZ-CAVA4-Vo.js} +4 -4
- package/dist/{graph-BpcfrHXY-DZbL_C8k.js → graph-BpcfrHXY-Dllj_YdG.js} +2 -2
- package/dist/{index-B999KNUm.js → index-DlxA4QQ9.js} +8716 -8702
- package/dist/{index-DvNpGWs7-CE_3qYnr.js → index-DvNpGWs7-CTu7Fgm8.js} +1 -1
- package/dist/{info-NVLQJR56-yPC6AWqF-B0jsh29f.js → info-NVLQJR56-yPC6AWqF-CQWIUnLc.js} +1 -1
- package/dist/{infoDiagram-WHAUD3N6-C3JLOAnb-C7t6NXkk.js → infoDiagram-WHAUD3N6-C3JLOAnb-o3ipZ1gK.js} +2 -2
- package/dist/{journeyDiagram-XKPGCS4Q-CfjB2Qdf-CkfVra-9.js → journeyDiagram-XKPGCS4Q-CfjB2Qdf-nD3bX36U.js} +4 -4
- package/dist/{kanban-definition-3W4ZIXB7-CrW8yVmd-Cw5eIMY1.js → kanban-definition-3W4ZIXB7-CrW8yVmd-C_Okjmcp.js} +2 -2
- package/dist/{layout-bsfAhWjc-BBmYLHVM.js → layout-bsfAhWjc-fb3F3QBs.js} +4 -4
- package/dist/{mermaid-parser.core-3GIbpcw--D7vIgZz5.js → mermaid-parser.core-3GIbpcw--KxsyRnD0.js} +10 -10
- package/dist/{min-C2aDz5ZK-BeI8zU9q.js → min-C2aDz5ZK-NndI1eE7.js} +2 -2
- package/dist/{mindmap-definition-VGOIOE7T-Dj37RkY_-BusCy3Z8.js → mindmap-definition-VGOIOE7T-Dj37RkY_-BXffQH_4.js} +3 -3
- package/dist/{packet-BFZMPI3H-3ROFuof--B49_1TDY.js → packet-BFZMPI3H-3ROFuof--C96yO55O.js} +1 -1
- package/dist/{pie-7BOR55EZ-BZ_QeD6P-CeR-QKeV.js → pie-7BOR55EZ-BZ_QeD6P-Bs0c_r6N.js} +1 -1
- package/dist/{pieDiagram-ADFJNKIX-BiQvDx8I-t39yNieT.js → pieDiagram-ADFJNKIX-BiQvDx8I-DnApOdvY.js} +4 -4
- package/dist/{quadrantDiagram-AYHSOK5B-D4b-YFzI-gytgF9RS.js → quadrantDiagram-AYHSOK5B-D4b-YFzI-DrTslixM.js} +1 -1
- package/dist/{radar-NHE76QYJ-BkSncUeS-Bv7-BPfH.js → radar-NHE76QYJ-BkSncUeS-jHSdaVBc.js} +1 -1
- package/dist/{requirementDiagram-UZGBJVZJ-km07nlVd-CPpzB35g.js → requirementDiagram-UZGBJVZJ-km07nlVd-C-mMa1KG.js} +3 -3
- package/dist/{sankeyDiagram-TZEHDZUN-LfuSRRbf-D1dzqjat.js → sankeyDiagram-TZEHDZUN-LfuSRRbf-4X6kl_ss.js} +1 -1
- package/dist/{sequenceDiagram-WL72ISMW-CQ4J-0_7-DG43Yzzp.js → sequenceDiagram-WL72ISMW-CQ4J-0_7-CEQiE3WJ.js} +3 -3
- package/dist/{stateDiagram-FKZM4ZOC-JtogJwt6-DYeoN3ij.js → stateDiagram-FKZM4ZOC-JtogJwt6-YmKguJGd.js} +4 -4
- package/dist/{stateDiagram-v2-4FDKWEC3-DuQ7UaeU-DEYWrtWD.js → stateDiagram-v2-4FDKWEC3-DuQ7UaeU-D6r92VaJ.js} +2 -2
- package/dist/{timeline-definition-IT6M3QCI-Cs3NnF2M-Y4dkTMae.js → timeline-definition-IT6M3QCI-Cs3NnF2M-BigQwSNM.js} +2 -2
- package/dist/{treemap-KMMF4GRG-CkW25-tn-TR1YbThq.js → treemap-KMMF4GRG-CkW25-tn-CkfndsG5.js} +1 -1
- package/dist/{xychartDiagram-PRI3JC2R-JzAaXa5z-BjWkQaXb.js → xychartDiagram-PRI3JC2R-JzAaXa5z-k94imfkQ.js} +1 -1
- package/package.json +1 -1
- package/dist/ChatWidget.d.ts +0 -11
- package/dist/chatbot-widget.bundle.js +0 -10804
- package/dist/config/index.d.ts +0 -81
- package/dist/hooks/useAnimationManagement.d.ts +0 -16
- package/dist/hooks/useInputManagement.d.ts +0 -21
- package/dist/hooks/useScrollManagement.d.ts +0 -17
- package/dist/index.d.ts +0 -19
- package/dist/shared/styles.d.ts +0 -76
- package/dist/store/chatStore.d.ts +0 -19
- package/dist/ui/ChatInput.d.ts +0 -17
- package/dist/ui/Message.d.ts +0 -22
- package/dist/ui/MessagesList.d.ts +0 -32
- package/dist/utils/contentFiltering.d.ts +0 -12
- package/dist/utils/sessionManager.d.ts +0 -2
package/dist/config/index.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
export interface ChatConfig {
|
|
2
|
-
header: {
|
|
3
|
-
title: string;
|
|
4
|
-
};
|
|
5
|
-
theme: {
|
|
6
|
-
primary: string;
|
|
7
|
-
secondary: string;
|
|
8
|
-
background: string;
|
|
9
|
-
mode?: 'light' | 'dark' | 'system';
|
|
10
|
-
text: {
|
|
11
|
-
primary: string;
|
|
12
|
-
secondary: string;
|
|
13
|
-
inverse: string;
|
|
14
|
-
};
|
|
15
|
-
input: {
|
|
16
|
-
background: string;
|
|
17
|
-
border: string;
|
|
18
|
-
};
|
|
19
|
-
message: {
|
|
20
|
-
user: string;
|
|
21
|
-
userText: string;
|
|
22
|
-
assistant: string;
|
|
23
|
-
assistantText?: string;
|
|
24
|
-
};
|
|
25
|
-
suggestedQuestions: {
|
|
26
|
-
questionsBackground: string;
|
|
27
|
-
text: string;
|
|
28
|
-
highlightedBackground: string;
|
|
29
|
-
};
|
|
30
|
-
chatButton: {
|
|
31
|
-
background: string;
|
|
32
|
-
hoverBackground?: string;
|
|
33
|
-
borderColor?: string;
|
|
34
|
-
iconColor?: string;
|
|
35
|
-
iconBorderColor?: string;
|
|
36
|
-
iconName?: string;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
welcome: {
|
|
40
|
-
title: string;
|
|
41
|
-
description: string;
|
|
42
|
-
};
|
|
43
|
-
suggestedQuestions: Array<{
|
|
44
|
-
text: string;
|
|
45
|
-
query: string;
|
|
46
|
-
}>;
|
|
47
|
-
}
|
|
48
|
-
export declare const defaultTheme: {
|
|
49
|
-
primary: string;
|
|
50
|
-
secondary: string;
|
|
51
|
-
background: string;
|
|
52
|
-
mode: "light";
|
|
53
|
-
text: {
|
|
54
|
-
primary: string;
|
|
55
|
-
secondary: string;
|
|
56
|
-
inverse: string;
|
|
57
|
-
};
|
|
58
|
-
input: {
|
|
59
|
-
background: string;
|
|
60
|
-
border: string;
|
|
61
|
-
};
|
|
62
|
-
message: {
|
|
63
|
-
user: string;
|
|
64
|
-
userText: string;
|
|
65
|
-
assistant: string;
|
|
66
|
-
};
|
|
67
|
-
suggestedQuestions: {
|
|
68
|
-
questionsBackground: string;
|
|
69
|
-
text: string;
|
|
70
|
-
highlightedBackground: string;
|
|
71
|
-
};
|
|
72
|
-
chatButton: {
|
|
73
|
-
background: string;
|
|
74
|
-
hoverBackground: string;
|
|
75
|
-
borderColor: string;
|
|
76
|
-
iconColor: string;
|
|
77
|
-
iconBorderColor: string;
|
|
78
|
-
iconName: string;
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
export declare const getChatConfig: () => ChatConfig;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface AnimationManagementReturn {
|
|
2
|
-
isAnimating: boolean;
|
|
3
|
-
animatedMessagesRef: React.MutableRefObject<Set<string>>;
|
|
4
|
-
typingProgressRef: React.MutableRefObject<Map<string, number>>;
|
|
5
|
-
isTypingRef: React.MutableRefObject<boolean>;
|
|
6
|
-
lastMessageRef: React.RefObject<HTMLDivElement>;
|
|
7
|
-
markMessageAnimated: (id: string, messagesLength: number, scrollToBottom: () => void) => void;
|
|
8
|
-
hasBeenAnimated: (id: string) => boolean;
|
|
9
|
-
clearAnimationTrackers: () => void;
|
|
10
|
-
setIsAnimating: (value: boolean) => void;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Custom hook for managing typing animations and animation state
|
|
14
|
-
* Handles message animation tracking, progress persistence, and animation lifecycle
|
|
15
|
-
*/
|
|
16
|
-
export declare const useAnimationManagement: () => AnimationManagementReturn;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export interface InputManagementReturn {
|
|
2
|
-
message: string;
|
|
3
|
-
isFocused: boolean;
|
|
4
|
-
inputRef: React.RefObject<HTMLTextAreaElement>;
|
|
5
|
-
handleMessageChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
6
|
-
handleKeyDown: (e: React.KeyboardEvent) => void;
|
|
7
|
-
handleSendMessage: () => void;
|
|
8
|
-
setIsFocused: (focused: boolean) => void;
|
|
9
|
-
clearMessage: () => void;
|
|
10
|
-
focusInput: () => void;
|
|
11
|
-
}
|
|
12
|
-
export interface InputManagementProps {
|
|
13
|
-
onSendMessage: (message: string) => void;
|
|
14
|
-
isLoading: boolean;
|
|
15
|
-
isOpen: boolean;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Custom hook for managing message input state and interactions
|
|
19
|
-
* Handles input validation, keyboard shortcuts, and focus management
|
|
20
|
-
*/
|
|
21
|
-
export declare const useInputManagement: ({ onSendMessage, isLoading, isOpen }: InputManagementProps) => InputManagementReturn;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface ScrollManagementReturn {
|
|
2
|
-
showScrollTop: boolean;
|
|
3
|
-
showScrollBottom: boolean;
|
|
4
|
-
isScrolling: boolean;
|
|
5
|
-
messagesContainerRef: React.RefObject<HTMLDivElement>;
|
|
6
|
-
messagesEndRef: React.RefObject<HTMLDivElement>;
|
|
7
|
-
shouldScrollRef: React.MutableRefObject<boolean>;
|
|
8
|
-
scrollTimeoutRef: React.MutableRefObject<number | undefined>;
|
|
9
|
-
scrollToBottom: (immediate?: boolean) => void;
|
|
10
|
-
scrollToTop: () => void;
|
|
11
|
-
handleScroll: () => void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Custom hook for managing scroll behavior in the chat messages container
|
|
15
|
-
* Handles scroll buttons visibility, smooth scrolling, and scroll position tracking
|
|
16
|
-
*/
|
|
17
|
-
export declare const useScrollManagement: (isAnimating: boolean) => ScrollManagementReturn;
|
package/dist/index.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ChatWidget, ChatWidgetProps } from './ChatWidget';
|
|
2
|
-
import { useChatStore } from './store/chatStore';
|
|
3
|
-
import './index.css';
|
|
4
|
-
import { getChatConfig, ChatConfig } from './config/index';
|
|
5
|
-
export { ChatWidget, useChatStore, getChatConfig };
|
|
6
|
-
export type { ChatWidgetProps, ChatConfig };
|
|
7
|
-
export default ChatWidget;
|
|
8
|
-
export declare function getApiUrl(): string;
|
|
9
|
-
export declare function getApiKey(): string;
|
|
10
|
-
export declare function setApiUrl(url: string): void;
|
|
11
|
-
export declare function setApiKey(key: string): void;
|
|
12
|
-
export declare function updateWidgetConfig(config: Partial<ChatConfig>): void;
|
|
13
|
-
export declare function injectChatWidget(config: {
|
|
14
|
-
apiUrl: string;
|
|
15
|
-
apiKey: string;
|
|
16
|
-
sessionId?: string;
|
|
17
|
-
containerSelector?: string;
|
|
18
|
-
widgetConfig?: Partial<ChatConfig>;
|
|
19
|
-
}): void;
|
package/dist/shared/styles.d.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULT_MAX_SUGGESTED_QUESTION_LENGTH = 120;
|
|
2
|
-
export declare const DEFAULT_MAX_SUGGESTED_QUESTION_QUERY_LENGTH = 200;
|
|
3
|
-
export declare let CHAT_CONSTANTS: {
|
|
4
|
-
MAX_MESSAGE_LENGTH: number;
|
|
5
|
-
MAX_SUGGESTED_QUESTION_LENGTH: number;
|
|
6
|
-
MAX_SUGGESTED_QUESTION_QUERY_LENGTH: number;
|
|
7
|
-
WINDOW_DIMENSIONS: {
|
|
8
|
-
readonly HEIGHT: "600px";
|
|
9
|
-
readonly MAX_HEIGHT: "calc(100vh - 80px)";
|
|
10
|
-
readonly BREAKPOINTS: {
|
|
11
|
-
readonly SM: 640;
|
|
12
|
-
readonly MD: 768;
|
|
13
|
-
readonly LG: 1024;
|
|
14
|
-
};
|
|
15
|
-
readonly WIDTHS: {
|
|
16
|
-
readonly SM: "480px";
|
|
17
|
-
readonly MD: "600px";
|
|
18
|
-
readonly LG: "700px";
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
SCROLL_THRESHOLDS: {
|
|
22
|
-
readonly BOTTOM_THRESHOLD: 10;
|
|
23
|
-
readonly TOP_THRESHOLD: 10;
|
|
24
|
-
readonly SHOW_SCROLL_TOP_OFFSET: 200;
|
|
25
|
-
};
|
|
26
|
-
ANIMATIONS: {
|
|
27
|
-
readonly SCROLL_TIMEOUT: 300;
|
|
28
|
-
readonly TOGGLE_DELAY: 100;
|
|
29
|
-
readonly ANIMATION_SCROLL_INTERVAL: 100;
|
|
30
|
-
readonly COPY_FEEDBACK_DURATION: 2000;
|
|
31
|
-
readonly VISIBILITY_SKIP_THRESHOLD: 1000;
|
|
32
|
-
};
|
|
33
|
-
BUTTON_SIZES: {
|
|
34
|
-
readonly CHAT_BUTTON: {
|
|
35
|
-
readonly width: "68px";
|
|
36
|
-
readonly height: "68px";
|
|
37
|
-
};
|
|
38
|
-
readonly SEND_BUTTON: {
|
|
39
|
-
readonly width: "52px";
|
|
40
|
-
readonly height: "52px";
|
|
41
|
-
};
|
|
42
|
-
readonly ICON_SIZES: {
|
|
43
|
-
readonly HEADER: 28;
|
|
44
|
-
readonly WELCOME: 56;
|
|
45
|
-
readonly BUTTON: 20;
|
|
46
|
-
readonly SEND: 24;
|
|
47
|
-
readonly MINIMIZE: 28;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Global CSS styles for the ChatWidget component
|
|
53
|
-
*/
|
|
54
|
-
export declare const CHAT_WIDGET_STYLES = "\n body, button, input, textarea {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n }\n \n /* Complete focus ring removal - covers all browsers and scenarios */\n textarea,\n textarea:focus,\n textarea:focus-visible,\n input,\n input:focus,\n input:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n border-color: inherit !important;\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n \n /* Alternative: Uncomment for subtle light focus ring instead of complete removal */\n /*\n textarea:focus,\n textarea:focus-visible {\n outline: 2px solid rgba(203, 213, 225, 0.4) !important;\n outline-offset: -1px !important;\n box-shadow: 0 0 0 1px rgba(203, 213, 225, 0.2) !important;\n }\n */\n \n /* Remove webkit/safari specific styling */\n textarea::-webkit-input-placeholder,\n input::-webkit-input-placeholder {\n -webkit-appearance: none;\n }\n \n /* Ensure buttons also don't show focus rings */\n button:focus,\n button:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n /* Enhanced animations for modern feel */\n @keyframes slideInUp {\n 0% { \n opacity: 0; \n transform: translateY(20px) scale(0.95); \n }\n 100% { \n opacity: 1; \n transform: translateY(0) scale(1); \n }\n }\n\n @keyframes slideOutDown {\n 0% { \n opacity: 1; \n transform: translateY(0) scale(1); \n }\n 100% { \n opacity: 0; \n transform: translateY(20px) scale(0.95); \n }\n }\n\n .animate-slide-in-up {\n animation: slideInUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n .animate-slide-out-down {\n animation: slideOutDown 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes pulseGlow {\n 0%, 100% { \n box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);\n }\n 50% { \n box-shadow: 0 0 0 8px rgba(59, 130, 246, 0);\n }\n }\n\n .animate-pulse-glow {\n animation: pulseGlow 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes messageEntry {\n 0% { \n opacity: 0; \n transform: translateY(10px) scale(0.98);\n }\n 100% { \n opacity: 1; \n transform: translateY(0) scale(1);\n }\n }\n\n .animate-message-entry {\n animation: messageEntry 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes buttonHover {\n 0% { transform: translateY(0) scale(1); }\n 100% { transform: translateY(-2px) scale(1.05); }\n }\n\n .animate-button-hover:hover {\n animation: buttonHover 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n \n @keyframes fadeInOut {\n 0% { opacity: 0; transform: translateY(4px); }\n 20% { opacity: 1; transform: translateY(0); }\n 80% { opacity: 1; transform: translateY(0); }\n 100% { opacity: 0; transform: translateY(-4px); }\n }\n .animate-fade-in-out {\n animation: fadeInOut 2s ease-in-out forwards;\n }\n \n @keyframes bounce-gentle {\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-8px); }\n }\n .animate-bounce-gentle {\n animation: bounce-gentle 3s ease-in-out infinite;\n animation-delay: 2s;\n }\n\n @keyframes float {\n 0%, 100% { transform: translateY(0px) rotate(0deg) scale(1); }\n 25% { transform: translateY(-8px) rotate(2deg) scale(1.02); }\n 50% { transform: translateY(-4px) rotate(-1deg) scale(1); }\n 75% { transform: translateY(-6px) rotate(1deg) scale(1.01); }\n }\n .animate-float {\n animation: float 2.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n \n /* Modern typing dots animation */\n @keyframes dotWave {\n 0%, 60%, 100% {\n transform: translateY(0) scale(1);\n background-color: #9ca3af;\n }\n 30% {\n transform: translateY(-10px) scale(1.1);\n background-color: #6b7280;\n }\n }\n \n .typing-dots-container {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 0;\n }\n \n .typing-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #9ca3af;\n animation: dotWave 1.4s ease-in-out infinite;\n }\n \n .typing-dot:nth-child(1) {\n animation-delay: 0s;\n }\n \n .typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n }\n \n .typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n /* Glassmorphism effects */\n .glass-effect {\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(255, 255, 255, 0.3);\n }\n\n .glass-effect-dark {\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n background: rgba(30, 41, 59, 0.8);\n border: 1px solid rgba(255, 255, 255, 0.1);\n }\n\n /* Custom scrollbar */\n .custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n transition: background 0.2s ease;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n\n /* Horizontal scrollbar for markdown content (tables, code blocks, etc.) */\n .markdown-content-wrapper {\n overflow-x: scroll !important; /* Use 'scroll' to always show scrollbar when content overflows */\n overflow-y: visible !important;\n -webkit-overflow-scrolling: touch;\n /* Force scrollbar to always be visible when content overflows */\n scrollbar-width: thin;\n scrollbar-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.15);\n }\n\n /* WebKit scrollbar - always visible when overflow */\n .markdown-content-wrapper::-webkit-scrollbar {\n height: 12px;\n width: 12px;\n /* Force scrollbar to always display */\n display: block;\n -webkit-appearance: none;\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.15);\n border-radius: 6px;\n margin: 4px;\n /* Make track always visible */\n -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 6px;\n border: 2px solid transparent;\n background-clip: padding-box;\n transition: background 0.2s ease;\n /* Ensure thumb is always visible */\n min-height: 20px;\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.6);\n background-clip: padding-box;\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-thumb:active {\n background: rgba(0, 0, 0, 0.7);\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0.1);\n }\n\n /* Ensure scrollbar styling is consistent across browsers */\n @supports (-webkit-appearance: none) {\n .markdown-content-wrapper::-webkit-scrollbar {\n -webkit-appearance: none;\n }\n }\n\n /* Force scrollbar to always be visible when content overflows (macOS workaround) */\n .markdown-content-wrapper.has-horizontal-scroll {\n /* Reserve space for scrollbar */\n scrollbar-gutter: stable;\n }\n\n .markdown-content-wrapper.has-horizontal-scroll::-webkit-scrollbar {\n /* Force scrollbar to always be visible */\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .markdown-content-wrapper.has-horizontal-scroll::-webkit-scrollbar-track {\n /* Make track more visible */\n background: rgba(0, 0, 0, 0.2) !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .markdown-content-wrapper.has-horizontal-scroll::-webkit-scrollbar-thumb {\n /* Make thumb more visible */\n background: rgba(0, 0, 0, 0.5) !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n /* Enhanced shadows */\n .shadow-elegant {\n box-shadow: \n 0 10px 25px -5px rgba(0, 0, 0, 0.1),\n 0 8px 10px -6px rgba(0, 0, 0, 0.1),\n 0 0 0 1px rgba(255, 255, 255, 0.05);\n }\n\n .shadow-soft {\n box-shadow: \n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n }\n\n .shadow-floating {\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n }\n \n .prose {\n max-width: 100%;\n }\n \n .prose > * {\n margin-top: 0 !important;\n margin-bottom: 0.5em !important;\n }\n \n .prose p {\n margin: 0 0 0.5em 0 !important;\n padding: 0;\n line-height: 1.6;\n }\n \n .prose p:last-child {\n margin-bottom: 0 !important;\n }\n \n .prose ul,\n .prose ol {\n margin-top: 0.5em !important;\n margin-bottom: 0.5em !important;\n padding-left: 1.5em !important;\n }\n \n .prose li {\n margin-bottom: 0.25em !important;\n padding-left: 0.25em !important;\n line-height: 1.5;\n }\n \n .prose li p {\n margin: 0 !important;\n }\n \n .prose li + li {\n margin-top: 0.1em !important;\n }\n \n .prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {\n margin-top: 1em !important;\n margin-bottom: 0.5em !important;\n font-weight: 600;\n }\n\n /* Button enhancements */\n .btn-modern {\n position: relative;\n overflow: hidden;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .btn-modern::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(135deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0));\n opacity: 0;\n transition: opacity 0.3s ease;\n }\n\n .btn-modern:hover::before {\n opacity: 1;\n }\n\n /* Input enhancements */\n .input-modern {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .input-modern:focus {\n transform: translateY(-1px);\n }\n ";
|
|
55
|
-
/**
|
|
56
|
-
* Helper functions for responsive window dimensions
|
|
57
|
-
*/
|
|
58
|
-
export declare const getResponsiveWidth: (windowWidth: number) => string;
|
|
59
|
-
export declare const getResponsiveMinWidth: (windowWidth: number) => string;
|
|
60
|
-
/**
|
|
61
|
-
* Font family constant for consistent typography
|
|
62
|
-
*/
|
|
63
|
-
export declare const FONT_FAMILY = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif";
|
|
64
|
-
/**
|
|
65
|
-
* Character count styling helper
|
|
66
|
-
*/
|
|
67
|
-
export declare const getCharacterCountStyle: (length: number, maxLength: number) => {
|
|
68
|
-
color: string;
|
|
69
|
-
backgroundColor: string;
|
|
70
|
-
fontSize: string;
|
|
71
|
-
};
|
|
72
|
-
export declare function setChatConstants(config: Partial<{
|
|
73
|
-
MAX_MESSAGE_LENGTH?: number;
|
|
74
|
-
MAX_SUGGESTED_QUESTION_LENGTH?: number;
|
|
75
|
-
MAX_SUGGESTED_QUESTION_QUERY_LENGTH?: number;
|
|
76
|
-
}>): void;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export type MessageRole = 'user' | 'assistant' | 'system';
|
|
2
|
-
export interface Message {
|
|
3
|
-
id: string;
|
|
4
|
-
role: MessageRole;
|
|
5
|
-
content: string;
|
|
6
|
-
}
|
|
7
|
-
interface ChatState {
|
|
8
|
-
messages: Message[];
|
|
9
|
-
isLoading: boolean;
|
|
10
|
-
error: string | null;
|
|
11
|
-
sessionId: string;
|
|
12
|
-
sendMessage: (content: string) => Promise<void>;
|
|
13
|
-
appendToLastMessage: (content: string) => void;
|
|
14
|
-
deleteConversation: () => Promise<void>;
|
|
15
|
-
clearMessages: () => void;
|
|
16
|
-
getSessionId: () => string;
|
|
17
|
-
}
|
|
18
|
-
export declare const useChatStore: import("zustand").UseBoundStore<import("zustand").StoreApi<ChatState>>;
|
|
19
|
-
export {};
|
package/dist/ui/ChatInput.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export interface ChatInputProps {
|
|
3
|
-
message: string;
|
|
4
|
-
isFocused: boolean;
|
|
5
|
-
isLoading: boolean;
|
|
6
|
-
theme: any;
|
|
7
|
-
inputRef: React.RefObject<HTMLTextAreaElement>;
|
|
8
|
-
handleMessageChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
9
|
-
handleKeyDown: (e: React.KeyboardEvent) => void;
|
|
10
|
-
handleSendMessage: () => void;
|
|
11
|
-
setIsFocused: (focused: boolean) => void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* ChatInput component handles the message input area
|
|
15
|
-
* Includes textarea, character counter, and send button with proper styling
|
|
16
|
-
*/
|
|
17
|
-
export declare const ChatInput: React.FC<ChatInputProps>;
|
package/dist/ui/Message.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Message as MessageType } from '../store/chatStore';
|
|
3
|
-
export interface MessageProps {
|
|
4
|
-
message: MessageType;
|
|
5
|
-
index: number;
|
|
6
|
-
isLatestAssistantMessage: boolean;
|
|
7
|
-
showTypingAnimation: boolean;
|
|
8
|
-
theme: any;
|
|
9
|
-
copiedMessageId: string | null;
|
|
10
|
-
onCopyToClipboard: (text: string, messageId: string) => void;
|
|
11
|
-
onMarkMessageAnimated: (id: string, messagesLength: number, scrollToBottom: () => void) => void;
|
|
12
|
-
messagesLength: number;
|
|
13
|
-
scrollToBottom: () => void;
|
|
14
|
-
inputRef: React.RefObject<HTMLTextAreaElement>;
|
|
15
|
-
hasBeenAnimated: (id: string) => boolean;
|
|
16
|
-
typingProgressRef: React.MutableRefObject<Map<string, number>>;
|
|
17
|
-
isTypingRef: React.MutableRefObject<boolean>;
|
|
18
|
-
setIsAnimating: (value: boolean) => void;
|
|
19
|
-
formatTime: (date: Date) => string;
|
|
20
|
-
lastMessageRef: React.RefObject<HTMLDivElement>;
|
|
21
|
-
}
|
|
22
|
-
export declare const Message: React.NamedExoticComponent<MessageProps>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Message as MessageType } from '../store/chatStore';
|
|
3
|
-
import { ChatConfig } from '../config/index';
|
|
4
|
-
export interface MessagesListProps {
|
|
5
|
-
messages: MessageType[];
|
|
6
|
-
isLoading: boolean;
|
|
7
|
-
theme: ChatConfig['theme'];
|
|
8
|
-
currentConfig: ChatConfig;
|
|
9
|
-
showScrollTop: boolean;
|
|
10
|
-
showScrollBottom: boolean;
|
|
11
|
-
isAnimating: boolean;
|
|
12
|
-
messagesContainerRef: React.RefObject<HTMLDivElement>;
|
|
13
|
-
messagesEndRef: React.RefObject<HTMLDivElement>;
|
|
14
|
-
scrollToTop: () => void;
|
|
15
|
-
scrollToBottom: () => void;
|
|
16
|
-
handleScroll: () => void;
|
|
17
|
-
sendMessage: (message: string) => void;
|
|
18
|
-
focusInput: () => void;
|
|
19
|
-
copiedMessageId: string | null;
|
|
20
|
-
onCopyToClipboard: (text: string, messageId: string) => void;
|
|
21
|
-
onMarkMessageAnimated: (id: string, messagesLength: number, scrollToBottom: () => void) => void;
|
|
22
|
-
inputRef: React.RefObject<HTMLTextAreaElement>;
|
|
23
|
-
hasBeenAnimated: (id: string) => boolean;
|
|
24
|
-
typingProgressRef: React.MutableRefObject<Map<string, number>>;
|
|
25
|
-
isTypingRef: React.MutableRefObject<boolean>;
|
|
26
|
-
setIsAnimating: (value: boolean) => void;
|
|
27
|
-
formatTime: (date: Date) => string;
|
|
28
|
-
lastMessageRef: React.RefObject<HTMLDivElement>;
|
|
29
|
-
maxSuggestedQuestionLength?: number;
|
|
30
|
-
maxSuggestedQuestionQueryLength?: number;
|
|
31
|
-
}
|
|
32
|
-
export declare const MessagesList: React.NamedExoticComponent<MessagesListProps>;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detects if text is likely base64-encoded audio.
|
|
3
|
-
*/
|
|
4
|
-
export declare function isBase64AudioData(text: string): boolean;
|
|
5
|
-
/**
|
|
6
|
-
* Removes base64 audio data from streamed markdown content.
|
|
7
|
-
*/
|
|
8
|
-
export declare function sanitizeMessageContent(content: string): string;
|
|
9
|
-
/**
|
|
10
|
-
* Truncate ultra long responses to keep the widget responsive.
|
|
11
|
-
*/
|
|
12
|
-
export declare function truncateLongContent(content: string, maxLength?: number): string;
|