Skip to content

Commit 938d419

Browse files
authored
Add loader animations to the leaderboard
Add animated skeleton loader to dashboard leaderboard with theme support
2 parents 997121e + be38096 commit 938d419

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed

src/components/dashboard/LeaderBoard/leaderboard.css

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -884,6 +884,160 @@
884884
}
885885
}
886886

887+
/* Skeleton Loader Styles */
888+
.skeleton-loader {
889+
padding: 24px;
890+
border-radius: 12px;
891+
margin-top: 24px;
892+
}
893+
894+
.skeleton-loader.light {
895+
background: #fff;
896+
border: 1px solid #e2e8f0;
897+
}
898+
899+
.skeleton-loader.dark {
900+
background: #2b303b;
901+
border: 1px solid #444;
902+
}
903+
904+
.skeleton-header {
905+
display: grid;
906+
grid-template-columns: 0.5fr 0.5fr 2fr 1fr 1fr;
907+
gap: 16px;
908+
padding: 16px 24px;
909+
font-weight: 600;
910+
font-size: 14px;
911+
border-bottom: 2px solid;
912+
margin-bottom: 16px;
913+
}
914+
915+
.skeleton-loader.light .skeleton-header {
916+
color: #666;
917+
border-color: #e2e8f0;
918+
}
919+
920+
.skeleton-loader.dark .skeleton-header {
921+
color: #b3b3b3;
922+
border-color: #444;
923+
}
924+
925+
.skeleton-row {
926+
display: grid;
927+
grid-template-columns: 0.5fr 0.5fr 2fr 1fr 1fr;
928+
align-items: center;
929+
gap: 16px;
930+
padding: 16px 24px;
931+
margin-bottom: 12px;
932+
border-radius: 8px;
933+
}
934+
935+
.skeleton-loader.light .skeleton-row {
936+
background: #f8fafc;
937+
}
938+
939+
.skeleton-loader.dark .skeleton-row {
940+
background: #323742;
941+
}
942+
943+
.skeleton-avatar {
944+
width: 32px;
945+
height: 32px;
946+
border-radius: 50%;
947+
background: linear-gradient(
948+
90deg,
949+
rgba(0, 0, 0, 0.06) 25%,
950+
rgba(0, 0, 0, 0.12) 50%,
951+
rgba(0, 0, 0, 0.06) 75%
952+
);
953+
background-size: 200% 100%;
954+
animation: skeleton-shimmer 2s infinite;
955+
}
956+
957+
.skeleton-loader.dark .skeleton-avatar {
958+
background: linear-gradient(
959+
90deg,
960+
rgba(255, 255, 255, 0.05) 25%,
961+
rgba(255, 255, 255, 0.1) 50%,
962+
rgba(255, 255, 255, 0.05) 75%
963+
);
964+
background-size: 200% 100%;
965+
}
966+
967+
.skeleton-avatar.large {
968+
width: 40px;
969+
height: 40px;
970+
}
971+
972+
.skeleton-info {
973+
display: flex;
974+
flex-direction: column;
975+
gap: 8px;
976+
width: 100%;
977+
}
978+
979+
.skeleton-bar {
980+
height: 16px;
981+
width: 60%;
982+
border-radius: 4px;
983+
background: linear-gradient(
984+
90deg,
985+
rgba(0, 0, 0, 0.06) 25%,
986+
rgba(0, 0, 0, 0.12) 50%,
987+
rgba(0, 0, 0, 0.06) 75%
988+
);
989+
background-size: 200% 100%;
990+
animation: skeleton-shimmer 2s infinite;
991+
}
992+
993+
.skeleton-loader.dark .skeleton-bar {
994+
background: linear-gradient(
995+
90deg,
996+
rgba(255, 255, 255, 0.05) 25%,
997+
rgba(255, 255, 255, 0.1) 50%,
998+
rgba(255, 255, 255, 0.05) 75%
999+
);
1000+
background-size: 200% 100%;
1001+
}
1002+
1003+
.skeleton-badges {
1004+
display: flex;
1005+
gap: 8px;
1006+
}
1007+
1008+
.skeleton-badge {
1009+
height: 20px;
1010+
width: 60px;
1011+
border-radius: 12px;
1012+
background: linear-gradient(
1013+
90deg,
1014+
rgba(0, 0, 0, 0.06) 25%,
1015+
rgba(0, 0, 0, 0.12) 50%,
1016+
rgba(0, 0, 0, 0.06) 75%
1017+
);
1018+
background-size: 200% 100%;
1019+
animation: skeleton-shimmer 2s infinite;
1020+
}
1021+
1022+
.skeleton-loader.dark .skeleton-badge {
1023+
background: linear-gradient(
1024+
90deg,
1025+
rgba(255, 255, 255, 0.05) 25%,
1026+
rgba(255, 255, 255, 0.1) 50%,
1027+
rgba(255, 255, 255, 0.05) 75%
1028+
);
1029+
background-size: 200% 100%;
1030+
}
1031+
1032+
@keyframes skeleton-shimmer {
1033+
0% {
1034+
background-position: -200% 0;
1035+
}
1036+
100% {
1037+
background-position: 200% 0;
1038+
}
1039+
}
1040+
8871041
/* PR List Modal Styles */
8881042
.pr-modal-backdrop {
8891043
position: fixed;

0 commit comments

Comments
 (0)