mistpe commited on
Commit
6044e02
·
verified ·
1 Parent(s): 95720c9

Update templates/dashboard.html

Browse files
Files changed (1) hide show
  1. templates/dashboard.html +481 -1
templates/dashboard.html CHANGED
@@ -1,4 +1,484 @@
1
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  /* 自定义滚动条 */
4
  ::-webkit-scrollbar {
 
1
+ <!DOCTYPE html>
2
+ <html lang="zh">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>HF Space Manager - 控制面板</title>
7
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
8
+ <style>
9
+ :root {
10
+ /* 深色主题变量 */
11
+ --primary-color: #00fff2;
12
+ --primary-glow: rgba(0, 255, 242, 0.15);
13
+ --secondary-color: #ff2aff;
14
+ --background-color: #030714;
15
+ --card-background: #0a101f;
16
+ --surface-color: #111827;
17
+ --text-primary: #ffffff;
18
+ --text-secondary: #94a3b8;
19
+ --border-color: #1e293b;
20
+ --success-color: #04d94f;
21
+ --warning-color: #ff9500;
22
+ --danger-color: #ff2d55;
23
+ --sleeping-color: #3b82f6;
24
+ --header-blur: saturate(180%) blur(10px);
25
+ --card-blur: saturate(180%) blur(5px);
26
+ }
27
+
28
+ /* 日间模式 */
29
+ [data-theme="light"] {
30
+ --primary-color: #0066ff;
31
+ --primary-glow: rgba(0, 102, 255, 0.15);
32
+ --secondary-color: #7c3aed;
33
+ --background-color: #f1f5f9;
34
+ --card-background: #ffffff;
35
+ --surface-color: #f8fafc;
36
+ --text-primary: #0f172a;
37
+ --text-secondary: #475569;
38
+ --border-color: #e2e8f0;
39
+ --success-color: #10b981;
40
+ --warning-color: #f59e0b;
41
+ --danger-color: #ef4444;
42
+ --sleeping-color: #3b82f6;
43
+ }
44
+
45
+ * {
46
+ margin: 0;
47
+ padding: 0;
48
+ box-sizing: border-box;
49
+ font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
50
+ }
51
+
52
+ body {
53
+ background-color: var(--background-color);
54
+ background-image:
55
+ radial-gradient(circle at 0% 0%, var(--primary-glow) 0%, transparent 25%),
56
+ radial-gradient(circle at 100% 100%, rgba(255, 42, 255, 0.1) 0%, transparent 25%);
57
+ min-height: 100vh;
58
+ color: var(--text-primary);
59
+ transition: background-color 0.3s ease;
60
+ }
61
+
62
+ .header {
63
+ background: rgba(10, 16, 31, 0.7);
64
+ backdrop-filter: var(--header-blur);
65
+ -webkit-backdrop-filter: var(--header-blur);
66
+ position: fixed;
67
+ top: 0;
68
+ left: 0;
69
+ right: 0;
70
+ z-index: 1000;
71
+ border-bottom: 1px solid var(--border-color);
72
+ }
73
+
74
+ [data-theme="light"] .header {
75
+ background: rgba(255, 255, 255, 0.7);
76
+ }
77
+
78
+ .header-content {
79
+ max-width: 1400px;
80
+ margin: 0 auto;
81
+ padding: 1rem 2rem;
82
+ display: flex;
83
+ justify-content: space-between;
84
+ align-items: center;
85
+ }
86
+
87
+ .logo {
88
+ font-size: 1.5rem;
89
+ font-weight: 600;
90
+ color: var(--text-primary);
91
+ display: flex;
92
+ align-items: center;
93
+ gap: 0.5rem;
94
+ position: relative;
95
+ }
96
+
97
+ .logo::before {
98
+ content: '';
99
+ position: absolute;
100
+ top: 50%;
101
+ left: -10px;
102
+ transform: translateY(-50%);
103
+ width: 3px;
104
+ height: 70%;
105
+ background: var(--primary-color);
106
+ box-shadow: 0 0 10px var(--primary-color);
107
+ }
108
+
109
+ .logo i {
110
+ color: var(--primary-color);
111
+ text-shadow: 0 0 10px var(--primary-color);
112
+ }
113
+
114
+ .nav-actions {
115
+ display: flex;
116
+ align-items: center;
117
+ gap: 1.5rem;
118
+ }
119
+
120
+ .search-bar {
121
+ position: relative;
122
+ width: 300px;
123
+ }
124
+
125
+ .search-bar input {
126
+ width: 100%;
127
+ padding: 0.75rem 1rem 0.75rem 2.5rem;
128
+ background: var(--surface-color);
129
+ border: 1px solid var(--border-color);
130
+ border-radius: 8px;
131
+ color: var(--text-primary);
132
+ font-size: 0.9rem;
133
+ transition: all 0.3s ease;
134
+ }
135
+
136
+ .search-bar input:focus {
137
+ border-color: var(--primary-color);
138
+ box-shadow: 0 0 0 3px var(--primary-glow);
139
+ outline: none;
140
+ }
141
+
142
+ .search-bar i {
143
+ position: absolute;
144
+ left: 1rem;
145
+ top: 50%;
146
+ transform: translateY(-50%);
147
+ color: var(--text-secondary);
148
+ }
149
+
150
+ .action-btn {
151
+ padding: 0.5rem;
152
+ border-radius: 8px;
153
+ background: transparent;
154
+ border: 1px solid var(--border-color);
155
+ color: var(--text-primary);
156
+ cursor: pointer;
157
+ transition: all 0.3s ease;
158
+ display: flex;
159
+ align-items: center;
160
+ gap: 0.5rem;
161
+ }
162
+
163
+ .action-btn:hover {
164
+ border-color: var(--primary-color);
165
+ background: var(--primary-glow);
166
+ }
167
+
168
+ .theme-toggle {
169
+ font-size: 1.2rem;
170
+ padding: 0.5rem;
171
+ border-radius: 8px;
172
+ background: transparent;
173
+ border: 1px solid var(--border-color);
174
+ color: var(--text-primary);
175
+ cursor: pointer;
176
+ transition: all 0.3s ease;
177
+ }
178
+
179
+ .theme-toggle:hover {
180
+ border-color: var(--primary-color);
181
+ background: var(--primary-glow);
182
+ }
183
+
184
+ .container {
185
+ max-width: 1400px;
186
+ margin: 80px auto 0;
187
+ padding: 2rem;
188
+ }
189
+
190
+ .dashboard-header {
191
+ margin-bottom: 2rem;
192
+ background: var(--card-background);
193
+ border-radius: 16px;
194
+ border: 1px solid var(--border-color);
195
+ overflow: hidden;
196
+ position: relative;
197
+ }
198
+
199
+ .dashboard-header::before {
200
+ content: '';
201
+ position: absolute;
202
+ top: 0;
203
+ left: 0;
204
+ right: 0;
205
+ height: 2px;
206
+ background: linear-gradient(90deg,
207
+ transparent,
208
+ var(--primary-color),
209
+ var(--secondary-color),
210
+ transparent
211
+ );
212
+ }
213
+
214
+ .bulk-actions {
215
+ padding: 1.5rem;
216
+ border-bottom: 1px solid var(--border-color);
217
+ display: flex;
218
+ justify-content: space-between;
219
+ align-items: center;
220
+ background: var(--surface-color);
221
+ }
222
+
223
+ .selection-info {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: 1rem;
227
+ }
228
+
229
+ .bulk-buttons {
230
+ display: flex;
231
+ gap: 1rem;
232
+ }
233
+
234
+ .bulk-btn {
235
+ padding: 0.5rem 1rem;
236
+ border-radius: 8px;
237
+ background: var(--primary-glow);
238
+ border: 1px solid var(--primary-color);
239
+ color: var(--primary-color);
240
+ cursor: pointer;
241
+ transition: all 0.3s ease;
242
+ display: flex;
243
+ align-items: center;
244
+ gap: 0.5rem;
245
+ }
246
+
247
+ .bulk-btn:hover {
248
+ background: var(--primary-color);
249
+ color: var(--background-color);
250
+ }
251
+
252
+ .bulk-btn.danger {
253
+ background: rgba(255, 45, 85, 0.1);
254
+ border-color: var(--danger-color);
255
+ color: var(--danger-color);
256
+ }
257
+
258
+ .bulk-btn.danger:hover {
259
+ background: var(--danger-color);
260
+ color: white;
261
+ }
262
+
263
+ .stats-grid {
264
+ display: grid;
265
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
266
+ gap: 1rem;
267
+ padding: 1.5rem;
268
+ }
269
+
270
+ .stat-card {
271
+ background: var(--surface-color);
272
+ padding: 1.5rem;
273
+ border-radius: 12px;
274
+ border: 1px solid var(--border-color);
275
+ transition: all 0.3s ease;
276
+ position: relative;
277
+ overflow: hidden;
278
+ }
279
+
280
+ .stat-card::after {
281
+ content: '';
282
+ position: absolute;
283
+ top: 0;
284
+ right: 0;
285
+ width: 3px;
286
+ height: 100%;
287
+ background: var(--primary-color);
288
+ opacity: 0.5;
289
+ transition: all 0.3s ease;
290
+ }
291
+
292
+ .stat-card:hover::after {
293
+ opacity: 1;
294
+ box-shadow: 0 0 10px var(--primary-color);
295
+ }
296
+
297
+ .stat-value {
298
+ font-size: 2rem;
299
+ font-weight: 600;
300
+ color: var(--primary-color);
301
+ margin-bottom: 0.5rem;
302
+ text-shadow: 0 0 10px var(--primary-glow);
303
+ }
304
+
305
+ .stat-label {
306
+ color: var(--text-secondary);
307
+ font-size: 0.9rem;
308
+ text-transform: uppercase;
309
+ letter-spacing: 0.5px;
310
+ }
311
+
312
+ .space-grid {
313
+ display: grid;
314
+ grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
315
+ gap: 1.5rem;
316
+ margin-top: 2rem;
317
+ }
318
+
319
+ .space-card {
320
+ background: var(--card-background);
321
+ border-radius: 16px;
322
+ border: 1px solid var(--border-color);
323
+ overflow: hidden;
324
+ transition: all 0.3s ease;
325
+ position: relative;
326
+ }
327
+
328
+ .space-card:hover {
329
+ transform: translateY(-5px);
330
+ box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
331
+ }
332
+
333
+ .space-card.selected {
334
+ border-color: var(--primary-color);
335
+ box-shadow: 0 0 0 2px var(--primary-glow);
336
+ }
337
+
338
+ .card-checkbox {
339
+ position: absolute;
340
+ top: 1rem;
341
+ right: 1rem;
342
+ width: 20px;
343
+ height: 20px;
344
+ cursor: pointer;
345
+ z-index: 1;
346
+ }
347
+
348
+ .space-header {
349
+ padding: 1.5rem;
350
+ background: var(--surface-color);
351
+ border-bottom: 1px solid var(--border-color);
352
+ display: flex;
353
+ justify-content: space-between;
354
+ align-items: center;
355
+ }
356
+
357
+ .space-name {
358
+ font-size: 1.1rem;
359
+ font-weight: 600;
360
+ color: var(--text-primary);
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 0.5rem;
364
+ }
365
+
366
+ .status-badge {
367
+ padding: 0.25rem 0.75rem;
368
+ border-radius: 6px;
369
+ font-size: 0.875rem;
370
+ font-weight: 500;
371
+ display: flex;
372
+ align-items: center;
373
+ gap: 0.5rem;
374
+ }
375
+
376
+ .space-content {
377
+ padding: 1.5rem;
378
+ }
379
+
380
+ .space-info {
381
+ display: grid;
382
+ grid-template-columns: repeat(2, 1fr);
383
+ gap: 1rem;
384
+ margin-bottom: 1.5rem;
385
+ }
386
+
387
+ .info-item {
388
+ display: flex;
389
+ flex-direction: column;
390
+ gap: 0.25rem;
391
+ }
392
+
393
+ .info-label {
394
+ color: var(--text-secondary);
395
+ font-size: 0.8rem;
396
+ text-transform: uppercase;
397
+ letter-spacing: 0.5px;
398
+ }
399
+
400
+ .info-value {
401
+ color: var(--text-primary);
402
+ font-size: 0.9rem;
403
+ font-weight: 500;
404
+ }
405
+
406
+ .action-buttons {
407
+ display: grid;
408
+ grid-template-columns: repeat(3, 1fr);
409
+ gap: 0.75rem;
410
+ padding: 1rem;
411
+ background: var(--surface-color);
412
+ border-top: 1px solid var(--border-color);
413
+ }
414
+
415
+ .action-button {
416
+ padding: 0.75rem;
417
+ border-radius: 8px;
418
+ font-size: 0.9rem;
419
+ font-weight: 500;
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ gap: 0.5rem;
424
+ cursor: pointer;
425
+ transition: all 0.3s ease;
426
+ background: transparent;
427
+ border: 1px solid var(--border-color);
428
+ color: var(--text-primary);
429
+ text-decoration: none;
430
+ }
431
+
432
+ .action-button:hover {
433
+ border-color: var(--primary-color);
434
+ background: var(--primary-glow);
435
+ }
436
+
437
+ .action-button.restart {
438
+ border-color: var(--primary-color);
439
+ color: var(--primary-color);
440
+ }
441
+
442
+ .action-button.restart:hover {
443
+ background: var(--primary-color);
444
+ color: var(--card-background);
445
+ }
446
+
447
+ @media (max-width: 768px) {
448
+ .header-content {
449
+ flex-direction: column;
450
+ gap: 1rem;
451
+ }
452
+
453
+ .nav-actions {
454
+ width: 100%;
455
+ flex-direction: column;
456
+ gap: 1rem;
457
+ }
458
+
459
+ .search-bar {
460
+ width: 100%;
461
+ }
462
+
463
+ .bulk-actions {
464
+ flex-direction: column;
465
+ gap: 1rem;
466
+ }
467
+
468
+ .stats-grid {
469
+ grid-template-columns: 1fr;
470
+ }
471
+
472
+ .space-grid {
473
+ grid-template-columns: 1fr;
474
+ }
475
+ }
476
+
477
+ /* 自定义滚动条 */
478
+ ::-webkit-scrollbar {
479
+ width: 8px;
480
+ height: 8px
481
+ }
482
 
483
  /* 自定义滚动条 */
484
  ::-webkit-scrollbar {