rairo commited on
Commit
9ec7be1
·
verified ·
1 Parent(s): 54615dc

Update receipt_processing_ui.html

Browse files
Files changed (1) hide show
  1. receipt_processing_ui.html +307 -313
receipt_processing_ui.html CHANGED
@@ -5,333 +5,327 @@
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Qx Intelligent Receipt Processing</title>
7
  <style>
8
- * {
9
- margin: 0;
10
- padding: 0;
11
- box-sizing: border-box;
12
- }
13
-
14
- body {
15
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
16
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
17
- min-height: 100vh;
18
- color: #333;
19
- }
20
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  .container {
22
- max-width: 1200px;
23
- margin: 0 auto;
24
- padding: 20px;
25
- }
26
-
27
- .header {
28
- text-align: center;
29
- margin-bottom: 40px;
30
- color: white;
31
- }
32
-
33
- .header h1 {
34
- font-size: 2.5rem;
35
- margin-bottom: 10px;
36
- text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
37
- }
38
-
39
- .header p {
40
- font-size: 1.1rem;
41
- opacity: 0.9;
42
- }
43
-
44
- .main-content {
45
- background: white;
46
- border-radius: 20px;
47
- box-shadow: 0 20px 40px rgba(0,0,0,0.1);
48
- overflow: hidden;
49
  }
50
 
51
  .tabs {
52
- display: flex;
53
- background: #f8f9fa;
54
- border-bottom: 2px solid #e9ecef;
55
- }
56
-
57
- .tab {
58
- flex: 1;
59
- padding: 20px;
60
- text-align: center;
61
- background: none;
62
- border: none;
63
- cursor: pointer;
64
- font-size: 1rem;
65
- font-weight: 600;
66
- color: #6c757d;
67
- transition: all 0.3s ease;
68
- }
69
-
70
- .tab.active {
71
- background: #4285f4;
72
- color: white;
73
- }
74
-
75
- .tab:hover:not(.active) {
76
- background: #e3f2fd;
77
- color: #1976d2;
78
  }
79
 
80
  .tab-content {
81
- padding: 40px;
82
- display: none;
83
- }
84
-
85
- .tab-content.active {
86
- display: block;
87
- }
88
-
89
- .upload-area {
90
- border: 3px dashed #4285f4;
91
- border-radius: 15px;
92
- padding: 40px;
93
- text-align: center;
94
- margin-bottom: 30px;
95
- cursor: pointer;
96
- transition: all 0.3s ease;
97
- background: #f8f9ff;
98
- }
99
-
100
- .upload-area:hover {
101
- border-color: #1976d2;
102
- background: #e3f2fd;
103
- }
104
-
105
- .upload-area.dragover {
106
- border-color: #1976d2;
107
- background: #e3f2fd;
108
- transform: scale(1.02);
109
- }
110
-
111
- .upload-icon {
112
- font-size: 3rem;
113
- color: #4285f4;
114
- margin-bottom: 20px;
115
- }
116
-
117
- .btn {
118
- background: #4285f4;
119
- color: white;
120
- border: none;
121
- padding: 12px 30px;
122
- border-radius: 25px;
123
- cursor: pointer;
124
- font-size: 1rem;
125
- font-weight: 600;
126
- transition: all 0.3s ease;
127
- margin: 10px;
128
- }
129
-
130
- .btn:hover {
131
- background: #1976d2;
132
- transform: translateY(-2px);
133
- box-shadow: 0 5px 15px rgba(66, 133, 244, 0.3);
134
- }
135
-
136
- .btn:disabled {
137
- background: #ccc;
138
- cursor: not-allowed;
139
- transform: none;
140
- box-shadow: none;
141
- }
142
-
143
- .btn-secondary {
144
- background: #6c757d;
145
- }
146
-
147
- .btn-secondary:hover {
148
- background: #545b62;
149
- }
150
-
151
- .btn-success {
152
- background: #28a745;
153
- }
154
-
155
- .btn-success:hover {
156
- background: #218838;
157
- }
158
-
159
- .loading {
160
- display: none;
161
- text-align: center;
162
  padding: 20px;
163
  }
164
 
