Hadiil commited on
Commit
c66450a
·
verified ·
1 Parent(s): 78cf9bd

Update static/index.html

Browse files
Files changed (1) hide show
  1. static/index.html +107 -301
static/index.html CHANGED
@@ -3,335 +3,141 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">
7
- <link href='https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css' rel='stylesheet'>
8
- <title>Vion AI</title>
9
  <style>
10
- @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;800&display=swap');
11
-
12
- * {
13
- margin: 0;
14
- padding: 0;
15
- outline: none;
16
- box-sizing: border-box;
17
- font-family: "Open Sans", sans-serif;
18
- }
19
-
20
- :root {
21
- --primary-color: #0A0A0B;
22
- --secondary-color: #1A1B1E;
23
- --secondary-hover-color: #2A2B2E;
24
- --focus-color: #242528;
25
- --focus-hover-color: #343538;
26
- --button-hover-color: #252627;
27
- --text-color: #FFFFFF;
28
- --text-secondary-color: #A0A1A3;
29
- --heading-secondary-color: #606162;
30
- --placeholder-color: #78797A;
31
- --accent-color: #00A3FF;
32
- --star-color: #FFFFFF;
33
- --background-color: #000;
34
- }
35
-
36
- .light_mode {
37
- --primary-color: #FFFFFF;
38
- --secondary-color: #F5F6F5;
39
- --secondary-hover-color: #E5E6E5;
40
- --focus-color: #ECEDEC;
41
- --focus-hover-color: #E0E1E0;
42
- --button-hover-color: #ECEDED;
43
- --text-color: #0A0A0B;
44
- --text-secondary-color: #4A4B4C;
45
- --heading-secondary-color: #BABBBB;
46
- --placeholder-color: #868788;
47
- --accent-color: #007ACC;
48
- --star-color: #666;
49
- --background-color: #E0E7FF;
50
- }
51
-
52
  body {
53
- min-height: 100vh;
54
- display: flex;
55
- flex-direction: column;
56
- justify-content: space-between;
57
- background: var(--background-color);
58
- position: relative;
59
- overflow-y: auto;
60
- }
61
-
62
- .stars {
63
- position: fixed;
64
- width: 100%;
65
- height: 100%;
66
- background: url('https://www.transparenttextures.com/patterns/stardust.png');
67
- animation: starsAnim 100s linear infinite;
68
- z-index: -1;
69
- }
70
-
71
- .light_mode .stars {
72
- background: url('https://www.transparenttextures.com/patterns/stardust.png') rgba(224, 231, 255, 0.8);
73
- opacity: 0.3;
74
- }
75
-
76
- @keyframes starsAnim {
77
- from { background-position: 0 0; }
78
- to { background-position: 10000px 10000px; }
79
- }
80
-
81
- .main-content {
82
- flex: 1;
83
- display: flex;
84
- flex-direction: column;
85
- justify-content: center;
86
- padding-bottom: 80px;
87
- padding-top: 2rem;
88
  }
89
-
90
- .header {
91
- max-width: 900px;
92
  text-align: center;
93
- padding: 0 2rem;
94
- margin: 0 auto;
95
  }
96
-
97
- .header__title h1 {
98
- color: var(--text-color);
99
- font-size: 3.5rem;
100
- font-weight: 800;
101
- margin-bottom: 1rem;
102
- text-shadow: 0 0 10px rgba(0, 163, 255, 0.5);
103
  }
104
-
105
- .header__title h2 {
106
- color: var(--text-secondary-color);
107
- font-size: 1.5rem;
108
- font-weight: 400;
109
- max-width: 600px;
110
- margin: 0 auto;
111
- text-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
112
- }
113
-
114
- .suggests {
115
- display: grid;
116
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
117
- margin: 2rem auto;
118
- max-width: 900px;
119
- gap: 1rem;
120
- padding: 0 2rem;
121
  }
