yasserrmd commited on
Commit
9590982
·
verified ·
1 Parent(s): d6ea8e7

Update static/conv.html

Browse files
Files changed (1) hide show
  1. static/conv.html +155 -39
static/conv.html CHANGED
@@ -8,29 +8,33 @@
8
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
9
  <!-- Bootstrap Icons -->
10
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
 
 
11
  <style>
12
  :root {
13
- --primary: #5046e5;
14
- --primary-dark: #3730a3;
15
- --accent: #06b6d4;
16
- --accent-light: #22d3ee;
17
- --bg-color: #f8fafc;
18
  --card-bg: #ffffff;
19
  --dark-text: #0f172a;
20
  --light-text: #f8fafc;
21
- --message-bg-user: #7c3aed;
22
  --message-bg-assistant: #e2e8f0;
23
- --border-radius: 16px;
 
24
  }
25
 
26
  body {
27
  background-color: var(--bg-color);
28
- font-family: 'Inter', 'Segoe UI', sans-serif;
29
  color: var(--dark-text);
30
  min-height: 100vh;
31
  display: flex;
32
  align-items: center;
33
  justify-content: center;
 
34
  }
35
 
36
  .app-container {
@@ -38,28 +42,46 @@
38
  margin: 20px auto;
39
  background: var(--card-bg);
40
  border-radius: var(--border-radius);
41
- box-shadow: 0 10px 25px rgba(0, 0, 0, 0.05), 0 0 1px rgba(0, 0, 0, 0.1);
42
  overflow: hidden;
43
  display: grid;
44
  grid-template-rows: auto 1fr auto;
45
  height: 85vh;
46
  width: 100%;
 
47
  }
48
 
49
  .app-header {
50
  padding: 24px;
51
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
52
  color: var(--light-text);
53
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
54
  display: flex;
55
  align-items: center;
56
  gap: 15px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  }
58
 
59
  .app-header h1 {
60
- font-size: 1.5rem;
61
  font-weight: 600;
62
  margin: 0;
 
 
 
63
  }
64
 
65
  .app-title-icon {
@@ -67,23 +89,46 @@
67
  display: flex;
68
  align-items: center;
69
  animation: pulse 2s infinite alternate;
 
 
 
 
 
 
 
70
  }
71
 
72
  .conversation-area {
73
- padding: 20px;
74
  overflow-y: auto;
75
  display: flex;
76
  flex-direction: column;
77
- gap: 16px;
78
  background-color: var(--bg-color);
79
  height: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  }
81
 
82
  .message-group {
83
  display: flex;
84
  flex-direction: column;
85
  gap: 8px;
86
- max-width: 85%;
87
  }
88
 
89
  .message-group.user {
@@ -97,6 +142,11 @@
97
  line-height: 1.5;
98
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
99
  animation: fadeIn 0.3s ease-out;
 
 
 
 
 
100
  }
101
 
102
  .message.user {
@@ -112,14 +162,15 @@
112
  }
113
 
114
  .message-avatar {
115
- width: 32px;
116
- height: 32px;
117
  border-radius: 50%;
118
  display: flex;
119
  align-items: center;
120
  justify-content: center;
121
  font-size: 14px;
122
  margin-bottom: 6px;
 
123
  }
124
 
125
  .user .message-avatar {
@@ -134,12 +185,24 @@
134
  }
135
 
136
  .controls-area {
137
- padding: 24px;
138
  background-color: white;
139
  border-top: 1px solid rgba(0, 0, 0, 0.05);
140
  display: flex;
141
  justify-content: center;
142
  align-items: center;
 
 
 
 
 
 
 
 
 
 
 
 
143
  }
144
 
145
  .listen-container {
@@ -149,8 +212,8 @@
149
  }
150
 
151
  .listen-ball {
152
- width: 100px;
153
- height: 100px;
154
  border-radius: 50%;
155
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
156
  color: white;
@@ -159,23 +222,34 @@
159
  justify-content: center;
160
  cursor: pointer;
161
  transition: all 0.3s ease;
162
- box-shadow: 0 4px 16px rgba(80, 70, 229, 0.4);
163
  position: relative;
164
  overflow: hidden;
165
  }