165
- .spinner {
166
- width: 40px;
167
- height: 40px;
168
- border: 4px solid #f3f3f3;
169
- border-top: 4px solid #4285f4;
170
- border-radius: 50%;
171
- animation: spin 1s linear infinite;
172
- margin: 0 auto 15px;
173
- }
174
-
175
- @keyframes spin {
176
- 0% { transform: rotate(0deg); }
177
- 100% { transform: rotate(360deg); }
178
- }
179
-
180
- .results {
181
- margin-top: 30px;
182
- }
183
-
184
- .receipt-card {
185
- background: #f8f9fa;
186
- border-radius: 10px;
187
- padding: 20px;
188
- margin-bottom: 20px;
189
- border-left: 5px solid #4285f4;
190
  }
191
 
192
  .receipt-header {
193
- display: flex;
194
- justify-content: between;
195
- align-items: center;
196
- margin-bottom: 15px;
197
- flex-wrap: wrap;
198
- gap: 10px;
199
- }
200
-
201
- .store-name {
202
- font-size: 1.2rem;
203
- font-weight: bold;
204
- color: #1976d2;
205
- }
206
-
207
- .receipt-date {
208
- color: #6c757d;
209
- font-size: 0.9rem;
210
- }
211
-
212
- .total-amount {
213
- font-size: 1.1rem;
214
- font-weight: bold;
215
- color: #28a745;
216
- }
217
-
218
- .items-table {
219
- width: 100%;
220
- border-collapse: collapse;
221
- margin-top: 15px;
222
- }
223
-
224
- .items-table th,
225
- .items-table td {
226
- padding: 10px;
227
- text-align: left;
228
- border-bottom: 1px solid #dee2e6;
229
- }
230
-
231
- .items-table th {
232
- background: #e9ecef;
233
- font-weight: 600;
234
- color: #495057;
235
- }
236
-
237
- .category-stock {
238
- background: #d4edda;
239
- color: #155724;
240
- padding: 3px 8px;
241
- border-radius: 12px;
242
- font-size: 0.8rem;
243
- font-weight: 600;
244
- }
245
-
246
- .category-expense {
247
- background: #f8d7da;
248
- color: #721c24;
249
- padding: 3px 8px;
250
- border-radius: 12px;
251
- font-size: 0.8rem;
252
- font-weight: 600;
253
- }
254
-
255
- .error {
256
- background: #f8d7da;
257
- color: #721c24;
258
- padding: 15px;
259
- border-radius: 5px;
260
- margin-top: 15px;
261
- }
262
-
263
- .success {
264
- background: #d4edda;
265
- color: #155724;
266
- padding: 15px;
267
- border-radius: 5px;
268
- margin-top: 15px;
269
- }
270
-
271
- .file-list {
272
- margin-top: 20px;
273
- }
274
-
275
- .file-item {
276
- display: flex;
277
- justify-content: space-between;
278
- align-items: center;
279
- padding: 10px;
280
- background: #f8f9fa;
281
- border-radius: 5px;
282
- margin-bottom: 10px;
283
- }
284
-
285
- .session-info {
286
- background: #e3f2fd;
287
- padding: 15px;
288
- border-radius: 10px;
289
- margin-bottom: 20px;
290
- }
291
-
292
- .hidden {
293
- display: none;
294
- }
295
-
296
- .progress-bar {
297
- width: 100%;
298
- height: 6px;
299
- background: #e9ecef;
300
- border-radius: 3px;
301
- overflow: hidden;
302
- margin-top: 15px;
303
- }
304
-
305
- .progress-fill {
306
- height: 100%;
307
- background: #4285f4;
308
- width: 0%;
309
- transition: width 0.3s ease;
310
- }
311
-
312
- @media (max-width: 768px) {
313
- .container {
314
- padding: 10px;
315
- }
316
-
317
- .tabs {
318
- flex-direction: column;
319
- }
320
-
321
- .tab-content {
322
- padding: 20px;
323
- }
324
-
325
- .header h1 {
326
- font-size: 2rem;
327
- }
328
-
329
- .receipt-header {
330
- flex-direction: column;
331
- align-items: flex-start;
332
- }
333
  }
334
- </style>
 
335
  </head>
336
  <body>
337
  <div class="container">
 
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Qx Intelligent Receipt Processing</title>
7
  <style>
