tommytracx commited on
Commit
6fa4511
·
verified ·
1 Parent(s): 5ace8a9

Create index.html

Browse files
Files changed (1) hide show
  1. templates/index.html +476 -0
templates/index.html ADDED
@@ -0,0 +1,476 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AGI Telecom Interface</title>
7
+ <style>
8
+ :root {
9
+ --primary: #3498db;
10
+ --primary-dark: #2980b9;
11
+ --success: #2ecc71;
12
+ --warning: #f39c12;
13
+ --danger: #e74c3c;
14
+ --light: #f8f9fa;
15
+ --dark: #343a40;
16
+ --gray: #6c757d;
17
+ --shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
18
+ --transition: all 0.3s ease;
19
+ }
20
+
21
+ * {
22
+ box-sizing: border-box;
23
+ margin: 0;
24
+ padding: 0;
25
+ }
26
+
27
+ body {
28
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
29
+ line-height: 1.6;
30
+ background-color: #f5f7fa;
31
+ color: var(--dark);
32
+ padding: 0;
33
+ margin: 0;
34
+ }
35
+
36
+ .container {
37
+ max-width: 1000px;
38
+ margin: 0 auto;
39
+ padding: 20px;
40
+ }
41
+
42
+ header {
43
+ background-color: white;
44
+ padding: 20px;
45
+ box-shadow: var(--shadow);
46
+ position: relative;
47
+ z-index: 100;
48
+ }
49
+
50
+ .logo {
51
+ display: flex;
52
+ align-items: center;
53
+ gap: 10px;
54
+ }
55
+
56
+ .logo h1 {
57
+ font-size: 1.5rem;
58
+ font-weight: 600;
59
+ margin: 0;
60
+ }
61
+
62
+ .logo-icon {
63
+ width: 36px;
64
+ height: 36px;
65
+ background-color: var(--primary);
66
+ border-radius: 8px;
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ color: white;
71
+ }
72
+
73
+ main {
74
+ display: grid;
75
+ grid-template-columns: 1fr;
76
+ gap: 20px;
77
+ margin-top: 20px;
78
+ }
79
+
80
+ @media (min-width: 768px) {
81
+ main {
82
+ grid-template-columns: 3fr 1fr;
83
+ }
84
+ }
85
+
86
+ .card {
87
+ background-color: white;
88
+ border-radius: 10px;
89
+ box-shadow: var(--shadow);
90
+ overflow: hidden;
91
+ }
92
+
93
+ .card-header {
94
+ padding: 15px 20px;
95
+ background-color: var(--light);
96
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
97
+ font-weight: 600;
98
+ display: flex;
99
+ justify-content: space-between;
100
+ align-items: center;
101
+ }
102
+
103
+ .card-body {
104
+ padding: 20px;
105
+ }
106
+
107
+ .conversation {
108
+ height: 400px;
109
+ overflow-y: auto;
110
+ display: flex;
111
+ flex-direction: column;
112
+ gap: 15px;
113
+ padding: 15px;
114
+ }
115
+
116
+ .message {
117
+ max-width: 80%;
118
+ padding: 12px 15px;
119
+ border-radius: 18px;
120
+ position: relative;
121
+ animation: fadeIn 0.3s ease;
122
+ }
123
+
124
+ @keyframes fadeIn {
125
+ from { opacity: 0; transform: translateY(10px); }
126
+ to { opacity: 1; transform: translateY(0); }
127
+ }
128
+
129
+ .user-message {
130
+ background-color: var(--primary);
131
+ color: white;
132
+ align-self: flex-end;
133
+ border-bottom-right-radius: 5px;
134
+ }
135
+
136
+ .bot-message {
137
+ background-color: var(--light);
138
+ align-self: flex-start;
139
+ border-bottom-left-radius: 5px;
140
+ }
141
+
142
+ .system-message {
143
+ align-self: center;
144
+ background-color: rgba(0, 0, 0, 0.05);
145
+ padding: 8px 12px;
146
+ border-radius: 10px;
147
+ font-size: 0.8rem;
148
+ color: var(--gray);
149
+ max-width: 90%;
150
+ }
151
+
152
+ .message-input {
153
+ display: flex;
154
+ gap: 10px;
155
+ margin-top: 15px;
156
+ }
157
+
158
+ .message-input input {
159
+ flex: 1;
160
+ padding: 12px 15px;
161
+ border: 1px solid rgba(0, 0, 0, 0.1);
162
+ border-radius: 10px;
163
+ font-size: 1rem;
164
+ outline: none;
165
+ transition: var(--transition);
166
+ }
167
+
168
+ .message-input input:focus {
169
+ border-color: var(--primary);
170
+ box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
171
+ }
172
+
173
+ .btn {
174
+ padding: 12px 20px;
175
+ background-color: var(--primary);
176
+ color: white;
177
+ border: none;
178
+ border-radius: 10px;
179
+ cursor: pointer;
180
+ font-size: 1rem;
181
+ font-weight: 500;
182
+ transition: var(--transition);
183
+ display: flex;
184
+ align-items: center;
185
+ justify-content: center;
186
+ gap: 5px;
187
+ }
188
+
189
+ .btn:hover {
190
+ background-color: var(--primary-dark);
191
+ }
192
+
193
+ .btn-success {
194
+ background-color: var(--success);
195
+ }
196
+
197
+ .btn-success:hover {
198
+ background-color: #27ae60;
199
+ }
200
+
201
+ .btn-danger {
202
+ background-color: var(--danger);
203
+ }
204
+
205
+ .btn-danger:hover {
206
+ background-color: #c0392b;
207
+ }
208
+
209
+ .btn-icon {
210
+ padding: 12px;
211
+ }
212
+
213
+ .call-controls {
214
+ display: flex;
215
+ gap: 10px;
216
+ margin-top: 20px;
217
+ }
218
+
219
+ .call-controls .btn {
220
+ flex: 1;
221
+ }
222
+
223
+ .status {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: 8px;
227
+ margin-bottom: 15px;
228
+ }
229
+
230
+ .status-indicator {
231
+ width: 12px;
232
+ height: 12px;
233
+ border-radius: 50%;
234
+ }
235
+
236
+ .status-disconnected {
237
+ background-color: var(--gray);
238
+ }
239
+
240
+ .status-connecting {
241
+ background-color: var(--warning);
242
+ animation: pulse 1.5s infinite;
243
+ }
244
+
245
+ .status-connected {
246
+ background-color: var(--success);
247
+ }
248
+
249
+ @keyframes pulse {
250
+ 0% { opacity: 0.6; }
251
+ 50% { opacity: 1; }
252
+ 100% { opacity: 0.6; }
253
+ }
254
+
255
+ .audio-visualizer {
256
+ height: 60px;
257
+ display: flex;
258
+ align-items: center;
259
+ gap: 3px;
260
+ padding: 0 10px;
261
+ }
262
+
263
+ .audio-bar {
264
+ flex: 1;
265
+ background-color: var(--primary);
266
+ height: 5px;
267
+ max-height: 50px;
268
+ border-radius: 2px;
269
+ transition: height 0.1s ease;
270
+ }
271
+
272
+ .stats-grid {
273
+ display: grid;
274
+ grid-template-columns: 1fr 1fr;
275
+ gap: 10px;
276
+ }
277
+
278
+ .stat-card {
279
+ background-color: var(--light);
280
+ border-radius: 8px;
281
+ padding: 15px;
282
+ display: flex;
283
+ flex-direction: column;
284
+ }
285
+
286
+ .stat-label {
287
+ font-size: 0.8rem;
288
+ color: var(--gray);
289
+ }
290
+
291
+ .stat-value {
292
+ font-size: 1.2rem;
293
+ font-weight: 600;
294
+ margin-top: 5px;
295
+ }
296
+
297
+ .tabs {
298
+ display: flex;
299
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
300
+ }
301
+
302
+ .tab {
303
+ padding: 10px 15px;
304
+ cursor: pointer;
305
+ border-bottom: 2px solid transparent;
306
+ transition: var(--transition);
307
+ }
308
+
309
+ .tab.active {
310
+ border-bottom-color: var(--primary);
311
+ color: var(--primary);
312
+ font-weight: 500;
313
+ }
314
+
315
+ .tab:hover {
316
+ background-color: rgba(0, 0, 0, 0.02);
317
+ }
318
+
319
+ .tab-content {
320
+ display: none;
321
+ }
322
+
323
+ .tab-content.active {
324
+ display: block;
325
+ }
326
+
327
+ .icon {
328
+ display: inline-block;
329
+ width: 20px;
330
+ height: 20px;
331
+ stroke-width: 0;
332
+ stroke: currentColor;
333
+ fill: currentColor;
334
+ }
335
+
336
+ .file-upload {
337
+ display: none;
338
+ }
339
+
340
+ .upload-btn {
341
+ display: inline-block;
342
+ margin-bottom: 15px;
343
+ }
344
+
345
+ .gradio-link {
346
+ text-align: center;
347
+ margin-top: 20px;
348
+ padding: 15px;
349
+ background-color: var(--light);
350
+ border-radius: 10px;
351
+ }
352
+
353
+ .gradio-link a {
354
+ color: var(--primary);
355
+ text-decoration: none;
356
+ font-weight: 500;
357
+ }
358
+
359
+ .gradio-link a:hover {
360
+ text-decoration: underline;
361
+ }
362
+ </style>
363
+ </head>
364
+ <body>
365
+ <header>
366
+ <div class="container">
367
+ <div class="logo">
368
+ <div class="logo-icon">AI</div>
369
+ <h1>AGI Telecom Interface</h1>
370
+ </div>
371
+ </div>
372
+ </header>
373
+
374
+ <div class="container">
375
+ <div class="gradio-link">
376
+ <p>The full interactive demo is available in the Gradio interface. <a href="/gradio">Open Gradio Interface</a></p>
377
+ </div>
378
+
379
+ <main>
380
+ <div class="left-section">
381
+ <div class="card">
382
+ <div class="card-header">
383
+ <div>Conversation</div>
384
+ <div class="status">
385
+ <div class="status-indicator status-disconnected" id="connectionStatus"></div>
386
+ <span id="statusText">Disconnected</span>
387
+ </div>
388
+ </div>
389
+ <div class="card-body">
390
+ <div class="audio-visualizer" id="audioVisualizer">
391
+ <div class="audio-bar" style="height: 10px;"></div>
392
+ <div class="audio-bar" style="height: 15px;"></div>
393
+ <div class="audio-bar" style="height: 20px;"></div>
394
+ <div class="audio-bar" style="height: 25px;"></div>
395
+ <div class="audio-bar" style="height: 18px;"></div>
396
+ <div class="audio-bar" style="height: 12px;"></div>
397
+ <div class="audio-bar" style="height: 8px;"></div>
398
+ <div class="audio-bar" style="height: 15px;"></div>
399
+ <div class="audio-bar" style="height: 22px;"></div>
400
+ <div class="audio-bar" style="height: 17px;"></div>
401
+ <div class="audio-bar" style="height: 10px;"></div>
402
+ <div class="audio-bar" style="height: 7px;"></div>
403
+ <div class="audio-bar" style="height: 12px;"></div>
404
+ <div class="audio-bar" style="height: 18px;"></div>
405
+ <div class="audio-bar" style="height: 15px;"></div>
406
+ <div class="audio-bar" style="height: 10px;"></div>
407
+ <div class="audio-bar" style="height: 8px;"></div>
408
+ <div class="audio-bar" style="height: 5px;"></div>
409
+ <div class="audio-bar" style="height: 10px;"></div>
410
+ <div class="audio-bar" style="height: 15px;"></div>
411
+ </div>
412
+
413
+ <div class="conversation" id="conversation">
414
+ <div class="bot-message message">Hello! I'm your AGI assistant. How can I help you today?</div>
415
+ <div class="system-message">This is a demo version. For the interactive experience, please use the Gradio interface.</div>
416
+ </div>
417
+
418
+ <div class="message-input">
419
+ <input type="text" placeholder="Type your message..." id="messageInput" disabled>
420
+ <button class="btn btn-icon" id="micButton" disabled>
421
+ <svg class="icon" viewBox="0 0 24 24">
422
+ <path d="M12 2a3 3 0 0 1 3 3v6a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3zm7 9a1 1 0 0 1 1 1 8 8 0 0 1-16 0 1 1 0 0 1 2 0 6 6 0 1 0 12 0 1 1 0 0 1 1-1z"/>
423
+ </svg>
424
+ </button>
425
+ <button class="btn" id="sendButton" disabled>Send</button>
426
+ </div>
427
+
428
+ <div class="call-controls">
429
+ <button class="btn btn-success" id="startCallButton" disabled>
430
+ <svg class="icon" viewBox="0 0 24 24">
431
+ <path d="M20 15.5c-1.2 0-2.4-.2-3.6-.6-.3-.1-.7 0-1 .2l-2.5 2.5c-2.8-1.4-5.1-3.8-6.6-6.6l2.5-2.5c.3-.3.4-.7.2-1-.3-1.1-.5-2.3-.5-3.5 0-.6-.4-1-1-1H4c-.6 0-1 .4-1 1 0 9.4 7.6 17 17 17 .6 0 1-.4 1-1v-3.5c0-.6-.4-1-1-1z"/>
432
+ </svg>
433
+ Start Call
434
+ </button>
435
+ <button class="btn btn-danger" id="endCallButton" disabled>
436
+ <svg class="icon" viewBox="0 0 24 24">
437
+ <path d="M21 6l-18 18m0-18l18 18"/>
438
+ </svg>
439
+ End Call
440
+ </button>
441
+ </div>
442
+ </div>
443
+ </div>
444
+ </div>
445
+
446
+ <div class="right-section">
447
+ <div class="card">
448
+ <div class="card-header">Information</div>
449
+ <div class="card-body">
450
+ <p>This is a static preview of the AGI Telecom Interface. For a fully interactive experience, please use the Gradio interface.</p>
451
+
452
+ <p style="margin-top: 15px;">The complete interface includes:</p>
453
+ <ul style="margin-left: 20px; margin-top: 10px;">
454
+ <li>Real-time voice interaction</li>
455
+ <li>Text-based messaging</li>
456
+ <li>Session management</li>
457
+ <li>Call statistics</li>
458
+ </ul>
459
+
460
+ <div style="margin-top: 20px;">
461
+ <a href="/gradio" class="btn" style="text-decoration: none; display: inline-block;">
462
+ Open Gradio Interface
463
+ </a>
464
+ </div>
465
+ </div>
466
+ </div>
467
+ </div>
468
+ </main>
469
+ </div>
470
+
471
+ <script>
472
+ // This is a static preview only
473
+ // For the full interactive experience, please use the Gradio interface
474
+ </script>
475
+ </body>
476
+ </html>