166
 
 
 
 
 
 
 
 
 
 
 
167
  .listen-ball.listening {
168
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
169
  animation: pulse 1.5s infinite;
170
  }
171
 
172
  .listen-ball.processing {
173
- background: linear-gradient(135deg, #8b5cf6, #7c3aed);
174
- animation: none;
175
  }
176
 
177
  .listen-ball i {
178
- font-size: 2.5rem;
 
179
  }
180
 
181
  .sound-wave {
@@ -194,21 +268,29 @@
194
  }
195
 
196
  .status-badge {
197
- background-color: rgba(0, 0, 0, 0.04);
198
  border-radius: 50px;
199
- padding: 8px 16px;
200
  font-size: 0.9rem;
201
  color: var(--dark-text);
202
- margin-top: 16px;
203
  display: inline-flex;
204
  align-items: center;
205
- gap: 8px;
206
  font-weight: 500;
207
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
 
 
 
 
 
 
 
208
  }
209
 
210
  .status-badge i {
211
- font-size: 1rem;
 
212
  }
213
 
214
  .audio-controls {
@@ -227,15 +309,24 @@
227
  }
228
 
229
  .empty-state i {
230
- font-size: 3.5rem;
231
  margin-bottom: 20px;
232
- color: #cbd5e1;
 
233
  }
234
 
235
  .empty-state h3 {
236
- font-size: 1.3rem;
237
- margin-bottom: 10px;
 
 
 
 
 
238
  color: #64748b;
 
 
 
239
  }
240
 
241
  .time-stamp {
@@ -246,9 +337,14 @@
246
  }
247
 
248
  @keyframes pulse {
249
- 0% { transform: scale(1); }
250
- 50% { transform: scale(1.05); }
251
- 100% { transform: scale(1); }
 
 
 
 
 
252
  }
253
 
254
  @keyframes wave {
@@ -273,12 +369,31 @@
273
  }
274
 
275
  .listen-ball {
276
- width: 80px;
277
- height: 80px;
278
  }
279
 
280
  .listen-ball i {
281
- font-size: 2rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  }
283
  }
284
  </style>
@@ -323,6 +438,7 @@
323
  </div>
324
  </div>
325
 
 
326
  <!-- Bootstrap JS Bundle -->
327
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
328
  <script>
 
8
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
9
  <!-- Bootstrap Icons -->
10
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
11
+ <!-- Google Fonts -->
12
+ <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
13
  <style>
14
  :root {
15
+ --primary: #2dd4bf;
16
+ --primary-dark: #0d9488;
17
+ --accent: #f59e0b;
18
+ --accent-light: #fbbf24;
19
+ --bg-color: #f0f9ff;
20
  --card-bg: #ffffff;
21
  --dark-text: #0f172a;
22
  --light-text: #f8fafc;
23
+ --message-bg-user: #2dd4bf;
24
  --message-bg-assistant: #e2e8f0;
25
+ --border-radius: 20px;
26
+ --shadow: 0 10px 25px rgba(0, 0, 0, 0.05), 0 0 1px rgba(0, 0, 0, 0.1);
27
  }
28
 
29
  body {
30
  background-color: var(--bg-color);
31
+ font-family: 'Poppins', 'Segoe UI', sans-serif;
32
  color: var(--dark-text);
33
  min-height: 100vh;
34
  display: flex;
35
  align-items: center;
36
  justify-content: center;
37
+ background-image: radial-gradient(circle at 10% 20%, rgba(45, 212, 191, 0.1) 0%, rgba(45, 212, 191, 0.03) 50%);
38
  }
39
 
40
  .app-container {
 
42
  margin: 20px auto;
43
  background: var(--card-bg);
44
  border-radius: var(--border-radius);
45
+ box-shadow: var(--shadow);
46
  overflow: hidden;
47
  display: grid;
48
  grid-template-rows: auto 1fr auto;
49
  height: 85vh;
50
  width: 100%;
51
+ border: 1px solid rgba(45, 212, 191, 0.1);
52
  }