122
-
123
- .suggests__item {
124
- background: rgba(26, 27, 30, 0.9);
125
- color: var(--text-secondary-color);
126
- padding: 1.5rem;
127
- border-radius: 0.5rem;
128
- cursor: pointer;
129
- transition: all 0.3s ease;
130
- border: 1px solid var(--focus-color);
131
- }
132
-
133
- .light_mode .suggests__item {
134
- background: rgba(245, 246, 245, 0.9);
135
- }
136
-
137
- .suggests__item:hover {
138
- background: var(--secondary-hover-color);
139
- border-color: var(--accent-color);
140
- color: var(--text-color);
141
- }
142
-
143
- .suggests__item-icon {
144
- margin-top: 1rem;
145
- color: var(--accent-color);
146
- }
147
-
148
- .prompt {
149
- position: fixed;
150
- background: rgba(10, 10, 11, 0.9);
151
- z-index: 1000;
152
  width: 100%;
153
- left: 0;
154
- bottom: 0;
155
- padding: 1rem;
156
- border-top: 1px solid var(--secondary-color);
157
- }
158
-
159
- .light_mode .prompt {
160
- background: rgba(245, 246, 245, 0.9);
161
- border-top: 1px solid var(--focus-color);
162
- }
163
-
164
- .prompt__input-wrapper {
165
- max-width: 900px;
166
- margin: 0 auto;
167
- position: relative;
168
- display: flex;
169
- align-items: center;
170
- background: var(--secondary-color);
171
- border: 1px solid var(--focus-color);
172
- border-radius: 0.5rem;
173
- padding: 0.2rem;
174
- transition: all 0.3s ease;
175
- }
176
-
177
- .prompt__input-wrapper:focus-within {
178
- border-color: var(--accent-color);
179
- background: var(--focus-color);
180
- }
181
-
182
- .prompt__form-input {
183
- flex-grow: 1;
184
  border: none;
185
- resize: none;
186
- font-size: 1.1rem;
187
- color: var(--text-color);
188
- padding: 0.3rem 0.5rem;
189
- background: transparent;
190
- outline: none;
191
- }
192
-
193
- .prompt__form-input::placeholder {
194
- color: var(--placeholder-color);
195
- }
196
-
197
- .prompt__action-buttons {
198
- display: flex;
199
- align-items: center;
200
- gap: 0.3rem;
201
- padding-right: 0.3rem;
202
- }
203
-
204
- .prompt__form-button {
205
- background: none;
206
- border: none;
207
- color: var(--text-secondary-color);
208
- font-size: 1.1rem;
209
  cursor: pointer;
210
- padding: 0.2rem;
211
- transition: color 0.3s ease;
212
  }
213
-
214
- .prompt__form-button:hover {
215
- color: var(--accent-color);
216
  }
217
-
218
- .prompt__disclaim {
219
- text-align: center;
220
- color: var(--placeholder-color);
221
- font-size: 0.8rem;
222
- margin-top: 1rem;
223
- max-width: 900px;
224
- margin-left: auto;
225
- margin-right: auto;
226
- text-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
227
  }
228
  </style>
229
  </head>
230
  <body>
231
- <div class="stars"></div>
232
-
233
- <div class="main-content">
234
- <header class="header">
235
- <div class="header__title">
236
- <h1>Vion AI</h1>
237
- <h2>Ask me anything and I'll provide helpful and truthful answers from an outside perspective on humanity.</h2>
238
- </div>
239
- </header>
240
-
241
- <div class="suggests">
242
- <div class="suggests__item" onclick="sendPrompt('What is the meaning of life?', 'summarize')">
243
- <p class="suggests__item-text">What is the meaning of life?</p>
244
- <div class="suggests__item-icon"><i class='bx bx-bulb'></i></div>
245
- </div>
246
- <div class="suggests__item" onclick="sendPrompt('Explain quantum physics simply', 'summarize')">
247
- <p class="suggests__item-text">Explain quantum physics simply</p>
248
- <div class="suggests__item-icon"><i class='bx bx-atom'></i></div>
249
- </div>
250
- <div class="suggests__item" onclick="sendPrompt('How does the universe work?', 'summarize')">
251
- <p class="suggests__item-text">How does the universe work?</p>
252
- <div class="suggests__item-icon"><i class='bx bx-planet'></i></div>
253
- </div>
254
- </div>
255
- </div>
256
-
257
- <section class="prompt">
258
- <form id="promptForm" class="prompt__form" novalidate>
259
- <div class="prompt__input-wrapper">
260
- <input type="text" id="promptInput" placeholder="Ask me anything..." class="prompt__form-input" required>
261
- <div class="prompt__action-buttons">
262
- <label for="fileInput" class="prompt__form-button"><i class='bx bx-upload'></i></label>
263
- <input type="file" id="fileInput" style="display: none;" accept=".pdf,.docx,.txt">
264
- <button type="button" class="prompt__form-button" id="deepSearchButton"><i class='bx bx-search'></i></button>
265
- <button type="button" class="prompt__form-button" id="thinkButton"><i class='bx bx-brain'></i></button>
266
- <button type="submit" class="prompt__form-button" id="sendButton"><i class='bx bx-send'></i></button>
267
- <button type="button" class="prompt__form-button" id="themeToggler"><i class='bx bx-sun'></i></button>
268
- </div>
269
- </div>
270
- </form>
271
- <p class="prompt__disclaim">Vion AI provides answers based on its training and design. Vion can make mistakes.</p>
272
- </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
273
 
