ikraamkb commited on
Commit
3fd12a3
·
verified ·
1 Parent(s): a0ee200

Upload 2 files

Browse files
Files changed (2) hide show
  1. static/appS.css +365 -0
  2. static/appS.js +82 -0
static/appS.css ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *{
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ html, body {
8
+ height: 100vh;
9
+ width: 100vw;
10
+ font-family: sans-serif;
11
+ background-color: white;
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
+ .drag-active {
16
+ background-color: rgba(0, 150, 255, 0.1) !important;
17
+ border: 2px dashed #1ec9f3 !important;
18
+ }
19
+ header {
20
+ flex: 0 0 17vh;
21
+ display: flex;
22
+ align-items: center;
23
+ gap: 20px;
24
+ padding: 0 20px;
25
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
26
+ }
27
+
28
+ header img {
29
+ height: 18vh;
30
+ width: 5vw;
31
+ object-fit: cover;
32
+ }
33
+
34
+ header span {
35
+ font-size: 30px;
36
+ }
37
+
38
+ em {
39
+ color: rgb(42, 42, 248);
40
+ }
41
+
42
+ .convo {
43
+ height: 65vh;
44
+ overflow-y: auto;
45
+ padding: 10px;
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: 10px;
49
+ scroll-behavior: smooth;
50
+ flex: 1;
51
+
52
+ }
53
+
54
+ .select-options{
55
+ display: flex;
56
+ flex-direction: column;
57
+ height: 5vh;
58
+ width: 10vw;
59
+ }
60
+
61
+ .select-options li {
62
+ margin-bottom: 8px;
63
+ }
64
+
65
+ .select-options input[type="checkbox"] {
66
+ display: none;
67
+ }
68
+
69
+ .select-options label {
70
+ position: relative;
71
+ padding-left: 30px;
72
+ cursor: pointer;
73
+ display: block;
74
+ }
75
+
76
+ .select-options .check {
77
+ position: absolute;
78
+ left: 10px;
79
+ top: 0px;
80
+ height: 17px;
81
+ width: 17px;
82
+ background-color: #e0e0e0;
83
+ border-radius: 50%;
84
+ }
85
+
86
+ .select-options input:checked + .check {
87
+ background-color: #6a6b6a;
88
+ box-shadow: inset 0 0 0 4px white;
89
+ }
90
+
91
+ .bubble {
92
+ max-width: 90%;
93
+ padding: 16px;
94
+ font-size: 1.05rem;
95
+ border-radius: 14px;
96
+ word-wrap: break-word;
97
+ white-space: pre-wrap;
98
+ }
99
+
100
+ .bubble .label {
101
+ font-size: 0.9rem;
102
+ font-weight: bold;
103
+ margin-bottom: 6px;
104
+ }
105
+
106
+ .bubble.left {
107
+ align-self: flex-start;
108
+ background-color: #a7e9af;
109
+ color: black;
110
+ border: 2px solid #3b7a57;
111
+ }
112
+
113
+ .bubble.right {
114
+ align-self: flex-end;
115
+ background-color: #1ec9f3;
116
+ color: white;
117
+ border: 2px solid #0080c0;
118
+ }
119
+
120
+ .qtdoc {
121
+ flex: 0 0 auto;
122
+ padding: 40px 80px;
123
+ display: flex;
124
+ justify-content: center;
125
+ align-items: center;
126
+ box-shadow: 0 -1px 3px rgba(0,0,0,0.1);
127
+ }
128
+
129
+ .qt {
130
+ flex: 1;
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: space-between;
134
+ background-color: #b5b4b4;
135
+ border-radius: 10px;
136
+ margin-right: 10px;
137
+ padding: 0 10px;
138
+ height: 50px;
139
+ }
140
+ .SummarizeInput,
141
+ .CaptionInput {
142
+ position: absolute;
143
+ width: 80%;
144
+ display: flex;
145
+ align-items: center;
146
+ justify-content: space-between;
147
+ background-color: #b5b4b4;
148
+ border-radius: 10px;
149
+ padding: 0 15px;
150
+ height: 50px;
151
+ }
152
+ .qt input {
153
+ width: 70%;
154
+ height: 70%;
155
+ border: none;
156
+ background-color: #b5b4b4;
157
+ color: white;
158
+ font-size: 16px;
159
+ }
160
+
161
+ .LengthS ,
162
+ .selectImg{
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 30px;
166
+ color: black;
167
+ font-size: 16px;
168
+ width: auto;
169
+ }
170
+
171
+ .LengthS p ,
172
+ .selectImg p{
173
+ margin: 0;
174
+ white-space: nowrap;
175
+ }
176
+ .select-optionsS {
177
+ display: flex;
178
+ list-style: none;
179
+ padding: 0;
180
+ margin: 0;
181
+ flex-direction: row;
182
+ gap: 20%;
183
+ }
184
+ .SummuririzeButtons,
185
+ .captionButtons{
186
+ display: flex;
187
+ justify-content: space-around;
188
+ align-items: center;
189
+ gap: 50px;
190
+ cursor: pointer;
191
+ }
192
+ .select-optionsS li label {
193
+ display: inline-flex;
194
+ align-items: center;
195
+ gap: 20px;
196
+ margin: 0;
197
+ padding: 0;
198
+ vertical-align: middle;
199
+ }
200
+ .select-optionsS li{
201
+ display: flex;
202
+ font-display: row;
203
+ align-items: center;
204
+ }
205
+ .select-options input[type="radio"] {
206
+ accent-color: #555;
207
+ vertical-align: middle;
208
+
209
+ }
210
+ .qt input::placeholder {
211
+ color: white;
212
+ }
213
+
214
+ .qt input:focus {
215
+ outline: none;
216
+ }
217
+
218
+ .icons {
219
+ display: flex;
220
+ gap: 40px;
221
+ font-size: 20px;
222
+ color: white;
223
+ align-items: center;
224
+ cursor: pointer;
225
+ }
226
+
227
+ .sendingQA {
228
+ background-color: #3b82f6;
229
+ color: white;
230
+ padding: 10px 15px;
231
+ border-radius: 8px;
232
+ cursor: pointer;
233
+ border: none;
234
+ font-size: 16px;
235
+ }
236
+
237
+ .sendingQA:hover {
238
+ background-color: #2563eb;
239
+ }
240
+
241
+ .audio-toggle {
242
+ margin-left: 10px;
243
+ cursor: pointer;
244
+ color: #007BFF;
245
+ }
246
+
247
+ .audio-toggle:hover {
248
+ color: #0056b3;
249
+ }
250
+
251
+ .answer-block {
252
+ background-color: #e1f7e1;
253
+ border-radius: 10px;
254
+ padding: 1rem;
255
+ margin: 1rem;
256
+ }
257
+
258
+ .file-preview-bubble {
259
+ align-self: flex-start;
260
+ background-color: #f2f2f2;
261
+ color: #444;
262
+ font-size: 0.8rem;
263
+ padding: 6px 10px;
264
+ border-radius: 10px;
265
+ max-width: 50%;
266
+ font-family: monospace;
267
+ box-shadow: inset 0 0 2px #aaa;
268
+ margin: -5px 0 6px 0;
269
+ opacity: 0.9;
270
+ }
271
+ .audio-toggle {
272
+ margin-left: 10px;
273
+ cursor: pointer;
274
+ color: #007BFF;
275
+ }
276
+
277
+ .audio-toggle:hover {
278
+ color: #0056b3;
279
+ }
280
+ .reset-chat {
281
+ background-color: #ef4444;
282
+ color: white;
283
+ padding: 8px 16px;
284
+ border: none;
285
+ border-radius: 8px;
286
+ margin-bottom: 10px;
287
+ cursor: pointer;
288
+ font-size: 14px;
289
+ }
290
+
291
+ .reset-chat:hover {
292
+ background-color: #dc2626;
293
+ }
294
+
295
+ .convo.drag-over {
296
+ outline: 2px dashed #3b82f6;
297
+ background-color: #e0f2fe;
298
+ }
299
+
300
+
301
+ .explainChoix{
302
+ position: absolute;
303
+ height: 10vh;
304
+ width: 20vw;
305
+ background-color: #6adcf9;
306
+ border-radius: 20px;
307
+ top: 17vh;
308
+ left: 10vw;
309
+ display: flex;
310
+ flex-direction: column;
311
+ gap: 5%;
312
+ align-items: flex-end;
313
+ opacity: 0.8;
314
+ transition: 3s ease-in-out;
315
+ }
316
+ .explainChoix span {
317
+ padding-top: 2%;
318
+ padding-left: 10px;
319
+ color: black;
320
+ font-size: 13px;
321
+ }
322
+ .explainChoix button{
323
+ background-color: white;
324
+ color: black;
325
+ font-size: 10px;
326
+ height: 30%;
327
+ width: 17%;
328
+ border-radius: 10px;
329
+ cursor: pointer;
330
+ margin-right: 15px;
331
+ margin-bottom: 15px;
332
+ }
333
+
334
+ .fade-in {
335
+ opacity: 0;
336
+ transform: translateY(20px);
337
+ transition: opacity 0.8s ease-out, transform 0.8s ease-out;
338
+ }
339
+
340
+ .fade-in.active {
341
+ opacity: 0.8;
342
+ transform: translateY(0);
343
+ }
344
+
345
+ .fade-in.delay-1 { transition-delay: 0.5s; }
346
+ .fade-in.delay-2 { transition-delay: 0.7s; }
347
+ .fade-in.delay-3 { transition-delay: 0.9s; }
348
+
349
+
350
+
351
+ .active{
352
+ opacity: 1;
353
+ pointer-events: all;
354
+ z-index: 2;
355
+ }
356
+ .innactive{
357
+ opacity: 0;
358
+ pointer-events: none;
359
+ z-index: 1;
360
+
361
+ }
362
+
363
+ .return i{
364
+ font-size: 25px;
365
+ }
static/appS.js ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ document.addEventListener('DOMContentLoaded', () => {
4
+ var GotitB = document.querySelector(".explainChoix button")
5
+ var explain = document.querySelector(".explainChoix")
6
+ var SummarizeInput = document.querySelector(".SummarizeInput")
7
+ var CaptionInput = document.querySelector(".CaptionInput")
8
+ GotitB.addEventListener("click",()=>{
9
+ explain.style.opacity="0"
10
+ })
11
+
12
+ document.querySelectorAll('.select-options input[type="radio"]').forEach(radio => {
13
+ radio.addEventListener('change', (e) => {
14
+ if (e.target.checked) {
15
+ const selectedValue = e.target.value;
16
+ if(selectedValue=="Summarize"){
17
+ SummarizeInput.classList.add("active")
18
+ SummarizeInput.classList.remove("innactive")
19
+ CaptionInput.classList.remove("active")
20
+ CaptionInput.classList.add("innactive")
21
+ }
22
+ else{
23
+ SummarizeInput.classList.add("innactive")
24
+ SummarizeInput.classList.remove("active")
25
+ CaptionInput.classList.remove("innactive")
26
+ CaptionInput.classList.add("active")
27
+ }
28
+ }
29
+ });
30
+ });
31
+ const fileUpload = document.getElementById('file-upload');
32
+ const imageUpload = document.getElementById('image-upload');
33
+
34
+ // Get the icon buttons
35
+ const fileBtn = document.getElementById('file-btn');
36
+ const imageBtn = document.getElementById('image-btn');
37
+
38
+ // Set up file input for documents (PDF, DOCX, PPTX, XLSX)
39
+ fileBtn.addEventListener('click', () => {
40
+ fileUpload.click();
41
+ });
42
+
43
+ fileUpload.addEventListener('change', (e) => {
44
+ if (e.target.files.length > 0) {
45
+ const file = e.target.files[0];
46
+ const validDocTypes = [
47
+ 'application/pdf',
48
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
49
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
50
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
51
+ ];
52
+
53
+ if (validDocTypes.includes(file.type)) {
54
+ console.log('Valid document selected:', file.name);
55
+ // Handle the document file here
56
+ } else {
57
+ alert('Please select a valid document (PDF, DOCX, PPTX, or XLSX)');
58
+ fileUpload.value = ''; // Reset the input
59
+ }
60
+ }
61
+ });
62
+
63
+ // Set up file input for images
64
+ imageBtn.addEventListener('click', () => {
65
+ imageUpload.click();
66
+ });
67
+
68
+ imageUpload.addEventListener('change', (e) => {
69
+ if (e.target.files.length > 0) {
70
+ const file = e.target.files[0];
71
+ const validImageTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
72
+
73
+ if (validImageTypes.includes(file.type)) {
74
+ console.log('Valid image selected:', file.name);
75
+ // Handle the image file here
76
+ } else {
77
+ alert('Please select a valid image (JPEG, PNG, GIF, or WEBP)');
78
+ imageUpload.value = ''; // Reset the input
79
+ }
80
+ }
81
+ });
82
+ });