Spaces:
Running
Running
Apply LiveView style to Leaderboard: add AMA gradient, improve colors and card design
Browse files- 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
|
| 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:
|
|
|
|
| 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:
|
| 343 |
}
|
| 344 |
.loading-overlay {
|
| 345 |
position: fixed;
|
| 346 |
inset: 0;
|
| 347 |
-
background: rgba(255, 255, 255, 0.
|
| 348 |
z-index: 1000;
|
| 349 |
display: flex;
|
| 350 |
align-items: center;
|
| 351 |
justify-content: center;
|
| 352 |
}
|
| 353 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 {
|
| 364 |
-
|
| 365 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 366 |
|
| 367 |
/* compact spacing for higher information density */
|
| 368 |
-
.compact-card :deep(.p-card-body) {
|
| 369 |
-
|
| 370 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
|