@ihoomanai/chat-widget 4.0.1 → 4.1.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/cdn/SRI_HASHES.md +8 -8
- package/cdn/health.json +2 -2
- package/cdn/latest/chat.js +9 -2
- package/cdn/latest/chat.js.map +1 -1
- package/cdn/latest/chat.min.js +1 -1
- package/cdn/latest/chat.min.js.map +1 -1
- package/cdn/manifest.json +13 -13
- package/cdn/{v3 → v4}/chat.js +10 -3
- package/cdn/v4/chat.js.map +1 -0
- package/cdn/{v3.0.21 → v4}/chat.min.js +1 -1
- package/cdn/v4/chat.min.js.map +1 -0
- package/cdn/{v3.0.21 → v4.0.2}/chat.js +9 -2
- package/cdn/v4.0.2/chat.js.map +1 -0
- package/cdn/{v3 → v4.0.2}/chat.min.js +1 -1
- package/cdn/v4.0.2/chat.min.js.map +1 -0
- package/dist/index.cjs.js +170 -219
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +170 -219
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.umd.js +170 -219
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/widget.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/widget.ts +172 -223
- package/cdn/v3/chat.js.map +0 -1
- package/cdn/v3/chat.min.js.map +0 -1
- package/cdn/v3.0.21/chat.js.map +0 -1
- package/cdn/v3.0.21/chat.min.js.map +0 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @ihoomanai/chat-widget v4.0
|
|
3
|
-
*
|
|
2
|
+
* @ihoomanai/chat-widget v4.1.0
|
|
3
|
+
* Universal chat support widget for any website - secure Widget ID based initialization
|
|
4
4
|
*
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @copyright Ihooman AI
|
|
@@ -14,20 +14,20 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
14
14
|
* Enhanced with professional features
|
|
15
15
|
* @version 3.0.0
|
|
16
16
|
*/
|
|
17
|
-
const VERSION = '4.
|
|
17
|
+
const VERSION = '4.1.0';
|
|
18
18
|
const STORAGE_PREFIX = 'ihooman_chat_';
|
|
19
19
|
const DEFAULT_SERVER_URL = 'https://api.ihooman.ai';
|
|
20
20
|
const defaultConfig = {
|
|
21
21
|
serverUrl: DEFAULT_SERVER_URL,
|
|
22
|
-
theme: '
|
|
22
|
+
theme: 'light',
|
|
23
23
|
position: 'bottom-right',
|
|
24
|
-
title: '
|
|
25
|
-
subtitle: '
|
|
26
|
-
welcomeMessage: '
|
|
27
|
-
placeholder: '
|
|
28
|
-
primaryColor: '#
|
|
29
|
-
gradientFrom: '#
|
|
30
|
-
gradientTo: '#
|
|
24
|
+
title: 'Chat Support',
|
|
25
|
+
subtitle: 'We typically reply within minutes',
|
|
26
|
+
welcomeMessage: 'Hi there! 👋 How can we help you today?',
|
|
27
|
+
placeholder: 'Type a message...',
|
|
28
|
+
primaryColor: '#00aeff',
|
|
29
|
+
gradientFrom: '#00aeff',
|
|
30
|
+
gradientTo: '#0066ff',
|
|
31
31
|
showTimestamps: true,
|
|
32
32
|
showTypingIndicator: true,
|
|
33
33
|
enableSounds: true,
|
|
@@ -35,11 +35,11 @@ const defaultConfig = {
|
|
|
35
35
|
startOpen: false,
|
|
36
36
|
persistSession: true,
|
|
37
37
|
zIndex: 9999,
|
|
38
|
-
width:
|
|
39
|
-
height:
|
|
40
|
-
buttonSize:
|
|
38
|
+
width: 380,
|
|
39
|
+
height: 560,
|
|
40
|
+
buttonSize: 60,
|
|
41
41
|
borderRadius: 16,
|
|
42
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
42
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
43
43
|
avatarUrl: '',
|
|
44
44
|
poweredBy: true,
|
|
45
45
|
presetQuestions: [],
|
|
@@ -49,18 +49,18 @@ const defaultConfig = {
|
|
|
49
49
|
allowLocalhost: true,
|
|
50
50
|
};
|
|
51
51
|
const icons = {
|
|
52
|
-
chat: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
53
|
-
close: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
54
|
-
send: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
55
|
-
attach: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
56
|
-
minimize: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
57
|
-
|
|
58
|
-
agent: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
59
|
-
ticket: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
60
|
-
history: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
61
|
-
plus: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
62
|
-
star: `<svg viewBox="0 0 24 24" fill="currentColor"
|
|
63
|
-
starEmpty: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
52
|
+
chat: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>`,
|
|
53
|
+
close: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>`,
|
|
54
|
+
send: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>`,
|
|
55
|
+
attach: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg>`,
|
|
56
|
+
minimize: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"></line></svg>`,
|
|
57
|
+
bot: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="10" rx="2"></rect><circle cx="12" cy="5" r="2"></circle><path d="M12 7v4"></path></svg>`,
|
|
58
|
+
agent: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>`,
|
|
59
|
+
ticket: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"></path><polyline points="14 2 14 8 20 8"></polyline></svg>`,
|
|
60
|
+
history: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>`,
|
|
61
|
+
plus: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>`,
|
|
62
|
+
star: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"></path></svg>`,
|
|
63
|
+
starEmpty: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"></path></svg>`};
|
|
64
64
|
let config = { widgetId: '', ...defaultConfig };
|
|
65
65
|
let state = {
|
|
66
66
|
isOpen: false,
|
|
@@ -206,32 +206,26 @@ function matchUrlPattern(pattern) {
|
|
|
206
206
|
// STYLES
|
|
207
207
|
// ============================================================================
|
|
208
208
|
function generateStyles() {
|
|
209
|
-
const { fontFamily, borderRadius, zIndex, width, height, buttonSize } = config;
|
|
210
|
-
const isDark = config.theme === 'dark'
|
|
211
|
-
|
|
212
|
-
const
|
|
213
|
-
const
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const textSecondary = isDark ? '#a1a1aa' : '#
|
|
217
|
-
const
|
|
218
|
-
const
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
const
|
|
223
|
-
const accentBg = isDark ? '#ededed' : '#18181b';
|
|
224
|
-
const accentText = isDark ? '#09090b' : '#fafafa';
|
|
225
|
-
const userMsgBg = isDark ? '#27272a' : '#18181b';
|
|
226
|
-
const userMsgText = isDark ? '#ededed' : '#fafafa';
|
|
227
|
-
const botMsgBg = 'transparent';
|
|
209
|
+
const { primaryColor, gradientFrom, gradientTo, fontFamily, borderRadius, zIndex, width, height, buttonSize } = config;
|
|
210
|
+
const isDark = config.theme === 'dark';
|
|
211
|
+
const bgColor = isDark ? '#0a0a0f' : '#ffffff';
|
|
212
|
+
const bgSecondary = isDark ? '#111118' : '#f9fafb';
|
|
213
|
+
const bgTertiary = isDark ? '#16161f' : '#f1f5f9';
|
|
214
|
+
const textColor = isDark ? '#e4e4e7' : '#1f2937';
|
|
215
|
+
const mutedColor = isDark ? '#52525b' : '#6b7280';
|
|
216
|
+
const textSecondary = isDark ? '#a1a1aa' : '#6b7280';
|
|
217
|
+
const borderColor = isDark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.08)';
|
|
218
|
+
const borderLight = isDark ? 'rgba(255,255,255,0.04)' : 'rgba(0,0,0,0.05)';
|
|
219
|
+
const inputBg = isDark ? '#111118' : '#f9fafb';
|
|
220
|
+
const accentColor = isDark ? (primaryColor || '#10b981') : primaryColor;
|
|
221
|
+
const messageBgUser = isDark ? '#1a1a26' : `linear-gradient(135deg, ${gradientFrom}, ${gradientTo})`;
|
|
222
|
+
const messageBgBot = isDark ? '#16161f' : '#f1f5f9';
|
|
228
223
|
const positionRight = config.position?.includes('right') ?? true;
|
|
229
224
|
const positionBottom = config.position?.includes('bottom') ?? true;
|
|
230
|
-
const shadowLg = isDark ? '0 24px 48px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.05)' : '0 24px 48px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.05)';
|
|
231
225
|
return `
|
|
232
226
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
233
227
|
:host { all: initial; }
|
|
234
|
-
.ihooman-widget { font-family: ${fontFamily}; font-size: 14px; line-height: 1.
|
|
228
|
+
.ihooman-widget { font-family: ${fontFamily}; font-size: 14px; line-height: 1.5; color: ${textColor}; -webkit-font-smoothing: antialiased; }
|
|
235
229
|
button {
|
|
236
230
|
font-family: inherit;
|
|
237
231
|
font-size: 100%;
|
|
@@ -244,188 +238,144 @@ function generateStyles() {
|
|
|
244
238
|
cursor: pointer;
|
|
245
239
|
outline: none;
|
|
246
240
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
.ihooman-toggle {
|
|
251
|
-
.ihooman-toggle
|
|
252
|
-
.ihooman-toggle
|
|
253
|
-
.ihooman-toggle
|
|
254
|
-
.ihooman-toggle .chat-icon { display: flex; align-items: center; justify-content: center; transition: transform 0.25s ease-out, opacity 0.15s ease; }
|
|
255
|
-
.ihooman-toggle .close-icon { position: absolute; display: flex; align-items: center; justify-content: center; transform: rotate(-90deg) scale(0); opacity: 0; transition: transform 0.25s ease-out, opacity 0.15s ease; }
|
|
241
|
+
.ihooman-toggle { position: fixed !important; ${positionRight ? 'right: 20px' : 'left: 20px'}; ${positionBottom ? 'bottom: 20px' : 'top: 20px'}; width: ${buttonSize}px !important; height: ${buttonSize}px !important; border-radius: 50% !important; background: ${isDark ? bgSecondary : `linear-gradient(135deg, ${gradientFrom}, ${gradientTo})`} !important; border: ${isDark ? `1px solid ${borderColor}` : 'none'} !important; cursor: pointer; z-index: ${zIndex}; display: flex !important; align-items: center; justify-content: center; box-shadow: ${isDark ? '0 8px 32px rgba(0,0,0,0.5)' : '0 4px 20px rgba(0, 174, 255, 0.35)'}; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); overflow: hidden; }
|
|
242
|
+
.ihooman-toggle:hover { transform: scale(1.08); box-shadow: 0 6px 28px rgba(0, 174, 255, 0.45); }
|
|
243
|
+
.ihooman-toggle:active { transform: scale(0.95); }
|
|
244
|
+
.ihooman-toggle::before { content: ''; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(255,255,255,0.2), transparent); border-radius: 50%; }
|
|
245
|
+
.ihooman-toggle svg { width: 26px; height: 26px; color: white; transition: transform 0.3s ease, opacity 0.2s ease; position: relative; z-index: 1; }
|
|
246
|
+
.ihooman-toggle .chat-icon { display: flex; align-items: center; justify-content: center; transition: transform 0.3s ease, opacity 0.2s ease; }
|
|
247
|
+
.ihooman-toggle .close-icon { position: absolute; display: flex; align-items: center; justify-content: center; transform: rotate(-90deg) scale(0); opacity: 0; transition: transform 0.3s ease, opacity 0.2s ease; }
|
|
256
248
|
.ihooman-toggle.open .chat-icon { transform: rotate(90deg) scale(0); opacity: 0; }
|
|
257
249
|
.ihooman-toggle.open .close-icon { transform: rotate(0) scale(1); opacity: 1; }
|
|
258
|
-
.ihooman-pulse {
|
|
259
|
-
|
|
250
|
+
.ihooman-pulse { position: absolute; inset: 0; border-radius: 50%; background: ${primaryColor}; animation: ihooman-pulse 2s ease-out infinite; }
|
|
251
|
+
@keyframes ihooman-pulse { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(1.6); opacity: 0; } }
|
|
252
|
+
.ihooman-toggle.open .ihooman-pulse { display: none; }
|
|
253
|
+
.ihooman-badge { position: absolute; top: -4px; right: -4px; min-width: 20px; height: 20px; padding: 0 6px; background: #ef4444; color: white; font-size: 11px; font-weight: 600; border-radius: 10px; display: flex; align-items: center; justify-content: center; z-index: 2; }
|
|
260
254
|
.ihooman-badge:empty { display: none; }
|
|
261
|
-
|
|
262
|
-
/* ── Window ── */
|
|
263
|
-
.ihooman-window { position: fixed; ${positionRight ? 'right: 20px' : 'left: 20px'}; ${positionBottom ? 'bottom: 84px' : 'top: 84px'}; width: ${width}px; height: ${height}px; min-height: ${height}px; max-height: ${height}px; z-index: ${(zIndex ?? 9999) - 1}; display: flex; flex-direction: column; opacity: 0; visibility: hidden; transform: translateY(12px) scale(0.97); transition: opacity 0.2s ease-out, visibility 0.2s ease-out, transform 0.2s ease-out; overscroll-behavior: contain; }
|
|
255
|
+
.ihooman-window { position: fixed; ${positionRight ? 'right: 20px' : 'left: 20px'}; ${positionBottom ? 'bottom: 90px' : 'top: 90px'}; width: ${width}px; height: ${height}px; min-height: ${height}px; max-height: ${height}px; z-index: ${(zIndex ?? 9999) - 1}; display: flex; flex-direction: column; opacity: 0; visibility: hidden; transform: translateY(20px) scale(0.95); transition: opacity 0.3s, visibility 0.3s, transform 0.3s; overscroll-behavior: contain; }
|
|
264
256
|
.ihooman-window.open { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
.ihooman-container { position: relative;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
.ihooman-header
|
|
271
|
-
.ihooman-header-avatar { width:
|
|
272
|
-
.ihooman-header-avatar img { width: 100%; height: 100%; border-radius: 10px; object-fit: cover; }
|
|
273
|
-
.ihooman-header-avatar svg { width: 18px; height: 18px; color: ${textSecondary}; }
|
|
257
|
+
.ihooman-container { position: relative; width: 100%; height: 100%; display: flex; flex-direction: column; border-radius: ${borderRadius}px; overflow: hidden; flex-shrink: 0; }
|
|
258
|
+
.ihooman-container::before { content: ''; position: absolute; inset: 0; background: ${bgColor}; opacity: ${isDark ? '1' : '0.97'}; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: ${borderRadius}px; border: 1px solid ${borderColor}; box-shadow: ${isDark ? '0 25px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.02)' : '0 25px 50px -12px rgba(0, 0, 0, 0.25)'}; }
|
|
259
|
+
.ihooman-container > * { position: relative; z-index: 1; }
|
|
260
|
+
.ihooman-header { padding: 16px 20px; background: ${isDark ? bgSecondary : `linear-gradient(135deg, ${gradientFrom}, ${gradientTo})`}; color: ${isDark ? textColor : 'white'}; display: flex; align-items: center; gap: 12px; flex-shrink: 0; border-bottom: ${isDark ? `1px solid ${borderColor}` : 'none'}; }
|
|
261
|
+
.ihooman-header-avatar { width: ${isDark ? '38px' : '42px'}; height: ${isDark ? '38px' : '42px'}; border-radius: ${isDark ? '12px' : '50%'}; background: ${isDark ? bgTertiary : 'rgba(255,255,255,0.2)'}; display: flex; align-items: center; justify-content: center; flex-shrink: 0; border: ${isDark ? `1px solid ${borderColor}` : 'none'}; position: relative; overflow: hidden; }
|
|
262
|
+
.ihooman-header-avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
|
|
263
|
+
.ihooman-header-avatar svg { width: 22px; height: 22px; }
|
|
274
264
|
.ihooman-header-info { flex: 1; min-width: 0; }
|
|
275
|
-
.ihooman-header-title { font-size:
|
|
276
|
-
.ihooman-header-status { display: flex; align-items: center; gap:
|
|
277
|
-
.ihooman-status-dot { width:
|
|
278
|
-
.ihooman-status-dot.offline { background: #
|
|
279
|
-
.ihooman-header-actions { display: flex; gap:
|
|
280
|
-
.ihooman-header-btn { width: 30px; height: 30px; border-radius: 8px; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; color: ${textSecondary}; transition:
|
|
281
|
-
.ihooman-header-btn:hover { background: ${
|
|
282
|
-
.ihooman-header-btn svg { width:
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
.ihooman-messages { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 20px 16px; display: flex; flex-direction: column; gap: 6px; background: ${bgColor}; overscroll-behavior: contain; min-height: 0; }
|
|
286
|
-
.ihooman-messages::-webkit-scrollbar { width: 4px; }
|
|
265
|
+
.ihooman-header-title { font-size: 16px; font-weight: 600; margin-bottom: 2px; }
|
|
266
|
+
.ihooman-header-status { display: flex; align-items: center; gap: 6px; font-size: 12px; opacity: 0.9; }
|
|
267
|
+
.ihooman-status-dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; }
|
|
268
|
+
.ihooman-status-dot.offline { background: #f59e0b; }
|
|
269
|
+
.ihooman-header-actions { display: flex; gap: 8px; }
|
|
270
|
+
.ihooman-header-btn { width: 30px; height: 30px; border-radius: ${isDark ? '8px' : '6px'}; background: ${isDark ? 'transparent' : 'rgba(255,255,255,0.15)'}; border: ${isDark ? `1px solid ${borderColor}` : 'none'}; cursor: pointer; display: flex; align-items: center; justify-content: center; color: ${isDark ? textSecondary : 'white'}; transition: all 0.2s; }
|
|
271
|
+
.ihooman-header-btn:hover { background: ${isDark ? bgTertiary : 'rgba(255,255,255,0.25)'}; color: ${isDark ? textColor : 'white'}; }
|
|
272
|
+
.ihooman-header-btn svg { width: 14px; height: 14px; }
|
|
273
|
+
.ihooman-messages { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 16px; display: flex; flex-direction: column; gap: 12px; background: ${bgColor}; overscroll-behavior: contain; min-height: 0; ${isDark ? 'background-image: linear-gradient(rgba(255,255,255,0.012) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.012) 1px, transparent 1px); background-size: 40px 40px;' : ''} }
|
|
274
|
+
.ihooman-messages::-webkit-scrollbar { width: 6px; }
|
|
287
275
|
.ihooman-messages::-webkit-scrollbar-track { background: transparent; }
|
|
288
|
-
.ihooman-messages::-webkit-scrollbar-thumb { background: ${
|
|
289
|
-
.ihooman-message { display: flex; flex-direction: column; max-width:
|
|
290
|
-
@keyframes ihooman-fadeIn { from { opacity: 0; transform: translateY(
|
|
276
|
+
.ihooman-messages::-webkit-scrollbar-thumb { background: ${borderColor}; border-radius: 3px; }
|
|
277
|
+
.ihooman-message { display: flex; flex-direction: column; max-width: 85%; animation: ihooman-fadeIn 0.3s ease; }
|
|
278
|
+
@keyframes ihooman-fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
|
|
291
279
|
.ihooman-message.user { align-self: flex-end; align-items: flex-end; }
|
|
292
|
-
.ihooman-message.bot { align-self: flex-start; align-items: flex-start;
|
|
293
|
-
.ihooman-message-content { padding:
|
|
294
|
-
.ihooman-message.user .ihooman-message-content { background: ${
|
|
295
|
-
.ihooman-message.bot .ihooman-message-content { background: ${
|
|
296
|
-
.ihooman-message-content
|
|
297
|
-
.ihooman-message-
|
|
298
|
-
.ihooman-
|
|
299
|
-
.ihooman-
|
|
300
|
-
.ihooman-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
.ihooman-typing-shimmer { font-size: 13px; color: ${mutedColor}; background: linear-gradient(90deg, ${mutedColor} 25%, ${textSecondary} 50%, ${mutedColor} 75%); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: ihooman-shimmer 1.5s ease-in-out infinite; }
|
|
305
|
-
@keyframes ihooman-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
|
|
306
|
-
.ihooman-typing-dots { display: flex; gap: 3px; align-items: center; }
|
|
307
|
-
.ihooman-typing-dot { width: 5px; height: 5px; background: ${mutedColor}; border-radius: 50%; animation: ihooman-typing 1.2s ease-in-out infinite; }
|
|
308
|
-
.ihooman-typing-dot:nth-child(2) { animation-delay: 0.15s; }
|
|
309
|
-
.ihooman-typing-dot:nth-child(3) { animation-delay: 0.3s; }
|
|
310
|
-
@keyframes ihooman-typing { 0%, 60%, 100% { opacity: 0.3; transform: scale(0.8); } 30% { opacity: 1; transform: scale(1); } }
|
|
311
|
-
|
|
312
|
-
/* ── Input Area ── */
|
|
280
|
+
.ihooman-message.bot { align-self: flex-start; align-items: flex-start; }
|
|
281
|
+
.ihooman-message-content { padding: 12px 16px; border-radius: 16px; word-wrap: break-word; }
|
|
282
|
+
.ihooman-message.user .ihooman-message-content { background: ${messageBgUser}; color: ${isDark ? textColor : 'white'}; border-bottom-right-radius: 4px; ${isDark ? `border: 1px solid ${borderColor};` : ''} }
|
|
283
|
+
.ihooman-message.bot .ihooman-message-content { background: ${messageBgBot}; color: ${textColor}; border-bottom-left-radius: 4px; ${isDark ? `border: 1px solid ${borderLight};` : ''} }
|
|
284
|
+
.ihooman-message-content code { background: rgba(0,0,0,0.1); padding: 2px 6px; border-radius: 4px; font-family: monospace; font-size: 13px; }
|
|
285
|
+
.ihooman-message-time { font-size: 11px; color: ${mutedColor}; margin-top: 4px; padding: 0 4px; }
|
|
286
|
+
.ihooman-typing { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: ${messageBgBot}; border-radius: 16px; border-bottom-left-radius: 4px; max-width: 80px; align-self: flex-start; }
|
|
287
|
+
.ihooman-typing-dots { display: flex; gap: 4px; }
|
|
288
|
+
.ihooman-typing-dot { width: 8px; height: 8px; background: ${mutedColor}; border-radius: 50%; animation: ihooman-typing 1.4s infinite; }
|
|
289
|
+
.ihooman-typing-dot:nth-child(2) { animation-delay: 0.2s; }
|
|
290
|
+
.ihooman-typing-dot:nth-child(3) { animation-delay: 0.4s; }
|
|
291
|
+
@keyframes ihooman-typing { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-4px); opacity: 1; } }
|
|
313
292
|
.ihooman-input-area { padding: 12px 16px; background: ${bgColor}; border-top: 1px solid ${borderColor}; flex-shrink: 0; }
|
|
314
|
-
.ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${inputBg}; border: 1px solid ${borderColor}; border-radius: 12px; padding: 8px 12px; transition: border-color 0.
|
|
315
|
-
.ihooman-input-wrapper:focus-within { border-color: ${isDark ? '
|
|
316
|
-
.ihooman-input { flex: 1; border: none; background: transparent; font-family: inherit; font-size: 14px; color: ${textColor}; resize: none; max-height: 100px; outline: none; line-height: 1.
|
|
293
|
+
.ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${inputBg}; border: 1px solid ${borderColor}; border-radius: ${isDark ? '16px' : '12px'}; padding: 8px 12px; transition: border-color 0.2s, box-shadow 0.2s; }
|
|
294
|
+
.ihooman-input-wrapper:focus-within { border-color: ${isDark ? 'rgba(255,255,255,0.12)' : primaryColor}; box-shadow: ${isDark ? 'none' : '0 0 0 3px rgba(0, 174, 255, 0.1)'}; }
|
|
295
|
+
.ihooman-input { flex: 1; border: none; background: transparent; font-family: inherit; font-size: 14px; color: ${textColor}; resize: none; max-height: 100px; outline: none; line-height: 1.4; }
|
|
317
296
|
.ihooman-input::placeholder { color: ${mutedColor}; }
|
|
318
|
-
.ihooman-input-btn { width:
|
|
319
|
-
.ihooman-input-btn:hover {
|
|
320
|
-
.ihooman-input-btn.send { background: ${
|
|
321
|
-
.ihooman-input-btn.send:hover { opacity: 0.
|
|
322
|
-
.ihooman-input-btn.send:disabled { opacity: 0.
|
|
297
|
+
.ihooman-input-btn { width: 32px; height: 32px; border-radius: 8px; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s; background: transparent; color: ${mutedColor}; }
|
|
298
|
+
.ihooman-input-btn:hover { background: ${borderColor}; color: ${textColor}; }
|
|
299
|
+
.ihooman-input-btn.send { background: ${isDark ? bgTertiary : `linear-gradient(135deg, ${gradientFrom}, ${gradientTo})`}; color: ${isDark ? mutedColor : 'white'}; ${isDark ? `border: 1px solid ${borderColor};` : ''} }
|
|
300
|
+
.ihooman-input-btn.send:hover { ${isDark ? `background: ${accentColor}; border-color: ${accentColor}; color: white;` : 'opacity: 0.9;'} }
|
|
301
|
+
.ihooman-input-btn.send:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
323
302
|
.ihooman-input-btn svg { width: 16px; height: 16px; }
|
|
324
|
-
.ihooman-input:disabled { opacity: 0.
|
|
325
|
-
.ihooman-input-btn.attach:disabled { opacity: 0.
|
|
303
|
+
.ihooman-input:disabled { opacity: 0.6; cursor: not-allowed; }
|
|
304
|
+
.ihooman-input-btn.attach:disabled { opacity: 0.4; cursor: not-allowed; }
|
|
326
305
|
.ihooman-file-input { display: none; }
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
.ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${mutedColor}; background: ${bgColor}; border-top: 1px solid ${borderSubtle}; }
|
|
330
|
-
.ihooman-powered a { color: ${textSecondary}; text-decoration: none; font-weight: 500; }
|
|
331
|
-
.ihooman-powered a:hover { color: ${textColor}; }
|
|
332
|
-
|
|
333
|
-
/* ── Escalation ── */
|
|
306
|
+
.ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${mutedColor}; background: ${bgColor}; }
|
|
307
|
+
.ihooman-powered a { color: ${primaryColor}; text-decoration: none; }
|
|
334
308
|
.ihooman-escalation-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
|
|
335
309
|
.ihooman-escalation-btn svg { width: 14px; height: 14px; flex-shrink: 0; }
|
|
336
|
-
|
|
337
|
-
/* ── Status Bar ── */
|
|
338
|
-
.ihooman-status-bar { padding: 8px 16px; text-align: center; font-size: 12px; display: none; font-weight: 500; }
|
|
310
|
+
.ihooman-status-bar { padding: 10px 16px; text-align: center; font-size: 13px; display: none; }
|
|
339
311
|
.ihooman-status-bar.show { display: block; }
|
|
340
|
-
.ihooman-status-bar.waiting { background:
|
|
341
|
-
.ihooman-status-bar.connected { background:
|
|
342
|
-
|
|
343
|
-
/* ── Chat View ── */
|
|
312
|
+
.ihooman-status-bar.waiting { background: #fef3c7; color: #92400e; }
|
|
313
|
+
.ihooman-status-bar.connected { background: #dcfce7; color: #166534; }
|
|
344
314
|
.ihooman-chat-view { display: flex; flex-direction: column; flex: 1; overflow: hidden; min-height: 0; }
|
|
345
315
|
.ihooman-chat-view.hidden { display: none; }
|
|
346
|
-
|
|
347
|
-
/* ── Ticket View ── */
|
|
348
|
-
.ihooman-ticket-view { display: none; flex-direction: column; padding: 20px; gap: 14px; background: ${bgColor}; flex: 1; overflow-y: auto; min-height: 0; }
|
|
316
|
+
.ihooman-ticket-view { display: none; flex-direction: column; padding: 20px; gap: 16px; background: ${bgColor}; flex: 1; overflow-y: auto; min-height: 0; }
|
|
349
317
|
.ihooman-ticket-view.show { display: flex; }
|
|
350
|
-
.ihooman-ticket-title { font-size:
|
|
351
|
-
.ihooman-ticket-subtitle { font-size: 13px; color: ${
|
|
352
|
-
.ihooman-ticket-input { padding:
|
|
353
|
-
.ihooman-ticket-input:focus { border-color: ${
|
|
318
|
+
.ihooman-ticket-title { font-size: 18px; font-weight: 600; color: ${textColor}; margin: 0; }
|
|
319
|
+
.ihooman-ticket-subtitle { font-size: 13px; color: ${mutedColor}; margin: 0; }
|
|
320
|
+
.ihooman-ticket-input { padding: 12px 14px; border: 1px solid ${borderColor}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${inputBg}; color: ${textColor}; outline: none; transition: border-color 0.2s; }
|
|
321
|
+
.ihooman-ticket-input:focus { border-color: ${primaryColor}; }
|
|
354
322
|
.ihooman-ticket-input::placeholder { color: ${mutedColor}; }
|
|
355
323
|
.ihooman-ticket-textarea { min-height: 100px; resize: vertical; }
|
|
356
|
-
.ihooman-ticket-submit { display: flex; align-items: center; justify-content: center; padding:
|
|
357
|
-
.ihooman-ticket-submit:hover { opacity: 0.
|
|
358
|
-
.ihooman-ticket-submit:disabled { opacity: 0.
|
|
359
|
-
.ihooman-ticket-back { display: flex; align-items: center; justify-content: center; padding: 10px; background: transparent; color: ${
|
|
360
|
-
.ihooman-ticket-back:hover { background: ${
|
|
361
|
-
|
|
362
|
-
/* ── History View ── */
|
|
324
|
+
.ihooman-ticket-submit { display: flex; align-items: center; justify-content: center; padding: 12px; background: linear-gradient(135deg, ${gradientFrom}, ${gradientTo}); color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; line-height: 1.4; }
|
|
325
|
+
.ihooman-ticket-submit:hover { opacity: 0.9; }
|
|
326
|
+
.ihooman-ticket-submit:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
327
|
+
.ihooman-ticket-back { display: flex; align-items: center; justify-content: center; padding: 10px; background: transparent; color: ${mutedColor}; border: 1px solid ${borderColor}; border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; line-height: 1.4; }
|
|
328
|
+
.ihooman-ticket-back:hover { background: ${isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.03)'}; }
|
|
363
329
|
.ihooman-history-view { display: none; flex-direction: column; flex: 1; overflow: hidden; background: ${bgColor}; }
|
|
364
330
|
.ihooman-history-view.show { display: flex; }
|
|
365
331
|
.ihooman-history-header { padding: 12px 16px; border-bottom: 1px solid ${borderColor}; display: flex; justify-content: space-between; align-items: center; }
|
|
366
|
-
.ihooman-history-title { font-size:
|
|
367
|
-
.ihooman-history-new { display: inline-flex; align-items: center; justify-content: center; gap: 4px; background: ${
|
|
368
|
-
.ihooman-history-new:hover { opacity: 0.
|
|
332
|
+
.ihooman-history-title { font-size: 14px; font-weight: 600; color: ${textColor}; margin: 0; }
|
|
333
|
+
.ihooman-history-new { display: inline-flex; align-items: center; justify-content: center; gap: 4px; background: linear-gradient(135deg, ${gradientFrom}, ${gradientTo}); color: white; border: none; padding: 6px 12px; border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; transition: all 0.2s; line-height: 1.4; }
|
|
334
|
+
.ihooman-history-new:hover { opacity: 0.9; }
|
|
369
335
|
.ihooman-history-new svg { width: 12px; height: 12px; flex-shrink: 0; }
|
|
370
336
|
.ihooman-history-list { flex: 1; overflow-y: auto; padding: 8px; overscroll-behavior: contain; }
|
|
371
|
-
.ihooman-history-item { padding: 12px; border: 1px solid ${borderColor}; border-radius:
|
|
372
|
-
.ihooman-history-item:hover { background: ${
|
|
373
|
-
.ihooman-history-item.active { background: ${
|
|
337
|
+
.ihooman-history-item { padding: 12px; border: 1px solid ${borderColor}; border-radius: 8px; margin-bottom: 6px; cursor: pointer; transition: all 0.2s; background: ${bgColor}; }
|
|
338
|
+
.ihooman-history-item:hover { background: ${isDark ? 'rgba(255,255,255,0.05)' : '#f8fafc'}; }
|
|
339
|
+
.ihooman-history-item.active { background: ${isDark ? 'rgba(0, 174, 255, 0.1)' : '#eff6ff'}; border-color: ${primaryColor}; }
|
|
374
340
|
.ihooman-history-preview { font-size: 13px; color: ${textColor}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
375
341
|
.ihooman-history-meta { font-size: 11px; color: ${mutedColor}; margin-top: 4px; display: flex; justify-content: space-between; }
|
|
376
|
-
.ihooman-history-empty { padding: 40px; text-align: center; color: ${mutedColor}; font-size:
|
|
377
|
-
|
|
378
|
-
/* ── Preset Questions ── */
|
|
379
|
-
.ihooman-preset-questions { padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 6px; background: ${bgColor}; border-top: 1px solid ${borderSubtle}; }
|
|
342
|
+
.ihooman-history-empty { padding: 40px; text-align: center; color: ${mutedColor}; font-size: 14px; }
|
|
343
|
+
.ihooman-preset-questions { padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 8px; background: ${bgColor}; border-top: ${isDark ? 'none' : `1px solid ${borderColor}`}; }
|
|
380
344
|
.ihooman-preset-questions:empty { display: none; }
|
|
381
345
|
.ihooman-preset-questions.hidden { display: none; }
|
|
382
|
-
|
|
383
|
-
/* ── Proactive Toast ── */
|
|
384
|
-
.ihooman-proactive-toast { position: fixed; ${positionRight ? 'right: 20px' : 'left: 20px'}; ${positionBottom ? 'bottom: 84px' : 'top: 84px'}; max-width: 320px; padding: 16px; background: ${bgElevated}; border-radius: 14px; box-shadow: ${shadowLg}; z-index: ${(zIndex ?? 9999) - 2}; opacity: 0; visibility: hidden; transform: translateY(8px); transition: all 0.2s ease-out; border: 1px solid ${borderColor}; }
|
|
346
|
+
.ihooman-proactive-toast { position: fixed; ${positionRight ? 'right: 20px' : 'left: 20px'}; ${positionBottom ? 'bottom: 90px' : 'top: 90px'}; max-width: 300px; padding: 16px; background: ${bgColor}; border-radius: 12px; box-shadow: 0 10px 40px rgba(0,0,0,0.15); z-index: ${(zIndex ?? 9999) - 2}; opacity: 0; visibility: hidden; transform: translateY(10px); transition: all 0.3s ease; border: 1px solid ${borderColor}; }
|
|
385
347
|
.ihooman-proactive-toast.show { opacity: 1; visibility: visible; transform: translateY(0); }
|
|
386
|
-
.ihooman-proactive-toast-content { font-size: 14px; color: ${textColor}; margin-bottom: 12px;
|
|
348
|
+
.ihooman-proactive-toast-content { font-size: 14px; color: ${textColor}; margin-bottom: 12px; }
|
|
387
349
|
.ihooman-proactive-toast-actions { display: flex; gap: 8px; }
|
|
388
|
-
.ihooman-proactive-toast-btn { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; border-radius:
|
|
389
|
-
.ihooman-proactive-toast-btn.primary { background: ${
|
|
390
|
-
.ihooman-proactive-toast-btn.primary:hover { opacity: 0.
|
|
391
|
-
.ihooman-proactive-toast-btn.secondary { background: transparent; color: ${
|
|
392
|
-
.ihooman-proactive-toast-btn.secondary:hover { background: ${
|
|
393
|
-
|
|
394
|
-
/* ── Survey View ── */
|
|
395
|
-
.ihooman-survey-view { display: none; flex-direction: column; padding: 24px; gap: 16px; background: ${bgColor}; flex: 1; align-items: center; justify-content: center; }
|
|
350
|
+
.ihooman-proactive-toast-btn { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.2s; line-height: 1.4; }
|
|
351
|
+
.ihooman-proactive-toast-btn.primary { background: linear-gradient(135deg, ${gradientFrom}, ${gradientTo}); color: white; border: none; }
|
|
352
|
+
.ihooman-proactive-toast-btn.primary:hover { opacity: 0.9; }
|
|
353
|
+
.ihooman-proactive-toast-btn.secondary { background: transparent; color: ${mutedColor}; border: 1px solid ${borderColor}; }
|
|
354
|
+
.ihooman-proactive-toast-btn.secondary:hover { background: ${isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.03)'}; }
|
|
355
|
+
.ihooman-survey-view { display: none; flex-direction: column; padding: 20px; gap: 16px; background: ${bgColor}; flex: 1; align-items: center; justify-content: center; }
|
|
396
356
|
.ihooman-survey-view.show { display: flex; }
|
|
397
|
-
.ihooman-survey-question { font-size: 16px; font-weight: 600; color: ${textColor}; text-align: center;
|
|
357
|
+
.ihooman-survey-question { font-size: 16px; font-weight: 600; color: ${textColor}; text-align: center; }
|
|
398
358
|
.ihooman-survey-stars { display: flex; gap: 8px; }
|
|
399
|
-
.ihooman-survey-star { width:
|
|
359
|
+
.ihooman-survey-star { width: 40px; height: 40px; cursor: pointer; color: ${mutedColor}; transition: all 0.2s; }
|
|
400
360
|
.ihooman-survey-star:hover, .ihooman-survey-star.active { color: #fbbf24; transform: scale(1.1); }
|
|
401
361
|
.ihooman-survey-star svg { width: 100%; height: 100%; }
|
|
402
|
-
.ihooman-survey-comment { width: 100%; padding: 12px; border: 1px solid ${borderColor}; border-radius:
|
|
403
|
-
.ihooman-survey-
|
|
404
|
-
.ihooman-survey-submit
|
|
405
|
-
.ihooman-survey-submit:hover { opacity: 0.85; }
|
|
362
|
+
.ihooman-survey-comment { width: 100%; padding: 12px; border: 1px solid ${borderColor}; border-radius: 8px; font-size: 14px; resize: none; min-height: 80px; background: ${inputBg}; color: ${textColor}; }
|
|
363
|
+
.ihooman-survey-submit { display: inline-flex; align-items: center; justify-content: center; padding: 10px 20px; background: linear-gradient(135deg, ${gradientFrom}, ${gradientTo}); color: white; border: none; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; line-height: 1.4; }
|
|
364
|
+
.ihooman-survey-submit:hover { opacity: 0.9; }
|
|
406
365
|
.ihooman-survey-skip { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; background: transparent; color: ${mutedColor}; border: none; font-size: 12px; cursor: pointer; line-height: 1.4; }
|
|
407
366
|
.ihooman-survey-skip:hover { color: ${textColor}; }
|
|
408
|
-
|
|
409
|
-
/* ── Feedback ── */
|
|
410
|
-
.ihooman-feedback-btns { display: flex; gap: 4px; margin-top: 4px; }
|
|
367
|
+
.ihooman-feedback-btns { display: flex; gap: 6px; margin-top: 6px; }
|
|
411
368
|
.ihooman-feedback-btn svg { width: 12px; height: 12px; }
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
.ihooman-carousel {
|
|
415
|
-
.ihooman-carousel::-webkit-scrollbar { height: 3px; }
|
|
416
|
-
.ihooman-carousel::-webkit-scrollbar-thumb { background: ${isDark ? '#27272a' : '#d4d4d8'}; border-radius: 2px; }
|
|
417
|
-
.ihooman-carousel-card { min-width: 200px; max-width: 250px; border: 1px solid ${borderColor}; border-radius: 12px; overflow: hidden; scroll-snap-align: start; background: ${bgElevated}; }
|
|
369
|
+
.ihooman-carousel { display: flex; gap: 12px; overflow-x: auto; padding: 8px 0; scroll-snap-type: x mandatory; }
|
|
370
|
+
.ihooman-carousel::-webkit-scrollbar { height: 4px; }
|
|
371
|
+
.ihooman-carousel-card { min-width: 200px; max-width: 250px; border: 1px solid ${borderColor}; border-radius: 12px; overflow: hidden; scroll-snap-align: start; background: ${bgColor}; }
|
|
418
372
|
.ihooman-carousel-card img { width: 100%; height: 120px; object-fit: cover; }
|
|
419
373
|
.ihooman-carousel-card-content { padding: 12px; }
|
|
420
|
-
.ihooman-carousel-card-title { font-size:
|
|
421
|
-
.ihooman-carousel-card-desc { font-size: 12px; color: ${
|
|
374
|
+
.ihooman-carousel-card-title { font-size: 14px; font-weight: 600; color: ${textColor}; margin-bottom: 4px; }
|
|
375
|
+
.ihooman-carousel-card-desc { font-size: 12px; color: ${mutedColor}; margin-bottom: 8px; }
|
|
422
376
|
.ihooman-carousel-card-btns { display: flex; flex-direction: column; gap: 6px; }
|
|
423
|
-
|
|
424
|
-
/* ── Quick Replies ── */
|
|
425
377
|
.ihooman-quick-replies { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
|
|
426
|
-
|
|
427
|
-
/* ── Responsive ── */
|
|
428
|
-
@media (max-width: 480px) { .ihooman-window { width: calc(100vw - 16px); height: calc(100vh - 100px); min-height: 400px; max-height: calc(100vh - 100px); left: 8px; right: 8px; bottom: 80px; } .ihooman-toggle { ${positionRight ? 'right: 16px' : 'left: 16px'}; bottom: 16px; } .ihooman-proactive-toast { left: 8px; right: 8px; max-width: none; } }
|
|
378
|
+
@media (max-width: 480px) { .ihooman-window { width: calc(100vw - 20px); height: calc(100vh - 100px); min-height: 400px; max-height: calc(100vh - 100px); left: 10px; right: 10px; bottom: 80px; } .ihooman-toggle { ${positionRight ? 'right: 16px' : 'left: 16px'}; bottom: 16px; } .ihooman-proactive-toast { left: 10px; right: 10px; max-width: none; } }
|
|
429
379
|
`;
|
|
430
380
|
}
|
|
431
381
|
// ============================================================================
|
|
@@ -465,9 +415,9 @@ function createWidget() {
|
|
|
465
415
|
<div class="ihooman-window" role="dialog" aria-label="Chat window">
|
|
466
416
|
<div class="ihooman-container">
|
|
467
417
|
<div class="ihooman-header">
|
|
468
|
-
<div class="ihooman-header-avatar">${config.avatarUrl ? `<img src="${escapeHtml(config.avatarUrl)}" alt="
|
|
418
|
+
<div class="ihooman-header-avatar">${config.avatarUrl ? `<img src="${escapeHtml(config.avatarUrl)}" alt="Support">` : icons.bot}</div>
|
|
469
419
|
<div class="ihooman-header-info">
|
|
470
|
-
<div class="ihooman-header-title">${escapeHtml(config.title || '
|
|
420
|
+
<div class="ihooman-header-title">${escapeHtml(config.title || 'Chat Support')}</div>
|
|
471
421
|
<div class="ihooman-header-status"><span class="ihooman-status-dot"></span><span class="ihooman-status-text">Online</span></div>
|
|
472
422
|
</div>
|
|
473
423
|
<div class="ihooman-header-actions">
|
|
@@ -489,7 +439,7 @@ function createWidget() {
|
|
|
489
439
|
</div>
|
|
490
440
|
</div>
|
|
491
441
|
<div class="ihooman-ticket-view">
|
|
492
|
-
<h4 class="ihooman-ticket-title"
|
|
442
|
+
<h4 class="ihooman-ticket-title">📝 Submit a Ticket</h4>
|
|
493
443
|
<p class="ihooman-ticket-subtitle">We'll get back to you via email</p>
|
|
494
444
|
<input class="ihooman-ticket-input" id="ihooman-ticket-name" placeholder="Your name" required>
|
|
495
445
|
<input class="ihooman-ticket-input" id="ihooman-ticket-email" type="email" placeholder="Your email" required>
|
|
@@ -1080,7 +1030,7 @@ function showTyping() {
|
|
|
1080
1030
|
return;
|
|
1081
1031
|
const typing = document.createElement('div');
|
|
1082
1032
|
typing.className = 'ihooman-typing';
|
|
1083
|
-
typing.innerHTML = `<
|
|
1033
|
+
typing.innerHTML = `<div class="ihooman-typing-dots"><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span></div>`;
|
|
1084
1034
|
elements.messages.appendChild(typing);
|
|
1085
1035
|
elements.messages.scrollTop = elements.messages.scrollHeight;
|
|
1086
1036
|
}
|
|
@@ -1102,7 +1052,7 @@ function disableInput() {
|
|
|
1102
1052
|
function enableInput() {
|
|
1103
1053
|
if (elements.input) {
|
|
1104
1054
|
elements.input.disabled = false;
|
|
1105
|
-
elements.input.placeholder = config.placeholder || '
|
|
1055
|
+
elements.input.placeholder = config.placeholder || 'Type a message...';
|
|
1106
1056
|
}
|
|
1107
1057
|
if (elements.sendBtn)
|
|
1108
1058
|
elements.sendBtn.disabled = !elements.input?.value.trim();
|
|
@@ -1726,10 +1676,11 @@ function getFontWeightValue(weight) {
|
|
|
1726
1676
|
default: return 500;
|
|
1727
1677
|
}
|
|
1728
1678
|
}
|
|
1679
|
+
// Default button styles - MUST match client-dashboard/src/components/widget/ButtonStylingEditor.tsx
|
|
1729
1680
|
const DEFAULT_BUTTON_STYLES = {
|
|
1730
1681
|
primary: {
|
|
1731
|
-
backgroundColor: '#
|
|
1732
|
-
textColor: '#
|
|
1682
|
+
backgroundColor: '#00aeff',
|
|
1683
|
+
textColor: '#ffffff',
|
|
1733
1684
|
borderColor: 'transparent',
|
|
1734
1685
|
borderWidth: 0,
|
|
1735
1686
|
borderRadius: 8,
|
|
@@ -1740,8 +1691,8 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1740
1691
|
},
|
|
1741
1692
|
secondary: {
|
|
1742
1693
|
backgroundColor: 'transparent',
|
|
1743
|
-
textColor: '#
|
|
1744
|
-
borderColor: '#
|
|
1694
|
+
textColor: '#6b7280',
|
|
1695
|
+
borderColor: '#e5e7eb',
|
|
1745
1696
|
borderWidth: 1,
|
|
1746
1697
|
borderRadius: 8,
|
|
1747
1698
|
paddingVertical: 8,
|
|
@@ -1750,9 +1701,9 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1750
1701
|
fontWeight: 'medium',
|
|
1751
1702
|
},
|
|
1752
1703
|
presetQuestions: {
|
|
1753
|
-
backgroundColor: '
|
|
1754
|
-
textColor: '#
|
|
1755
|
-
borderColor: '
|
|
1704
|
+
backgroundColor: 'rgba(0, 174, 255, 0.1)',
|
|
1705
|
+
textColor: '#00aeff',
|
|
1706
|
+
borderColor: 'rgba(0, 174, 255, 0.2)',
|
|
1756
1707
|
borderWidth: 1,
|
|
1757
1708
|
borderRadius: 20,
|
|
1758
1709
|
paddingVertical: 6,
|
|
@@ -1761,9 +1712,9 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1761
1712
|
fontWeight: 'medium',
|
|
1762
1713
|
},
|
|
1763
1714
|
quickReplies: {
|
|
1764
|
-
backgroundColor: '#
|
|
1765
|
-
textColor: '#
|
|
1766
|
-
borderColor: '#
|
|
1715
|
+
backgroundColor: '#f3f4f6',
|
|
1716
|
+
textColor: '#374151',
|
|
1717
|
+
borderColor: '#e5e7eb',
|
|
1767
1718
|
borderWidth: 1,
|
|
1768
1719
|
borderRadius: 16,
|
|
1769
1720
|
paddingVertical: 5,
|
|
@@ -1773,8 +1724,8 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1773
1724
|
},
|
|
1774
1725
|
feedback: {
|
|
1775
1726
|
backgroundColor: 'transparent',
|
|
1776
|
-
textColor: '#
|
|
1777
|
-
borderColor: '#
|
|
1727
|
+
textColor: '#9ca3af',
|
|
1728
|
+
borderColor: '#e5e7eb',
|
|
1778
1729
|
borderWidth: 1,
|
|
1779
1730
|
borderRadius: 6,
|
|
1780
1731
|
paddingVertical: 4,
|
|
@@ -1783,19 +1734,19 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1783
1734
|
fontWeight: 'medium',
|
|
1784
1735
|
},
|
|
1785
1736
|
headerActions: {
|
|
1786
|
-
backgroundColor: '
|
|
1787
|
-
textColor: '#
|
|
1737
|
+
backgroundColor: 'rgba(255, 255, 255, 0.1)',
|
|
1738
|
+
textColor: '#ffffff',
|
|
1788
1739
|
borderColor: 'transparent',
|
|
1789
1740
|
borderWidth: 0,
|
|
1790
|
-
borderRadius:
|
|
1741
|
+
borderRadius: 6,
|
|
1791
1742
|
paddingVertical: 6,
|
|
1792
1743
|
paddingHorizontal: 6,
|
|
1793
1744
|
fontSize: 14,
|
|
1794
1745
|
fontWeight: 'medium',
|
|
1795
1746
|
},
|
|
1796
1747
|
escalation: {
|
|
1797
|
-
backgroundColor: '#
|
|
1798
|
-
textColor: '#
|
|
1748
|
+
backgroundColor: '#00aeff',
|
|
1749
|
+
textColor: '#ffffff',
|
|
1799
1750
|
borderColor: 'transparent',
|
|
1800
1751
|
borderWidth: 0,
|
|
1801
1752
|
borderRadius: 8,
|
|
@@ -1805,21 +1756,21 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1805
1756
|
fontWeight: 'medium',
|
|
1806
1757
|
},
|
|
1807
1758
|
cardActions: {
|
|
1808
|
-
backgroundColor: '#
|
|
1809
|
-
textColor: '#
|
|
1759
|
+
backgroundColor: '#00aeff',
|
|
1760
|
+
textColor: '#ffffff',
|
|
1810
1761
|
borderColor: 'transparent',
|
|
1811
1762
|
borderWidth: 0,
|
|
1812
|
-
borderRadius:
|
|
1763
|
+
borderRadius: 6,
|
|
1813
1764
|
paddingVertical: 6,
|
|
1814
1765
|
paddingHorizontal: 12,
|
|
1815
1766
|
fontSize: 12,
|
|
1816
1767
|
fontWeight: 'medium',
|
|
1817
1768
|
},
|
|
1818
1769
|
toggleButton: {
|
|
1819
|
-
backgroundColor: '#
|
|
1820
|
-
textColor: '#
|
|
1821
|
-
borderColor: '
|
|
1822
|
-
borderWidth:
|
|
1770
|
+
backgroundColor: '#00aeff',
|
|
1771
|
+
textColor: '#ffffff',
|
|
1772
|
+
borderColor: 'transparent',
|
|
1773
|
+
borderWidth: 0,
|
|
1823
1774
|
borderRadius: 30,
|
|
1824
1775
|
paddingVertical: 0,
|
|
1825
1776
|
paddingHorizontal: 0,
|
|
@@ -1828,7 +1779,7 @@ const DEFAULT_BUTTON_STYLES = {
|
|
|
1828
1779
|
},
|
|
1829
1780
|
attachButton: {
|
|
1830
1781
|
backgroundColor: 'transparent',
|
|
1831
|
-
textColor: '#
|
|
1782
|
+
textColor: '#6b7280',
|
|
1832
1783
|
borderColor: 'transparent',
|
|
1833
1784
|
borderWidth: 0,
|
|
1834
1785
|
borderRadius: 8,
|