@liyalabs/liya-ai-chat-react 1.0.0
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/README.md +231 -0
- package/dist/api/chat.d.ts +4 -0
- package/dist/api/client.d.ts +7 -0
- package/dist/api/files.d.ts +7 -0
- package/dist/api/index.d.ts +4 -0
- package/dist/api/sessions.d.ts +6 -0
- package/dist/components/app/LiyaChatApp.d.ts +3 -0
- package/dist/components/app/SessionSidebar.d.ts +13 -0
- package/dist/components/app/index.d.ts +2 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/shared/ChatInput.d.ts +4 -0
- package/dist/components/shared/MessageBubble.d.ts +3 -0
- package/dist/components/shared/MessageList.d.ts +11 -0
- package/dist/components/shared/index.d.ts +3 -0
- package/dist/components/widget/LiyaChatWidget.d.ts +3 -0
- package/dist/components/widget/index.d.ts +1 -0
- package/dist/context/LiyaChatContext.d.ts +11 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/useChat.d.ts +14 -0
- package/dist/hooks/useFileUpload.d.ts +25 -0
- package/dist/hooks/useSessions.d.ts +16 -0
- package/dist/hooks/useVoice.d.ts +38 -0
- package/dist/index.cjs +6 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +2770 -0
- package/dist/style.css +1 -0
- package/dist/types/index.d.ts +165 -0
- package/package.json +60 -0
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--liya-primary-color: #6366f1;--liya-primary-hover: #4f46e5;--liya-secondary-color: #e5e7eb;--liya-bg-color: #ffffff;--liya-bg-secondary: #f3f4f6;--liya-text-color: #374151;--liya-text-muted: #9ca3af;--liya-border-color: #e5e7eb;--liya-border-radius: 12px;--liya-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--liya-z-index: 9999;--liya-sidebar-width: 300px}@media (prefers-color-scheme: dark){:root{--liya-bg-color: #1f2937;--liya-bg-secondary: #374151;--liya-text-color: #f9fafb;--liya-text-muted: #9ca3af;--liya-border-color: #4b5563}}.liya-widget,.liya-app{box-sizing:border-box;font-family:var(--liya-font-family);font-size:14px;line-height:1.5;color:var(--liya-text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.liya-widget *,.liya-app *{box-sizing:border-box}.liya-widget button,.liya-app button,.liya-widget input,.liya-widget textarea,.liya-app input,.liya-app textarea{font-family:inherit}.liya-message{display:flex;gap:12px;margin-bottom:16px;max-width:85%}.liya-message--user{margin-left:auto;flex-direction:row-reverse}.liya-message--assistant{margin-right:auto}.liya-message__avatar{flex-shrink:0}.liya-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center}.liya-avatar--assistant{background:var(--liya-primary-color, #6366f1);color:#fff}.liya-avatar--user{background:var(--liya-secondary-color, #e5e7eb);color:var(--liya-text-color, #374151)}.liya-message__content{flex:1;min-width:0}.liya-message__bubble{padding:12px 16px;border-radius:var(--liya-border-radius, 12px);word-wrap:break-word}.liya-message--user .liya-message__bubble{background:var(--liya-primary-color, #6366f1);color:#fff;border-bottom-right-radius:4px}.liya-message--assistant .liya-message__bubble{background:var(--liya-bg-secondary, #f3f4f6);color:var(--liya-text-color, #374151);border-bottom-left-radius:4px}.liya-message__text{font-size:14px;line-height:1.5;white-space:pre-wrap}.liya-message__meta{display:flex;gap:8px;margin-top:4px;font-size:11px;color:var(--liya-text-muted, #9ca3af)}.liya-message--user .liya-message__meta{justify-content:flex-end}.liya-message__suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.liya-suggestion{display:flex;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-family:inherit;color:var(--liya-primary-color, #6366f1);background:transparent;border:1px solid var(--liya-primary-color, #6366f1);border-radius:20px;cursor:pointer;transition:all .2s ease}.liya-suggestion:hover{background:var(--liya-primary-color, #6366f1);color:#fff}.liya-suggestion svg{flex-shrink:0}.liya-message-list{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column}.liya-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 20px;color:var(--liya-text-muted, #9ca3af)}.liya-welcome__icon{margin-bottom:16px;opacity:.5}.liya-welcome__text{font-size:14px;max-width:280px;line-height:1.5;margin:0}.liya-typing{display:flex;align-items:center;gap:12px;margin-bottom:16px}.liya-typing__avatar{width:36px;height:36px;border-radius:50%;background:var(--liya-primary-color, #6366f1);color:#fff;display:flex;align-items:center;justify-content:center}.liya-typing__dots{display:flex;gap:4px;padding:12px 16px;background:var(--liya-bg-secondary, #f3f4f6);border-radius:12px 12px 12px 4px}.liya-typing__dots span{width:8px;height:8px;border-radius:50%;background:var(--liya-text-muted, #9ca3af);animation:liya-typing-bounce 1.4s infinite ease-in-out both}.liya-typing__dots span:nth-child(1){animation-delay:-.32s}.liya-typing__dots span:nth-child(2){animation-delay:-.16s}@keyframes liya-typing-bounce{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.liya-chat-input{padding:12px 16px;border-top:1px solid var(--liya-border-color, #e5e7eb);background:var(--liya-bg-color, #ffffff)}.liya-chat-input__files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.liya-file-chip{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--liya-bg-secondary, #f3f4f6);border-radius:8px;font-size:12px}.liya-file-chip--error{background:#fef2f2;color:#dc2626}.liya-file-chip__name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.liya-file-chip__size{color:var(--liya-text-muted, #9ca3af)}.liya-file-chip__remove{background:none;border:none;padding:2px;cursor:pointer;color:var(--liya-text-muted, #9ca3af);display:flex;align-items:center;justify-content:center}.liya-file-chip__remove:hover{color:var(--liya-text-color, #374151)}.liya-chat-input__wrapper{display:flex;align-items:flex-end;gap:8px;background:var(--liya-bg-secondary, #f3f4f6);border-radius:24px;padding:8px 12px}.liya-chat-input__file-input{display:none}.liya-chat-input__textarea{flex:1;border:none;background:transparent;resize:none;font-size:14px;line-height:1.5;max-height:150px;color:var(--liya-text-color, #374151);font-family:inherit;outline:none}.liya-chat-input__textarea::placeholder{color:var(--liya-text-muted, #9ca3af)}.liya-chat-input__btn{flex-shrink:0;width:36px;height:36px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;background:transparent;color:var(--liya-text-muted, #9ca3af)}.liya-chat-input__btn:hover:not(:disabled){background:var(--liya-bg-color, #ffffff);color:var(--liya-text-color, #374151)}.liya-chat-input__btn:disabled{opacity:.5;cursor:not-allowed}.liya-chat-input__btn--send{background:var(--liya-primary-color, #6366f1);color:#fff}.liya-chat-input__btn--send:hover:not(:disabled){background:var(--liya-primary-hover, #4f46e5);color:#fff}.liya-chat-input__btn--recording{background:#dc2626;color:#fff;animation:liya-pulse 1.5s infinite}.liya-chat-input__btn--voice-disabled{opacity:.4;cursor:not-allowed;background:transparent;color:var(--liya-text-muted, #9ca3af)}.liya-chat-input__btn--voice-disabled:hover{background:transparent;color:var(--liya-text-muted, #9ca3af)}@keyframes liya-pulse{0%,to{opacity:1}50%{opacity:.7}}.liya-chat-input__count{text-align:right;font-size:11px;color:var(--liya-text-muted, #9ca3af);margin-top:4px}.liya-widget{position:fixed;z-index:var(--liya-z-index, 9999);font-family:var(--liya-font-family)}.liya-widget--bottom-right{bottom:20px;right:20px}.liya-widget--bottom-left{bottom:20px;left:20px}.liya-widget--top-right{top:20px;right:20px}.liya-widget--top-left{top:20px;left:20px}.liya-widget__toggle{width:60px;height:60px;border-radius:50%;border:none;background:var(--liya-primary-color);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;transition:all .3s ease}.liya-widget__toggle:hover{transform:scale(1.05);box-shadow:0 6px 16px #0003}.liya-widget__toggle--open{background:var(--liya-text-muted)}.liya-widget__panel{position:absolute;width:380px;height:550px;max-height:calc(100vh - 100px);background:var(--liya-bg-color);border-radius:var(--liya-border-radius);box-shadow:0 10px 40px #00000026;display:flex;flex-direction:column;overflow:hidden}.liya-widget--bottom-right .liya-widget__panel,.liya-widget--bottom-left .liya-widget__panel{bottom:70px}.liya-widget--top-right .liya-widget__panel,.liya-widget--top-left .liya-widget__panel{top:70px}.liya-widget--bottom-right .liya-widget__panel,.liya-widget--top-right .liya-widget__panel{right:0}.liya-widget--bottom-left .liya-widget__panel,.liya-widget--top-left .liya-widget__panel{left:0}.liya-widget__header{display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--liya-primary-color);color:#fff}.liya-widget__header-info{display:flex;align-items:center;gap:12px}.liya-widget__avatar{width:40px;height:40px;border-radius:50%;background:#fff3;display:flex;align-items:center;justify-content:center}.liya-widget__header-text{display:flex;flex-direction:column}.liya-widget__title{margin:0;font-size:16px;font-weight:600}.liya-widget__status{font-size:12px;opacity:.9}.liya-widget__close{background:transparent;border:none;color:#fff;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.8;transition:opacity .2s}.liya-widget__close:hover{opacity:1}.liya-widget__branding{padding:8px;text-align:center;font-size:11px;color:var(--liya-text-muted);border-top:1px solid var(--liya-border-color)}.liya-widget__branding a{color:var(--liya-primary-color);text-decoration:none}.liya-widget__branding a:hover{text-decoration:underline}@media (max-width: 480px){.liya-widget__panel{width:calc(100vw - 40px);height:calc(100vh - 100px);max-height:none}.liya-widget--bottom-right,.liya-widget--bottom-left{bottom:10px;right:10px;left:10px}.liya-widget--bottom-right .liya-widget__panel,.liya-widget--bottom-left .liya-widget__panel{right:0;left:0}}.liya-sidebar{width:100%;height:100%;display:flex;flex-direction:column;background:var(--liya-bg-color, #ffffff);border-right:1px solid var(--liya-border-color, #e5e7eb)}.liya-sidebar__header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--liya-border-color, #e5e7eb)}.liya-sidebar__logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:16px;color:var(--liya-text-color, #374151)}.liya-sidebar__logo svg{color:var(--liya-primary-color, #6366f1)}.liya-sidebar__new-btn{width:36px;height:36px;border:none;border-radius:8px;background:var(--liya-primary-color, #6366f1);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.liya-sidebar__new-btn:hover{background:var(--liya-primary-hover, #4f46e5)}.liya-sidebar__list{flex:1;overflow-y:auto;padding:8px}.liya-sidebar__loading,.liya-sidebar__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--liya-text-muted, #9ca3af);text-align:center}.liya-sidebar__spinner{width:24px;height:24px;border:2px solid var(--liya-border-color, #e5e7eb);border-top-color:var(--liya-primary-color, #6366f1);border-radius:50%;animation:liya-spin .8s linear infinite;margin-bottom:12px}@keyframes liya-spin{to{transform:rotate(360deg)}}.liya-sidebar__empty svg{opacity:.3;margin-bottom:12px}.liya-sidebar__empty p{margin:0 0 16px;font-size:14px}.liya-sidebar__start-btn{padding:10px 20px;border:none;border-radius:8px;background:var(--liya-primary-color, #6366f1);color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.liya-sidebar__start-btn:hover{background:var(--liya-primary-hover, #4f46e5)}.liya-sidebar__item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:8px;cursor:pointer;transition:background .2s;position:relative}.liya-sidebar__item:hover,.liya-sidebar__item--active{background:var(--liya-bg-secondary, #f3f4f6)}.liya-sidebar__item--active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:24px;background:var(--liya-primary-color, #6366f1);border-radius:0 2px 2px 0}.liya-sidebar__item-icon{flex-shrink:0;color:var(--liya-text-muted, #9ca3af)}.liya-sidebar__item-content{flex:1;min-width:0}.liya-sidebar__item-title{font-size:14px;font-weight:500;color:var(--liya-text-color, #374151);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.liya-sidebar__item-meta{display:flex;gap:8px;font-size:12px;color:var(--liya-text-muted, #9ca3af);margin-top:2px}.liya-sidebar__item-delete{flex-shrink:0;width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:var(--liya-text-muted, #9ca3af);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .2s}.liya-sidebar__item:hover .liya-sidebar__item-delete{opacity:1}.liya-sidebar__item-delete:hover{background:#fef2f2;color:#dc2626}.liya-app{display:flex;height:100%;width:100%;background:var(--liya-bg-color);font-family:var(--liya-font-family);position:relative;overflow:hidden}.liya-app__mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:56px;background:var(--liya-bg-color);border-bottom:1px solid var(--liya-border-color);align-items:center;justify-content:space-between;padding:0 12px;z-index:100}.liya-app__menu-btn,.liya-app__new-btn{width:40px;height:40px;border:none;background:transparent;color:var(--liya-text-color);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px}.liya-app__menu-btn:hover,.liya-app__new-btn:hover{background:var(--liya-bg-secondary)}.liya-app__mobile-title{font-weight:600;font-size:16px;color:var(--liya-text-color);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.liya-app__sidebar{width:var(--liya-sidebar-width);flex-shrink:0;height:100%}.liya-app__overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:199}.liya-app__main{flex:1;display:flex;flex-direction:column;min-width:0;height:100%}.liya-app__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--liya-border-color);background:var(--liya-bg-color)}.liya-app__header-info{display:flex;align-items:center;gap:12px}.liya-app__avatar{width:44px;height:44px;border-radius:50%;background:var(--liya-primary-color);color:#fff;display:flex;align-items:center;justify-content:center}.liya-app__header-text{display:flex;flex-direction:column}.liya-app__title{margin:0;font-size:16px;font-weight:600;color:var(--liya-text-color)}.liya-app__status{font-size:13px;color:var(--liya-text-muted)}@media (max-width: 768px){.liya-app__mobile-header{display:flex}.liya-app__sidebar{position:fixed;left:0;top:0;bottom:0;width:300px;z-index:200;transform:translate(-100%);transition:transform .3s ease}.liya-app__sidebar--open{transform:translate(0)}.liya-app__overlay{display:block}.liya-app__main{padding-top:56px}.liya-app__header{display:none}}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export type ChatMode = 'widget' | 'app';
|
|
2
|
+
export interface LiyaChatConfig {
|
|
3
|
+
mode?: ChatMode;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
assistantId: string;
|
|
7
|
+
assistantName?: string;
|
|
8
|
+
theme?: ThemeConfig;
|
|
9
|
+
features?: FeaturesConfig;
|
|
10
|
+
locale?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ThemeConfig {
|
|
13
|
+
primaryColor?: string;
|
|
14
|
+
secondaryColor?: string;
|
|
15
|
+
backgroundColor?: string;
|
|
16
|
+
textColor?: string;
|
|
17
|
+
fontFamily?: string;
|
|
18
|
+
borderRadius?: string;
|
|
19
|
+
position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
|
|
20
|
+
widgetSize?: 'small' | 'medium' | 'large';
|
|
21
|
+
zIndex?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface FeaturesConfig {
|
|
24
|
+
voice?: boolean;
|
|
25
|
+
voiceEnabled?: boolean;
|
|
26
|
+
fileUpload?: boolean;
|
|
27
|
+
sessionHistory?: boolean;
|
|
28
|
+
markdown?: boolean;
|
|
29
|
+
codeHighlight?: boolean;
|
|
30
|
+
typingIndicator?: boolean;
|
|
31
|
+
soundEffects?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface ApiResponse<T = unknown> {
|
|
34
|
+
status: 'success' | 'error';
|
|
35
|
+
data?: T;
|
|
36
|
+
message?: string;
|
|
37
|
+
errors?: Record<string, string[]>;
|
|
38
|
+
}
|
|
39
|
+
export interface Assistant {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
model: string;
|
|
44
|
+
total_messages: number;
|
|
45
|
+
}
|
|
46
|
+
export interface Session {
|
|
47
|
+
id: string;
|
|
48
|
+
assistant_id?: string;
|
|
49
|
+
session_name: string;
|
|
50
|
+
message_count: number;
|
|
51
|
+
created_at: string;
|
|
52
|
+
last_message_at: string | null;
|
|
53
|
+
}
|
|
54
|
+
export interface SessionListResponse {
|
|
55
|
+
sessions: Session[];
|
|
56
|
+
total: number;
|
|
57
|
+
limit: number;
|
|
58
|
+
offset: number;
|
|
59
|
+
}
|
|
60
|
+
export interface CreateSessionRequest {
|
|
61
|
+
assistant_id: string;
|
|
62
|
+
session_name?: string;
|
|
63
|
+
external_session_id?: string;
|
|
64
|
+
}
|
|
65
|
+
export type MessageRole = 'user' | 'assistant';
|
|
66
|
+
export interface Message {
|
|
67
|
+
id: string;
|
|
68
|
+
content: string;
|
|
69
|
+
role: MessageRole;
|
|
70
|
+
created_at: string;
|
|
71
|
+
response_time?: number;
|
|
72
|
+
attachments?: FileAttachment[];
|
|
73
|
+
raw_response?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface ParsedResponse {
|
|
76
|
+
response: string;
|
|
77
|
+
suggestions?: string[];
|
|
78
|
+
source?: string;
|
|
79
|
+
metadata?: {
|
|
80
|
+
confidence?: number;
|
|
81
|
+
category?: string;
|
|
82
|
+
requires_followup?: boolean;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export interface SendMessageRequest {
|
|
86
|
+
assistant_id: string;
|
|
87
|
+
message: string;
|
|
88
|
+
session_id?: string;
|
|
89
|
+
external_session_id?: string;
|
|
90
|
+
file_ids?: string[];
|
|
91
|
+
}
|
|
92
|
+
export interface SendMessageResponse {
|
|
93
|
+
session_id: string;
|
|
94
|
+
message_id?: string;
|
|
95
|
+
response?: string;
|
|
96
|
+
response_time?: number;
|
|
97
|
+
user_message?: Message;
|
|
98
|
+
assistant_message?: Message;
|
|
99
|
+
}
|
|
100
|
+
export interface SessionHistoryResponse {
|
|
101
|
+
session_id: string;
|
|
102
|
+
messages: Message[];
|
|
103
|
+
total: number;
|
|
104
|
+
}
|
|
105
|
+
export interface FileAttachment {
|
|
106
|
+
id: string;
|
|
107
|
+
file_name: string;
|
|
108
|
+
file_size: number;
|
|
109
|
+
file_type: string;
|
|
110
|
+
openai_file_id?: string;
|
|
111
|
+
created_at: string;
|
|
112
|
+
}
|
|
113
|
+
export interface UploadFileRequest {
|
|
114
|
+
session_id: string;
|
|
115
|
+
file: File;
|
|
116
|
+
}
|
|
117
|
+
export interface ChatWidgetProps {
|
|
118
|
+
position?: ThemeConfig['position'];
|
|
119
|
+
theme?: ThemeConfig;
|
|
120
|
+
welcomeMessage?: string;
|
|
121
|
+
placeholder?: string;
|
|
122
|
+
showBranding?: boolean;
|
|
123
|
+
showVoice?: boolean;
|
|
124
|
+
voiceEnabled?: boolean;
|
|
125
|
+
showFileUpload?: boolean;
|
|
126
|
+
onOpen?: () => void;
|
|
127
|
+
onClose?: () => void;
|
|
128
|
+
onMessageSent?: (message: string) => void;
|
|
129
|
+
onMessageReceived?: (message: string) => void;
|
|
130
|
+
}
|
|
131
|
+
export interface ChatAppProps {
|
|
132
|
+
theme?: ThemeConfig;
|
|
133
|
+
showSidebar?: boolean;
|
|
134
|
+
sidebarWidth?: string;
|
|
135
|
+
welcomeMessage?: string;
|
|
136
|
+
placeholder?: string;
|
|
137
|
+
showVoice?: boolean;
|
|
138
|
+
voiceEnabled?: boolean;
|
|
139
|
+
showFileUpload?: boolean;
|
|
140
|
+
onSessionCreated?: (session: Session) => void;
|
|
141
|
+
onSessionSelected?: (session: Session) => void;
|
|
142
|
+
onSessionDeleted?: (sessionId: string) => void;
|
|
143
|
+
onMessageSent?: (message: string) => void;
|
|
144
|
+
onMessageReceived?: (message: string) => void;
|
|
145
|
+
}
|
|
146
|
+
export interface MessageBubbleProps {
|
|
147
|
+
message: Message;
|
|
148
|
+
showAvatar?: boolean;
|
|
149
|
+
assistantName?: string;
|
|
150
|
+
onSuggestionClick?: (suggestion: string) => void;
|
|
151
|
+
}
|
|
152
|
+
export interface ChatInputProps {
|
|
153
|
+
placeholder?: string;
|
|
154
|
+
disabled?: boolean;
|
|
155
|
+
showVoice?: boolean;
|
|
156
|
+
voiceEnabled?: boolean;
|
|
157
|
+
showFileUpload?: boolean;
|
|
158
|
+
maxLength?: number;
|
|
159
|
+
sessionId?: string | null;
|
|
160
|
+
onSend: (message: string, fileIds?: string[]) => void;
|
|
161
|
+
}
|
|
162
|
+
export interface LiyaChatContextValue {
|
|
163
|
+
config: LiyaChatConfig;
|
|
164
|
+
isInitialized: boolean;
|
|
165
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@liyalabs/liya-ai-chat-react",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Liya AI Chat - React chat widget and full app component for AI assistants",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./style.css": "./dist/style.css"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"dev": "vite",
|
|
22
|
+
"build": "tsc && vite build",
|
|
23
|
+
"preview": "vite preview",
|
|
24
|
+
"type-check": "tsc --noEmit"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"react": "^18.0.0",
|
|
28
|
+
"react-dom": "^18.0.0"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"axios": "^1.6.0"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^20.10.0",
|
|
35
|
+
"@types/react": "^18.2.0",
|
|
36
|
+
"@types/react-dom": "^18.2.0",
|
|
37
|
+
"@vitejs/plugin-react": "^4.2.0",
|
|
38
|
+
"typescript": "^5.3.0",
|
|
39
|
+
"vite": "^5.0.0",
|
|
40
|
+
"vite-plugin-dts": "^3.6.0",
|
|
41
|
+
"react": "^18.2.0",
|
|
42
|
+
"react-dom": "^18.2.0"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"react",
|
|
46
|
+
"chat",
|
|
47
|
+
"chatbot",
|
|
48
|
+
"ai",
|
|
49
|
+
"assistant",
|
|
50
|
+
"widget",
|
|
51
|
+
"liya"
|
|
52
|
+
],
|
|
53
|
+
"author": "Liya Labs",
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"repository": {
|
|
56
|
+
"type": "git",
|
|
57
|
+
"url": "https://github.com/liyalabs/liya-ai-chat-react"
|
|
58
|
+
},
|
|
59
|
+
"homepage": "https://liyalabs.com"
|
|
60
|
+
}
|