274
  <script>
275
- // Theme toggle
276
- const themeToggler = document.getElementById('themeToggler');
277
- themeToggler.addEventListener('click', () => {
278
- document.body.classList.toggle('light_mode');
279
- themeToggler.innerHTML = document.body.classList.contains('light_mode') ? "<i class='bx bx-moon'></i>" : "<i class='bx bx-sun'></i>";
280
- });
281
-
282
- // Send prompt to backend
283
- const promptForm = document.getElementById('promptForm');
284
- const promptInput = document.getElementById('promptInput');
285
 
286
- promptForm.addEventListener('submit', async (e) => {
287
- e.preventDefault();
288
- const prompt = promptInput.value.trim();
289
- if (!prompt) return;
290
 
291
  try {
292
- const response = await fetch('/summarize', {
293
- method: 'POST',
294
- headers: { 'Content-Type': 'application/json' },
295
- body: JSON.stringify({ text: prompt })
296
- });
297
-
298
- if (!response.ok) throw new Error('Failed to fetch response');
299
- const data = await response.json();
300
- alert(`Response: ${data.summary}`);
301
- } catch (error) {
302
- console.error('Error:', error);
303
- alert('Failed to get a response. Please try again.');
304
- }
305
- });
306
-
307
- // Send predefined prompt
308
- function sendPrompt(prompt, endpoint) {
309
- promptInput.value = prompt;
310
- promptForm.dispatchEvent(new Event('submit'));
311
- }
312
-
313
- // File upload
314
- document.getElementById('fileInput').addEventListener('change', async (e) => {
315
- const file = e.target.files[0];
316
- if (!file) return;
317
-
318
- const formData = new FormData();
319
- formData.append('file', file);
320
-
321
- try {
322
- const response = await fetch('/summarize', {
323
  method: 'POST',
324
  body: formData
325
  });
326
 
327
- if (!response.ok) throw new Error('Failed to upload file');
 
 
 
328
  const data = await response.json();
329
- alert(`Summary: ${data.summary}`);
330
  } catch (error) {
331
- console.error('Error:', error);
332
- alert('Failed to process file. Please try again.');
333
  }
334
- });
335
  </script>
336
  </body>
