Skip to content

Commit 41eb991

Browse files
committed
fix: added project link
1 parent 5c81ec0 commit 41eb991

File tree

3 files changed

+59
-42
lines changed

3 files changed

+59
-42
lines changed

app/(landing)/hackathons/[slug]/components/tabs/contents/winners/GeneralWinnerCard.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,15 @@ export const GeneralWinnerCard = ({
1111
winner,
1212
submission,
1313
}: GeneralWinnerCardProps) => {
14+
const projectUrl = `/projects/${winner.submissionId}?type=submission`;
15+
1416
return (
15-
<div className='flex items-center justify-between gap-4 rounded-xl border border-white/5 bg-[#0A0A0A] p-4 transition-all hover:border-white/10'>
17+
<a
18+
href={projectUrl}
19+
target='_blank'
20+
rel='noopener noreferrer'
21+
className='flex items-center justify-between gap-4 rounded-xl border border-white/5 bg-[#0A0A0A] p-4 transition-all hover:border-white/10 hover:bg-white/2'
22+
>
1623
<div className='flex items-center gap-4'>
1724
<div className='flex h-8 w-8 items-center justify-center rounded-lg bg-white/5 text-[10px] font-bold text-white/40'>
1825
#{winner.rank}
@@ -28,6 +35,6 @@ export const GeneralWinnerCard = ({
2835
</div>
2936

3037
<div className='text-primary text-xs font-bold'>{winner.prize}</div>
31-
</div>
38+
</a>
3239
);
3340
};

app/(landing)/hackathons/[slug]/components/tabs/contents/winners/PodiumWinnerCard.tsx

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
22
import { HackathonWinner } from '@/lib/api/hackathons';
33
import { Trophy } from 'lucide-react';
44
import { SubmissionCardProps } from '@/types/hackathon';
5+
import { BoundlessButton } from '@/components/buttons/BoundlessButton';
56
import Image from 'next/image';
67

78
interface PodiumWinnerCardProps {
@@ -13,6 +14,8 @@ export const PodiumWinnerCard = ({
1314
winner,
1415
submission,
1516
}: PodiumWinnerCardProps) => {
17+
const projectUrl = `/projects/${winner.submissionId}?type=submission`;
18+
1619
return (
1720
<div className='relative w-full overflow-hidden rounded-2xl border border-white/5 bg-[#0A0A0A] p-6 transition-all hover:border-white/10'>
1821
<div className='mb-4 flex items-center justify-between gap-4'>
@@ -35,18 +38,30 @@ export const PodiumWinnerCard = ({
3538
{submission?.description || 'No description provided for this project.'}
3639
</p>
3740

38-
<div className='flex items-center gap-3'>
39-
<Avatar className='h-8 w-8 border border-white/10'>
40-
<AvatarImage src={winner.participants[0]?.avatar} />
41-
<AvatarFallback className='bg-white/5 text-[10px] font-bold text-white/60'>
42-
{winner.participants[0]?.username.slice(0, 2).toUpperCase()}
43-
</AvatarFallback>
44-
</Avatar>
45-
<div className='flex flex-col'>
46-
<span className='text-[11px] font-medium text-white/80'>
47-
{winner.teamName || winner.participants[0]?.username}
48-
</span>
41+
<div className='flex items-center justify-between gap-3'>
42+
<div className='flex items-center gap-3'>
43+
<Avatar className='h-8 w-8 border border-white/10'>
44+
<AvatarImage src={winner.participants[0]?.avatar} />
45+
<AvatarFallback className='bg-white/5 text-[10px] font-bold text-white/60'>
46+
{winner.participants[0]?.username.slice(0, 2).toUpperCase()}
47+
</AvatarFallback>
48+
</Avatar>
49+
<div className='flex flex-col'>
50+
<span className='text-[11px] font-medium text-white/80'>
51+
{winner.teamName || winner.participants[0]?.username}
52+
</span>
53+
</div>
4954
</div>
55+
56+
<a href={projectUrl} target='_blank' rel='noopener noreferrer'>
57+
<BoundlessButton
58+
variant='outline'
59+
size='sm'
60+
className='hover:bg-primary h-8 rounded-lg border-white/5 bg-white/5 px-3 text-[10px] font-bold transition-all hover:text-black'
61+
>
62+
View Project
63+
</BoundlessButton>
64+
</a>
5065
</div>
5166
</div>
5267
);

app/(landing)/hackathons/[slug]/components/tabs/contents/winners/TopWinnerCard.tsx

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Trophy } from 'lucide-react';
44
import Image from 'next/image';
55
import { SubmissionCardProps } from '@/types/hackathon';
66
import BasicAvatar from '@/components/avatars/BasicAvatar';
7+
import { BoundlessButton } from '@/components/buttons/BoundlessButton';
78

89
interface TopWinnerCardProps {
910
winner: HackathonWinner;
@@ -12,6 +13,7 @@ interface TopWinnerCardProps {
1213

1314
export const TopWinnerCard = ({ winner, submission }: TopWinnerCardProps) => {
1415
const bannerUrl = winner?.logo || '/images/default-project-banner.png'; // Fallback to logo or default
16+
const projectUrl = `/projects/${winner.submissionId}?type=submission`;
1517

1618
return (
1719
<div className='relative w-full overflow-hidden rounded-2xl border border-white/5 bg-[#0A0A0A] p-6 transition-all hover:border-white/10'>
@@ -63,36 +65,29 @@ export const TopWinnerCard = ({ winner, submission }: TopWinnerCardProps) => {
6365
'No description provided for this project.'}
6466
</p>
6567

66-
<div className='mt-auto flex items-center gap-4'>
67-
<div className='flex -space-x-3'>
68-
{winner.participants.map((participant, idx) => (
69-
<BasicAvatar
70-
key={idx}
71-
image={participant.avatar}
72-
name={'Participant'}
73-
username={participant.username}
74-
/>
75-
// <Avatar
76-
// key={idx}
77-
// className='h-10 w-10 border-2 border-[#0A0A0A]'
78-
// >
79-
// <AvatarImage src={participant.avatar} />
80-
// <AvatarFallback className='bg-white/5 text-xs font-bold text-white/60'>
81-
// {participant.username.slice(0, 2).toUpperCase()}
82-
// </AvatarFallback>
83-
// </Avatar>
84-
))}
68+
<div className='mt-auto flex items-center justify-between gap-4'>
69+
<div className='flex items-center gap-4'>
70+
<div className='flex -space-x-3'>
71+
{winner.participants.map((participant, idx) => (
72+
<BasicAvatar
73+
key={idx}
74+
image={participant.avatar}
75+
name={'Participant'}
76+
username={participant.username}
77+
/>
78+
))}
79+
</div>
8580
</div>
86-
{/* <div className='flex flex-col'>
87-
<span className='text-[10px] font-bold tracking-wider text-white/40 uppercase'>
88-
{winner.teamName ? 'Team members' : 'Participant'}
89-
</span>
90-
<span className='text-xs font-medium text-white/80'>
91-
{winner.teamName
92-
? winner.teamName
93-
: winner.participants[0]?.username}
94-
</span>
95-
</div> */}
81+
82+
<a href={projectUrl} target='_blank' rel='noopener noreferrer'>
83+
<BoundlessButton
84+
variant='outline'
85+
size='sm'
86+
className='hover:bg-primary h-9 rounded-xl border-white/5 bg-white/5 px-4 text-xs font-bold transition-all hover:text-black'
87+
>
88+
View Project
89+
</BoundlessButton>
90+
</a>
9691
</div>
9792
</div>
9893
</div>

0 commit comments

Comments
 (0)