8
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap');
9
+
10
+ * {
11
+ margin: 0;
12
+ padding: 0;
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ body {
17
+ font-family: 'Inter', 'Segoe UI', Roboto, sans-serif;
18
+ background: linear-gradient(135deg, #eef2f9 0%, #dbe6f7 100%);
19
+ min-height: 100vh;
20
+ color: #2e3a59;
21
+ }
22
+
23
+ .container {
24
+ max-width: 1200px;
25
+ margin: 0 auto;
26
+ padding: 20px;
27
+ }
28
+
29
+ .header {
30
+ text-align: center;
31
+ margin-bottom: 40px;
32
+ color: #2e3a59;
33
+ }
34
+
35
+ .header h1 {
36
+ font-size: 2.5rem;
37
+ margin-bottom: 10px;
38
+ text-shadow: 1px 1px 3px rgba(0,0,0,0.1);
39
+ }
40
+
41
+ .header p {
42
+ font-size: 1.1rem;
43
+ opacity: 0.85;
44
+ }
45
+
46
+ .main-content {
47
+ background: white;
48
+ border-radius: 20px;
49
+ box-shadow: 0 10px 30px rgba(0,0,0,0.06);
50
+ overflow: hidden;
51
+ }
52
+
53
+ .tabs {
54
+ display: flex;
55
+ background: #f1f5f9;
56
+ border-bottom: 1px solid #dce3eb;
57
+ }
58
+
59
+ .tab {
60
+ flex: 1;
61
+ padding: 18px;
62
+ text-align: center;
63
+ background: none;
64
+ border: none;
65
+ cursor: pointer;
66
+ font-size: 1rem;
67
+ font-weight: 600;
68
+ color: #64748b;
69
+ transition: background 0.3s, color 0.3s;
70
+ }
71
+
72
+ .tab.active {
73
+ background: #4a90e2;
74
+ color: white;
75
+ }
76
+
77
+ .tab:hover:not(.active) {
78
+ background: #e3ecf8;
79
+ color: #356ac3;
80
+ }
81
+
82
+ .tab-content {
83
+ padding: 40px;
84
+ display: none;
85
+ }
86
+
87
+ .tab-content.active {
88
+ display: block;
89
+ }
90
+
91
+ .upload-area {
92
+ border: 3px dashed #4a90e2;
93
+ border-radius: 15px;
94
+ padding: 40px;
95
+ text-align: center;
96
+ margin-bottom: 30px;
97
+ cursor: pointer;
98
+ transition: all 0.3s ease;
99
+ background: #f6f9fe;
100
+ }
101
+
102
+ .upload-area:hover,
103
+ .upload-area.dragover {
104
+ border-color: #356ac3;
105
+ background: #e3ecf8;
106
+ transform: scale(1.01);
107
+ }
108
+
109
+ .upload-icon {
110
+ font-size: 3rem;
111
+ color: #4a90e2;
112
+ margin-bottom: 20px;
113
+ }
114
+
115
+ .btn {
116
+ background: #4a90e2;
117
+ color: white;
118
+ border: none;
119
+ padding: 12px 28px;
120
+ border-radius: 25px;
121
+ cursor: pointer;
122
+ font-size: 1rem;
123
+ font-weight: 600;
124
+ transition: all 0.3s ease;
125
+ margin: 10px;
126
+ }
127
+
128
+ .btn:hover {
129
+ background: #356ac3;
130
+ transform: translateY(-1px);
131
+ box-shadow: 0 4px 12px rgba(74, 144, 226, 0.3);
132
+ }
133
+
134
+ .btn:disabled {
135
+ background: #ccc;
136
+ cursor: not-allowed;
137
+ transform: none;
138
+ box-shadow: none;
139
+ }
140
+
141
+ .btn-secondary {
142
+ background: #64748b;
143
+ }
144
+
145
+ .btn-secondary:hover {
146
+ background: #4b5563;
147
+ }
148
+
149
+ .btn-success {
150
+ background: #22c55e;
151
+ }
152
+
153
+ .btn-success:hover {
154
+ background: #16a34a;
155
+ }
156
+
157
+ .loading {
158
+ display: none;
159
+ text-align: center;
160
+ padding: 20px;
161
+ }
162
+
163
+ .spinner {
164
+ width: 40px;
165
+ height: 40px;
166
+ border: 4px solid #f3f3f3;
167
+ border-top: 4px solid #4a90e2;
168
+ border-radius: 50%;
169
+ animation: spin 1s linear infinite;
170
+ margin: 0 auto 15px;
171
+ }
172
+
173
+ @keyframes spin {
174
+ 0% { transform: rotate(0deg); }
175
+ 100% { transform: rotate(360deg); }
176
+ }
177
+
178
+ .receipt-card {
179
+ background: #f1f5f9;
180
+ border-radius: 10px;
181
+ padding: 20px;
182
+ margin-bottom: 20px;
183
+ border-left: 5px solid #4a90e2;
184
+ }
185
+
186
+ .receipt-header {
187
+ display: flex;
188
+ justify-content: space-between;
189
+ align-items: center;
190
+ margin-bottom: 15px;
191
+ flex-wrap: wrap;
192
+ gap: 10px;
193
+ }
194
+
195
+ .store-name {
196
+ font-size: 1.2rem;
197
+ font-weight: bold;
198
+ color: #356ac3;
199
+ }
200
+
201
+ .receipt-date {
202
+ color: #64748b;
203
+ font-size: 0.9rem;
204
+ }
205
+
206
+ .total-amount {
207
+ font-size: 1.1rem;
208
+ font-weight: bold;
209
+ color: #22c55e;
210
+ }
211
+
212
+ .items-table {
213
+ width: 100%;
214
+ border-collapse: collapse;
215
+ margin-top: 15px;
216
+ }
217
+
218
+ .items-table th,
219
+ .items-table td {
220
+ padding: 10px;
221
+ text-align: left;
222
+ border-bottom: 1px solid #dce3eb;
223
+ }
224
+
225
+ .items-table th {
226
+ background: #e9eff6;
227
+ font-weight: 600;
228
+ color: #3b3f5c;
229
+ }
230
+
231
+ .category-stock {
232
+ background: #d1fae5;
233
+ color: #065f46;
234
+ padding: 3px 8px;
235
+ border-radius: 12px;
236
+ font-size: 0.8rem;
237
+ font-weight: 600;
238
+ }
239
+
240
+ .category-expense {
241
+ background: #fee2e2;
242
+ color: #991b1b;
243
+ padding: 3px 8px;
244
+ border-radius: 12px;
245
+ font-size: 0.8rem;
246
+ font-weight: 600;
247
+ }
248
+
249
+ .error {
250
+ background: #fee2e2;
251
+ color: #991b1b;
252
+ padding: 15px;
253
+ border-radius: 5px;
254
+ margin-top: 15px;
255
+ }
256
+
257
+ .success {
258
+ background: #d1fae5;
259
+ color: #065f46;
260
+ padding: 15px;
261
+ border-radius: 5px;
262
+ margin-top: 15px;
263
+ }
264
+
265
+ .file-list {
266
+ margin-top: 20px;
267
+ }
268
+
269
+ .file-item {
270
+ display: flex;
271
+ justify-content: space-between;
272
+ align-items: center;
273
+ padding: 10px;
274
+ background: #f8fafc;
275
+ border-radius: 5px;
276
+ margin-bottom: 10px;
277
+ }
278
+
279
+ .session-info {
280
+ background: #e3ecf8;
281
+ padding: 15px;
282
+ border-radius: 10px;
283
+ margin-bottom: 20px;
284
+ }
285
+
286
+ .hidden {
287
+ display: none;
288
+ }
289
+
290
+ .progress-bar {
291
+ width: 100%;
292
+ height: 6px;
293
+ background: #e9eff6;
294
+ border-radius: 3px;
295
+ overflow: hidden;
296
+ margin-top: 15px;
297
+ }
298
+
299
+ .progress-fill {
300
+ height: 100%;
301
+ background: #4a90e2;
302
+ width: 0%;
303
+ transition: width 0.3s ease;
304
+ }
305
+
306
+ @media (max-width: 768px) {
307
  .container {
308
+ padding: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
309
  }
310
 
311
  .tabs {
312
+ flex-direction: column;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  }
314
 
315
  .tab-content {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  padding: 20px;
317
  }
318
 
319
+ .header h1 {
320
+ font-size: 2rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  }
322
 
323
  .receipt-header {
324
+ flex-direction: column;
325
+ align-items: flex-start;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  }
327
+ }
328
+ </style>
329
  </head>
330
  <body>
331
  <div class="container">