lfqian commited on
Commit
75781dd
·
1 Parent(s): d6e1b11

Apply LiveView style to Leaderboard: add AMA gradient, improve colors and card design

Browse files
Files changed (1) hide show
  1. src/views/LeaderboardView.vue +136 -11
src/views/LeaderboardView.vue CHANGED
@@ -24,7 +24,7 @@
24
  <div class="col-panel desktop-filter-panel" style="flex: 1; min-width: 280px;">
25
  <Card class="mb-2 card-full compact-card content-card">
26
  <template #title>
27
- <div class="mb-4 text-900" style="font-size: 20px; font-weight: 600">Filter Matrix</div>
28
  <Divider />
29
  </template>
30
  <template #content>
@@ -325,32 +325,69 @@ export default {
325
  </script>
326
 
327
  <style scoped>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  .page-wrapper {
329
  max-width: 1600px;
330
  margin: 0 auto;
331
- padding: 0 1rem 1rem 1rem;
 
332
  }
333
 
334
  .title-container {
335
  text-align: center;
 
336
  }
337
 
338
  .main-title {
339
  font-size: 2rem;
340
  letter-spacing: -0.02em;
341
  font-weight: 800;
342
- color: #1f1f33;
343
  }
344
  .loading-overlay {
345
  position: fixed;
346
  inset: 0;
347
- background: rgba(255, 255, 255, 0.85);
348
  z-index: 1000;
349
  display: flex;
350
  align-items: center;
351
  justify-content: center;
352
  }
353
- .loading-box { text-align: center; }
 
 
 
 
 
 
 
354
 
355
  .card--with-divider :deep(.p-card-title) {
356
  border-bottom: 1px solid var(--surface-200);
@@ -360,14 +397,52 @@ export default {
360
 
361
  /* equal-height for side-by-side cards */
362
  .col-panel { display: flex; }
363
- .card-full { width: 100%; display: flex; flex-direction: column; }
364
- .card-full :deep(.p-card-body) { display: flex; flex-direction: column; height: 100%; }
365
- .card-full :deep(.p-card-content) { flex: 1; display: flex; flex-direction: column; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
 
367
  /* compact spacing for higher information density */
368
- .compact-card :deep(.p-card-body) { padding: 0.75rem; }
369
- .compact-card :deep(.p-card-content) { padding-top: 0; padding-bottom: 0; overflow-y: auto; }
370
- .compact-card :deep(.p-card-title) { margin-bottom: 0.5rem; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
 
372
  /* datatable compact paddings */
373
  :deep(.p-datatable .p-datatable-header) { padding: 0.5rem 0.75rem; }
@@ -465,5 +540,55 @@ export default {
465
  :deep(.filter-drawer .p-drawer-content) {
466
  padding: 1rem;
467
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  </style>
469
 
 
24
  <div class="col-panel desktop-filter-panel" style="flex: 1; min-width: 280px;">
25
  <Card class="mb-2 card-full compact-card content-card">
26
  <template #title>
27
+ <div class="mb-4 ama-gradient" style="font-size: 20px; font-weight: 800">Filter Matrix</div>
28
  <Divider />
29
  </template>
30
  <template #content>
 
325
  </script>
326
 
327
  <style scoped>
328
+ /* ===== AMA Color Variables (from LiveView) ===== */
329
+ :root {
330
+ --ama-start: 0,0,185;
331
+ --ama-mid: 123,44,191;
332
+ --ama-end: 240,0,15;
333
+ --gold: #d4af37;
334
+ --silver: #c0c0c0;
335
+ --bronze: #cd7f32;
336
+ --ink-900: #0f172a;
337
+ --ink-700: #334155;
338
+ --ink-600: #64748b;
339
+ --bd-soft: #E7ECF3;
340
+ --pos-fg: #0e7a3a;
341
+ --pos-bg: #f0fdf4;
342
+ --pos-br: #bbf7d0;
343
+ --neg-fg: #B91C1C;
344
+ --neg-bg: #fef2f2;
345
+ --neg-br: #fecaca;
346
+ }
347
+
348
+ /* ===== AMA Gradient ===== */
349
+ .ama-gradient {
350
+ background: linear-gradient(90deg, rgb(0,0,185), #7b2cbf 40%, #d946ef 70%, rgb(240,0,15));
351
+ -webkit-background-clip: text;
352
+ -webkit-text-fill-color: transparent;
353
+ background-clip: text;
354
+ }
355
+
356
  .page-wrapper {
357
  max-width: 1600px;
358
  margin: 0 auto;
359
+ padding: 16px 20px 60px;
360
+ background: #fff;
361
  }
362
 
363
  .title-container {
364
  text-align: center;
365
+ margin-bottom: 24px;
366
  }
367
 
368
  .main-title {
369
  font-size: 2rem;
370
  letter-spacing: -0.02em;
371
  font-weight: 800;
372
+ color: var(--ink-900);
373
  }
374
  .loading-overlay {
375
  position: fixed;
376
  inset: 0;
377
+ background: rgba(255, 255, 255, 0.95);
378
  z-index: 1000;
379
  display: flex;
380
  align-items: center;
381
  justify-content: center;
382
  }
383
+
384
+ .loading-box {
385
+ text-align: center;
386
+ padding: 32px;
387
+ background: #fff;
388
+ border-radius: 16px;
389
+ box-shadow: 0 10px 40px rgba(0,0,0,0.1);
390
+ }
391
 
392
  .card--with-divider :deep(.p-card-title) {
393
  border-bottom: 1px solid var(--surface-200);
 
397
 
398
  /* equal-height for side-by-side cards */
399
  .col-panel { display: flex; }
400
+ .card-full {
401
+ width: 100%;
402
+ display: flex;
403
+ flex-direction: column;
404
+ background: #ffffff;
405
+ border: 1px solid var(--bd-soft);
406
+ border-radius: 16px;
407
+ box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.06);
408
+ transition: all 0.2s ease;
409
+ }
410
+
411
+ .card-full:hover {
412
+ box-shadow: 0 4px 16px rgba(0,0,0,0.08), 0 8px 32px rgba(0,0,0,0.1);
413
+ transform: translateY(-1px);
414
+ }
415
+
416
+ .card-full :deep(.p-card-body) {
417
+ display: flex;
418
+ flex-direction: column;
419
+ height: 100%;
420
+ }
421
+
422
+ .card-full :deep(.p-card-content) {
423
+ flex: 1;
424
+ display: flex;
425
+ flex-direction: column;
426
+ }
427
 
428
  /* compact spacing for higher information density */
429
+ .compact-card :deep(.p-card-body) {
430
+ padding: 20px;
431
+ }
432
+
433
+ .compact-card :deep(.p-card-content) {
434
+ padding-top: 0;
435
+ padding-bottom: 0;
436
+ overflow-y: auto;
437
+ }
438
+
439
+ .compact-card :deep(.p-card-title) {
440
+ margin-bottom: 16px;
441
+ font-size: 20px;
442
+ font-weight: 800;
443
+ letter-spacing: -0.02em;
444
+ color: var(--ink-900);
445
+ }
446
 
447
  /* datatable compact paddings */
448
  :deep(.p-datatable .p-datatable-header) { padding: 0.5rem 0.75rem; }
 
540
  :deep(.filter-drawer .p-drawer-content) {
541
  padding: 1rem;
542
  }
543
+
544
+ /* ===== Button Improvements ===== */
545
+ :deep(.p-button) {
546
+ font-weight: 700;
547
+ letter-spacing: -0.01em;
548
+ transition: all 0.2s ease;
549
+ }
550
+
551
+ :deep(.p-button:not(.p-button-text):not(.p-button-outlined):hover) {
552
+ transform: translateY(-1px);
553
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
554
+ }
555
+
556
+ /* ===== Empty State ===== */
557
+ .empty-offset > span {
558
+ color: var(--ink-600);
559
+ font-size: 16px;
560
+ }
561
+
562
+ /* ===== Divider ===== */
563
+ :deep(.p-divider) {
564
+ margin: 0.5rem 0;
565
+ border-color: var(--bd-soft);
566
+ }
567
+
568
+ /* ===== DataTable Improvements ===== */
569
+ :deep(.p-datatable) {
570
+ border-radius: 12px;
571
+ overflow: hidden;
572
+ }
573
+
574
+ :deep(.p-datatable .p-datatable-thead > tr > th) {
575
+ background: #F6F8FB;
576
+ color: var(--ink-700);
577
+ font-weight: 700;
578
+ border-color: var(--bd-soft);
579
+ }
580
+
581
+ :deep(.p-datatable .p-datatable-tbody > tr) {
582
+ transition: background 0.15s ease;
583
+ }
584
+
585
+ :deep(.p-datatable .p-datatable-tbody > tr:hover) {
586
+ background: #F6F8FB;
587
+ }
588
+
589
+ :deep(.p-datatable .p-datatable-tbody > tr > td) {
590
+ border-color: var(--bd-soft);
591
+ color: var(--ink-700);
592
+ }
593
  </style>
594