53
 
54
  .app-header {
55
  padding: 24px;
56
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
57
  color: var(--light-text);
58
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
59
  display: flex;
60
  align-items: center;
61
  gap: 15px;
62
+ position: relative;
63
+ overflow: hidden;
64
+ }
65
+
66
+ .app-header::before {
67
+ content: '';
68
+ position: absolute;
69
+ top: 0;
70
+ left: 0;
71
+ right: 0;
72
+ bottom: 0;
73
+ background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='rgba(255,255,255,0.1)' fill-rule='evenodd'/%3E%3C/svg%3E");
74
+ opacity: 0.5;
75
+ z-index: 0;
76
  }
77
 
78
  .app-header h1 {
79
+ font-size: 1.6rem;
80
  font-weight: 600;
81
  margin: 0;
82
+ position: relative;
83
+ z-index: 1;
84
+ letter-spacing: 0.5px;
85
  }
86
 
87
  .app-title-icon {
 
89
  display: flex;
90
  align-items: center;
91
  animation: pulse 2s infinite alternate;
92
+ position: relative;
93
+ z-index: 1;
94
+ background: rgba(255, 255, 255, 0.2);
95
+ border-radius: 50%;
96
+ width: 40px;
97
+ height: 40px;
98
+ justify-content: center;
99
  }
100
 
101
  .conversation-area {
102
+ padding: 24px;
103
  overflow-y: auto;
104
  display: flex;
105
  flex-direction: column;
106
+ gap: 20px;
107
  background-color: var(--bg-color);
108
  height: 100%;
109
+ background-image: linear-gradient(rgba(45, 212, 191, 0.03) 1px, transparent 1px),
110
+ linear-gradient(90deg, rgba(45, 212, 191, 0.03) 1px, transparent 1px);
111
+ background-size: 20px 20px;
112
+ }
113
+
114
+ .conversation-area::-webkit-scrollbar {
115
+ width: 8px;
116
+ }
117
+
118
+ .conversation-area::-webkit-scrollbar-track {
119
+ background: transparent;
120
+ }
121
+
122
+ .conversation-area::-webkit-scrollbar-thumb {
123
+ background-color: rgba(45, 212, 191, 0.3);
124
+ border-radius: 20px;
125
  }
126
 
127
  .message-group {
128
  display: flex;
129
  flex-direction: column;
130
  gap: 8px;
131
+ max-width: 80%;
132
  }
133
 
134
  .message-group.user {
 
142
  line-height: 1.5;
143
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
144
  animation: fadeIn 0.3s ease-out;
145
+ transition: transform 0.2s ease;
146
+ }
147
+
148
+ .message:hover {
149
+ transform: translateY(-2px);
150
  }
151
 
152
  .message.user {
 
162
  }
163
 
164
  .message-avatar {
165
+ width: 36px;
166
+ height: 36px;
167
  border-radius: 50%;
168
  display: flex;
169
  align-items: center;
170
  justify-content: center;
171
  font-size: 14px;
172
  margin-bottom: 6px;
173
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);
174
  }
175
 
176
  .user .message-avatar {
 
185
  }
186
 
187
  .controls-area {
188
+ padding: 28px;
189
  background-color: white;
190
  border-top: 1px solid rgba(0, 0, 0, 0.05);
191
  display: flex;
192
  justify-content: center;
193
  align-items: center;
194
+ position: relative;
195
+ }
196
+
197
+ .controls-area::before {
198
+ content: '';
199
+ position: absolute;
200
+ top: 0;
201
+ left: 0;
202
+ right: 0;
203
+ height: 4px;
204
+ background: linear-gradient(90deg, var(--primary), var(--accent));
205
+ opacity: 0.6;
206
  }
207
 
208
  .listen-container {
 
212
  }
213
 
