@@ -3,12 +3,12 @@ import { CrownIcon } from "lucide-react";
3
3
import React from "react" ;
4
4
5
5
import { cn } from "@/lib/utils" ;
6
- import { transformSecondsToTimeString } from "@/utils/helperFunctions " ;
6
+ import { Link } from "@/navigation " ;
7
7
8
8
import { UsernameLink } from "./UsernameLink" ;
9
9
10
10
interface PodiumProps {
11
- name : string ;
11
+ username : string ;
12
12
value : string ;
13
13
position : number ;
14
14
}
@@ -32,12 +32,15 @@ const podiumVariants = cva("", {
32
32
} ,
33
33
} ) ;
34
34
35
- const Podium = ( { name , value, position } : PodiumProps ) => {
35
+ const Podium = ( { username , value, position } : PodiumProps ) => {
36
36
const variant =
37
37
position === 1 ? "gold" : position === 2 ? "silver" : "bronze" ;
38
38
39
39
return (
40
- < div className = "w-1/3" >
40
+ < Link
41
+ href = { `/profile/${ username . replace ( "@" , "" ) } ` }
42
+ className = { `w-1/3 ${ username ? "cursor-pointer" : "pointer-events-none" } ` }
43
+ >
41
44
< div className = "flex flex-col items-center md:min-w-[12rem]" >
42
45
< div className = "flex w-full items-center justify-center border-4 border-b-4 border-t-0 border-transparent border-b-neutral-200 dark:border-b-neutral-600" >
43
46
< div
@@ -65,8 +68,8 @@ const Podium = ({ name, value, position }: PodiumProps) => {
65
68
</ div >
66
69
</ div >
67
70
< div className = "flex w-full flex-col items-center gap-0.5 md:gap-0" >
68
- < span className = "xs:text-sm max-w-[calc(100%-1rem)] overflow-hidden text-ellipsis whitespace-nowrap text-xs text-neutral-800 dark:text-neutral-50 md:text-lg" >
69
- { name }
71
+ < span className = "xs:text-sm max-w-[calc(100%-1rem)] overflow-hidden text-ellipsis whitespace-nowrap text-xs font-normal text-neutral-800 dark:text-neutral-50 md:text-lg" >
72
+ { username }
70
73
</ span >
71
74
< div className = "flex flex-col items-center gap-1" >
72
75
< span
@@ -106,11 +109,11 @@ const Podium = ({ name, value, position }: PodiumProps) => {
106
109
</ div >
107
110
</ div >
108
111
</ div >
109
- </ div >
112
+ </ Link >
110
113
) ;
111
114
} ;
112
115
113
- export const LeaderboardRow = ( { name , value, position } : PodiumProps ) => {
116
+ export const LeaderboardRow = ( { username , value, position } : PodiumProps ) => {
114
117
return (
115
118
< li className = "py-3 sm:py-4" >
116
119
< div className = "flex items-start space-x-4" >
@@ -123,7 +126,7 @@ export const LeaderboardRow = ({ name, value, position }: PodiumProps) => {
123
126
</ span >
124
127
</ div >
125
128
< div className = "min-w-0 flex-1" >
126
- < UsernameLink username = { name } />
129
+ < UsernameLink username = { username } />
127
130
{ /* <div className="text-sm text-muted-foreground ">
128
131
{format.dateTime(new Date(entry.created_at), {
129
132
dateStyle: "short",
@@ -151,17 +154,17 @@ export const Leaderboard = ({ entries }: LeaderboardProps) => {
151
154
< >
152
155
< div className = "xs:gap-2 bg-light-theme-dotted-pattern dark:bg-dark-theme-dotted-pattern bg-dotted-pattern-size flex items-end justify-center gap-0 border-t border-t-neutral-100 bg-center bg-repeat dark:border-t-neutral-700/75 md:gap-4" >
153
156
< Podium
154
- name = { entries [ 1 ] ?. name || "" }
157
+ username = { entries [ 1 ] ?. name || "" }
155
158
value = { entries [ 1 ] ?. value || "" }
156
159
position = { 2 }
157
160
/>
158
161
< Podium
159
- name = { entries [ 0 ] ?. name || "" }
162
+ username = { entries [ 0 ] ?. name || "" }
160
163
value = { entries [ 0 ] ?. value || "" }
161
164
position = { 1 }
162
165
/>
163
166
< Podium
164
- name = { entries [ 2 ] ?. name || "" }
167
+ username = { entries [ 2 ] ?. name || "" }
165
168
value = { entries [ 2 ] ?. value || "" }
166
169
position = { 3 }
167
170
/>
@@ -173,7 +176,7 @@ export const Leaderboard = ({ entries }: LeaderboardProps) => {
173
176
entry ? (
174
177
< LeaderboardRow
175
178
key = { entry . name }
176
- name = { entry ?. name }
179
+ username = { entry ?. name }
177
180
position = { entry ?. position }
178
181
value = { entry ?. value }
179
182
/>
0 commit comments