337
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AI Web Application</title>
 
 
7
  <style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  body {
9
+ font-family: Arial, sans-serif;
10
+ margin: 20px;
11
+ padding: 0;
12
+ background-color: #f4f4f9;
13
+ color: #333;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  }
15
+ h1 {
 
 
16
  text-align: center;
17
+ color: #444;
 
18
  }
19
+ h2 {
20
+ color: #555;
21
+ border-bottom: 2px solid #ddd;
22
+ padding-bottom: 5px;
 
 
 
23
  }
24
+ form {
25
+ background: #fff;
26
+ padding: 20px;
27
+ border-radius: 8px;
28
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
29
+ margin-bottom: 20px;
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
+ input[type="file"], textarea, input[type="text"] {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  width: 100%;
33
+ padding: 10px;
34
+ margin: 10px 0;
35
+ border: 1px solid #ddd;
36
+ border-radius: 4px;
37
+ font-size: 16px;
38
+ }
39
+ button {
40
+ background-color: #007bff;
41
+ color: white;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  border: none;
43
+ padding: 10px 20px;
44
+ border-radius: 4px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  cursor: pointer;
46
+ font-size: 16px;
 
47
  }
48
+ button:hover {
49
+ background-color: #0056b3;
 
50
  }
51
+ .result {
52
+ background: #e9ecef;
53
+ padding: 15px;
54
+ border-radius: 4px;
55
+ margin-top: 10px;
56
+ font-family: monospace;
 
 
 
 
57
  }
58
  </style>
59
  </head>
60
  <body>
61
+ <h1>AI Web Application</h1>
62
+
63
+ <!-- Summarization -->
64
+ <h2>Summarization</h2>
65
+ <form id="summarizeForm">
66
+ <input type="file" name="file" accept=".pdf,.docx">
67
+ <textarea name="text" placeholder="Or enter text manually"></textarea>
68
+ <button type="button" onclick="submitForm('/summarize', 'summarizeForm', 'summarizeResult')">Summarize</button>
69
+ </form>
70
+ <div id="summarizeResult" class="result"></div>
71
+
72
+ <!-- Image Captioning -->
73
+ <h2>Image Captioning</h2>
74
+ <form id="captionForm">
75
+ <input type="file" name="file" accept="image/*">
76
+ <button type="button" onclick="submitForm('/caption', 'captionForm', 'captionResult')">Generate Caption</button>
77
+ </form>
78
+ <div id="captionResult" class="result"></div>
79
+
80
+ <!-- Question Answering -->
81
+ <h2>Question Answering</h2>
82
+ <form id="answerForm">
83
+ <input type="file" name="file" accept=".pdf,.docx">
84
+ <textarea name="text" placeholder="Or enter text manually"></textarea>
85
+ <input type="text" name="question" placeholder="Enter your question">
86
+ <button type="button" onclick="submitForm('/answer', 'answerForm', 'answerResult')">Answer</button>
87
+ </form>
88
+ <div id="answerResult" class="result"></div>
89
+
90
+ <!-- Visual Question Answering -->
91
+ <h2>Visual Question Answering</h2>
92
+ <form id="vqaForm">
93
+ <input type="file" name="file" accept="image/*">
94
+ <input type="text" name="question" placeholder="Enter your question">
95
+ <button type="button" onclick="submitForm('/vqa', 'vqaForm', 'vqaResult')">Answer</button>
96
+ </form>
97
+ <div id="vqaResult" class="result"></div>
98
+
99
+ <!-- Data Visualization -->
100
+ <h2>Data Visualization</h2>
101
+ <form id="visualizeForm">
102
+ <input type="file" name="file" accept=".xlsx,.xls">
103
+ <input type="text" name="request" placeholder="Enter visualization request (e.g., bar, line)">
104
+ <button type="button" onclick="submitForm('/visualize', 'visualizeForm', 'visualizeResult')">Generate Code</button>
105
+ </form>
106
+ <div id="visualizeResult" class="result"></div>
107
+
108
+ <!-- Document Translation -->
109
+ <h2>Document Translation</h2>
110
+ <form id="translateForm">
111
+ <input type="file" name="file" accept=".pdf,.docx">
112
+ <input type="text" name="target_language" placeholder="Enter target language (e.g., fr, es)">
113
+ <button type="button" onclick="submitForm('/translate', 'translateForm', 'translateResult')">Translate</button>
114
+ </form>
115
+ <div id="translateResult" class="result"></div>
116
 
117
  <script>
118
+ async function submitForm(endpoint, formId, resultId) {
119
+ const form = document.getElementById(formId);
120
+ const formData = new FormData(form);
121
+ const resultDiv = document.getElementById(resultId);
 
 
 
 
 
 
122
 
123
+ resultDiv.innerHTML = "Processing...";
 
 
 
124
 
125
  try {
126
+ const response = await fetch(endpoint, {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  method: 'POST',
128
  body: formData
129
  });
130
 
131
+ if (!response.ok) {
132
+ throw new Error(`HTTP error! Status: ${response.status}`);
133
+ }
134
+
135
  const data = await response.json();
136
+ resultDiv.innerHTML = `<pre>${JSON.stringify(data, null, 2)}</pre>`;
137
  } catch (error) {
138
+ resultDiv.innerHTML = `Error: ${error.message}`;
 
139
  }
140
+ }
141
  </script>
142
  </body>
143
  </html>