214
  .listen-ball {
215
+ width: 110px;
216
+ height: 110px;
217
  border-radius: 50%;
218
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
219
  color: white;
 
222
  justify-content: center;
223
  cursor: pointer;
224
  transition: all 0.3s ease;
225
+ box-shadow: 0 6px 20px rgba(45, 212, 191, 0.4);
226
  position: relative;
227
  overflow: hidden;
228
  }
229
 
230
+ .listen-ball::before {
231
+ content: '';
232
+ position: absolute;
233
+ width: 150%;
234
+ height: 150%;
235
+ background: radial-gradient(circle, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 70%);
236
+ top: -25%;
237
+ left: -25%;
238
+ }
239
+
240
  .listen-ball.listening {
241
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
242
  animation: pulse 1.5s infinite;
243
  }
244
 
245
  .listen-ball.processing {
246
+ background: linear-gradient(135deg, var(--accent-light), var(--accent));
247
+ animation: rotate 2s linear infinite;
248
  }
249
 
250
  .listen-ball i {
251
+ font-size: 2.8rem;
252
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
253
  }
254
 
255
  .sound-wave {
 
268
  }
269
 
270
  .status-badge {
271
+ background-color: white;
272
  border-radius: 50px;
273
+ padding: 10px 20px;
274
  font-size: 0.9rem;
275
  color: var(--dark-text);
276
+ margin-top: 18px;
277
  display: inline-flex;
278
  align-items: center;
279
+ gap: 10px;
280
  font-weight: 500;
281
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
282
+ border: 1px solid rgba(45, 212, 191, 0.2);
283
+ transition: all 0.3s ease;
284
+ }
285
+
286
+ .status-badge:hover {
287
+ transform: translateY(-2px);
288
+ box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1);
289
  }
290
 
291
  .status-badge i {
292
+ font-size: 1.1rem;
293
+ color: var(--primary);
294
  }
295
 
296
  .audio-controls {
 
309
  }
310
 
311
  .empty-state i {
312
+ font-size: 4rem;
313
  margin-bottom: 20px;
314
+ color: var(--primary);
315
+ opacity: 0.7;
316
  }
317
 
318
  .empty-state h3 {
319
+ font-size: 1.5rem;
320
+ margin-bottom: 12px;
321
+ color: #475569;
322
+ font-weight: 600;
323
+ }
324
+
325
+ .empty-state p {
326
  color: #64748b;
327
+ font-size: 1.1rem;
328
+ max-width: 260px;
329
+ line-height: 1.6;
330
  }
331
 
332
  .time-stamp {
 
337
  }
338
 
339
  @keyframes pulse {
340
+ 0% { transform: scale(1); box-shadow: 0 6px 20px rgba(45, 212, 191, 0.4); }
341
+ 50% { transform: scale(1.05); box-shadow: 0 8px 25px rgba(45, 212, 191, 0.6); }
342
+ 100% { transform: scale(1); box-shadow: 0 6px 20px rgba(45, 212, 191, 0.4); }
343
+ }
344
+
345
+ @keyframes rotate {
346
+ from { transform: rotate(0deg); }
347
+ to { transform: rotate(360deg); }
348
  }
349
 
350
  @keyframes wave {
 
369
  }
370
 
371
  .listen-ball {
372
+ width: 90px;
373
+ height: 90px;
374
  }
375
 
376
  .listen-ball i {
377
+ font-size: 2.2rem;
378
+ }
379
+
380
+ .app-header h1 {
381
+ font-size: 1.4rem;
382
+ }
383
+
384
+ .controls-area {
385
+ padding: 20px;
386
+ }
387
+
388
+ .status-badge {
389
+ padding: 8px 16px;
390
+ font-size: 0.85rem;
391
+ }
392
+ }
393
+
394
+ @media (min-width: 1200px) {
395
+ .app-container {
396
+ max-width: 1000px;
397
  }
398
  }
399
  </style>
 
438
  </div>
439
  </div>
440
 
441
+
442
  <!-- Bootstrap JS Bundle -->
443
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
444
  <script>