@@ -8,7 +8,7 @@ import { User } from './types';
88export function LeaderboardPodium ( { topThree } : { topThree : User [ ] } ) {
99 return (
1010 < ol
11- className = "flex items-end justify-center gap-4 md:gap-8 pb-4 pt-8 min-h-[350px ] list-none m-0 p-0"
11+ className = "flex items-end justify-center gap-2 md:gap-8 pb-4 pt-16 min-h-[340px ] list-none m-0 p-0"
1212 aria-label = "Top 3 Leaders"
1313 >
1414 { topThree . map ( user => {
@@ -21,35 +21,32 @@ export function LeaderboardPodium({ topThree }: { topThree: User[] }) {
2121 < li
2222 key = { user . id }
2323 className = { cn (
24- 'flex flex-col items-center transition-all duration-500 relative' ,
25- isFirst ? 'order-2 z-10 -mt-8' : 'z-0 ' ,
24+ 'flex flex-col items-center transition-all duration-500 relative z-0 ' ,
25+ isFirst ? 'order-2 z-10 -mt-8 md:-mt-12 ' : '' ,
2626 isSecond ? 'order-1' : '' ,
2727 isThird ? 'order-3' : ''
2828 ) }
2929 >
30- < div className = "flex flex-col items-center" >
31- < div className = "relative mb-4 group cursor-pointer " >
30+ < div className = "flex flex-col items-center group " >
31+ < div className = "relative mb-3 md:mb-5 transition-transform duration-300 group-hover:scale-105 " >
3232 { isFirst && (
3333 < Crown
34- className = "absolute -top-12 left-1/2 -translate-x-1/2 w-10 h-10 text-yellow-400 animate-bounce drop-shadow-lg "
34+ className = "absolute -top-10 md:-top- 12 left-1/2 -translate-x-1/2 w-10 h-10 md:w-12 md:h-12 text-yellow-400 animate-bounce drop-shadow-[0_0_15px_rgba(250,204,21,0.5)] "
3535 aria-hidden = "true"
3636 />
3737 ) }
38+
3839 < div
3940 className = { cn (
40- 'relative rounded-full p-1 transition-transform duration-300 group-hover:scale-105 ' ,
41+ 'relative rounded-full p-[3px] shadow-2xl ' ,
4142 isFirst
42- ? 'bg-gradient-to-tr from-yellow-300 via-yellow-100 to-yellow-500 shadow-yellow-500/50 shadow-lg'
43- : '' ,
44- isSecond
45- ? 'bg-gradient-to-tr from-slate-300 via-slate-100 to-slate-400 shadow-slate-400/50 shadow-md'
46- : '' ,
47- isThird
48- ? 'bg-gradient-to-tr from-orange-300 via-orange-100 to-orange-400 shadow-orange-400/50 shadow-md'
49- : ''
43+ ? 'bg-gradient-to-tr from-yellow-300 via-yellow-100 to-yellow-500'
44+ : isSecond
45+ ? 'bg-gradient-to-tr from-slate-300 via-slate-100 to-slate-400'
46+ : 'bg-gradient-to-tr from-orange-300 via-orange-100 to-orange-400'
5047 ) }
5148 >
52- < div className = "relative w-16 h-16 md:w-20 md:h-20 rounded-full overflow-hidden border-2 border-white dark:border-slate-800 bg-slate-200 dark:bg-slate-800 " >
49+ < div className = "relative w-16 h-16 md:w-24 md:h-24 rounded-full overflow-hidden border-4 border-white dark:border-slate-900 bg-slate-200" >
5350 < Image
5451 src = { user . avatar }
5552 alt = { `${ user . username } 's avatar` }
@@ -61,7 +58,7 @@ export function LeaderboardPodium({ topThree }: { topThree: User[] }) {
6158
6259 < div
6360 className = { cn (
64- 'absolute -bottom-3 left-1/2 -translate-x-1/2 flex items-center justify-center w-8 h-8 rounded-full font-bold border-2 border-white dark:border-slate-900 shadow-md ' ,
61+ 'absolute -bottom-3 left-1/2 -translate-x-1/2 flex items-center justify-center w-7 h-7 md:w-9 md:h-9 rounded-full font-bold text-xs md:text-sm border-[3px] border-white dark:border-slate-900 shadow-lg ' ,
6562 isFirst
6663 ? 'bg-yellow-500 text-white'
6764 : isSecond
@@ -73,32 +70,28 @@ export function LeaderboardPodium({ topThree }: { topThree: User[] }) {
7370 </ div >
7471 </ div >
7572
76- < div className = "text-center mb-3" >
77- < div className = "font-bold text-slate-800 dark:text-slate-100 text-base mb-1 truncate max-w-[120px ]" >
73+ < div className = "text-center mb-3 md:mb-5 " >
74+ < div className = "font-bold text-slate-800 dark:text-slate-100 text-xs md:text-lg mb-1 truncate max-w-[85px] md:max-w-[140px ]" >
7875 { user . username }
7976 </ div >
80- < div className = "font-mono font-bold text-xl text-slate-900 dark:text-white tracking-tight" >
81- { user . points } { ' ' }
82- < span className = "text-xs font-normal text-slate-500" >
83- pts
84- </ span >
77+ < div className = "inline-block px-2 py-0.5 rounded-full bg-slate-100 dark:bg-slate-800 border border-slate-200 dark:border-slate-700" >
78+ < div className = "font-mono font-bold text-xs md:text-sm text-slate-700 dark:text-slate-300" >
79+ { user . points } < span className = "text-slate-400" > pts</ span >
80+ </ div >
8581 </ div >
8682 </ div >
8783
8884 < div
8985 aria-hidden = "true"
9086 className = { cn (
91- 'w-24 md:w-36 rounded-t-2xl border-x border-t shadow-lg backdrop-blur-sm' ,
92- 'bg-gradient-to-b from-white/80 via-white/40 to-transparent dark:from-slate-800/80 dark:via-slate-800/40' ,
87+ 'w-20 md:w-40 rounded-t-2xl backdrop-blur-xl transition-all duration-300' ,
88+ 'border-t-2 border-x-2 border-white/60 dark:border-white/10' ,
89+
9390 isFirst
94- ? 'h-40 border-yellow-400/30 dark:border-yellow-500/30'
95- : '' ,
96- isSecond
97- ? 'h-24 border-slate-300/30 dark:border-slate-500/30'
98- : '' ,
99- isThird
100- ? 'h-20 border-orange-300/30 dark:border-orange-500/30'
101- : ''
91+ ? 'h-40 md:h-56 bg-gradient-to-b from-yellow-200/30 to-yellow-500/5 dark:from-yellow-400/20 dark:to-transparent shadow-[0_0_50px_-10px_rgba(234,179,8,0.4)]'
92+ : isSecond
93+ ? 'h-28 md:h-40 bg-gradient-to-b from-slate-200/30 to-slate-500/5 dark:from-slate-400/20 dark:to-transparent shadow-[0_0_40px_-10px_rgba(148,163,184,0.3)]'
94+ : 'h-20 md:h-28 bg-gradient-to-b from-orange-200/30 to-orange-500/5 dark:from-orange-400/20 dark:to-transparent shadow-[0_0_40px_-10px_rgba(251,146,60,0.3)]'
10295 ) }
10396 />
10497 </ div >
0 commit comments