@@ -4,23 +4,39 @@ import TableCell from '@mui/material/TableCell';
44import TableContainer from '@mui/material/TableContainer' ;
55import TableHead from '@mui/material/TableHead' ;
66import TableRow from '@mui/material/TableRow' ;
7+ import EmojiEventsIcon from '@mui/icons-material/EmojiEvents' ;
78import './leaderBoard.css' ;
89
910const TopPlayCreators = ( { topPlayCreators } ) => {
10- const profilePicture = ( name , avatarUrl ) => {
11- return (
12- < div className = "flex flex-row items-center gap-4" >
13- < img
14- alt = { name }
15- className = "rounded-full border-solid h-8 w-8"
16- src = { avatarUrl }
17- title = { name }
18- />
19- < div className = "leaderboard-table-cell" > { name } </ div >
20- </ div >
21- ) ;
11+ const getRankIcon = ( rank ) => {
12+ if ( rank === 1 ) {
13+ return < EmojiEventsIcon className = "gold-trophy" fontSize = "small" /> ;
14+ }
15+
16+ if ( rank === 2 ) {
17+ return < EmojiEventsIcon className = "silver-trophy" fontSize = "small" /> ;
18+ }
19+
20+ if ( rank === 3 ) {
21+ return < EmojiEventsIcon className = "bronze-trophy" fontSize = "small" /> ;
22+ }
23+
24+ return null ;
2225 } ;
2326
27+ const profilePicture = ( name , avatarUrl , rank ) => (
28+ < div className = "flex flex-row items-center gap-3" >
29+ { getRankIcon ( rank ) }
30+ < img
31+ alt = { name }
32+ className = "h-8 w-8 rounded-full border-solid rank-avatar"
33+ src = { avatarUrl }
34+ title = { name }
35+ />
36+ < div className = "leaderboard-table-cell" > { name } </ div >
37+ </ div >
38+ ) ;
39+
2440 return (
2541 < TableContainer className = "leaderboard-container" >
2642 < Table aria-label = "leader board" >
@@ -30,24 +46,34 @@ const TopPlayCreators = ({ topPlayCreators }) => {
3046 Name
3147 </ TableCell >
3248 < TableCell align = "center" className = "leaderboard-table-header" >
33- Number of plays
49+ Number of Plays
3450 </ TableCell >
3551 </ TableRow >
3652 </ TableHead >
3753 < TableBody >
38- { topPlayCreators . map ( ( creator ) => (
39- < TableRow
40- key = { creator . displayName }
41- sx = { { '&:last-child td, &:last-child th' : { border : 0 } } }
42- >
43- < TableCell align = "left" className = "leaderboard-table-cell" component = "th" scope = "row" >
44- { profilePicture ( creator . displayName , creator . avatarUrl ) }
45- </ TableCell >
46- < TableCell align = "center" className = "leaderboard-table-cell" >
47- { creator . count }
48- </ TableCell >
49- </ TableRow >
50- ) ) }
54+ { topPlayCreators . map ( ( creator , index ) => {
55+ const rank = index + 1 ;
56+
57+ return (
58+ < TableRow
59+ className = { `rank-${ rank } ` }
60+ key = { creator . displayName }
61+ sx = { { '&:last-child td, &:last-child th' : { border : 0 } } }
62+ >
63+ < TableCell
64+ align = "left"
65+ className = "leaderboard-table-cell"
66+ component = "th"
67+ scope = "row"
68+ >
69+ { profilePicture ( creator . displayName , creator . avatarUrl , rank ) }
70+ </ TableCell >
71+ < TableCell align = "center" className = "leaderboard-table-cell" >
72+ { creator . count }
73+ </ TableCell >
74+ </ TableRow >
75+ ) ;
76+ } ) }
5177 </ TableBody >
5278 </ Table >
5379 </ TableContainer >
0 commit comments