1+ import React from 'react' ;
2+ import { Button } from '@/components/ui/button' ;
3+ import { Card , CardContent , CardDescription , CardHeader , CardTitle } from '@/components/ui/card' ;
4+ import { ExternalLink , Users , Gamepad2 , Leaf , DollarSign , Music , Shield , Zap } from 'lucide-react' ;
5+
6+ interface PlatformLink {
7+ name : string ;
8+ url ?: string ;
9+ icon ?: string ;
10+ description ?: string ;
11+ }
12+
13+ interface ClubSection {
14+ title : string ;
15+ description : string ;
16+ platforms : PlatformLink [ ] ;
17+ color : string ;
18+ icon : React . ReactNode ;
19+ }
20+
21+ interface FeaturedClubProps {
22+ name : string ;
23+ description : string ;
24+ members : number ;
25+ icon : React . ReactNode ;
26+ category : string ;
27+ categoryColor : string ;
28+ bgColor : string ;
29+ sections ?: ClubSection [ ] ;
30+ }
31+
32+ const FeaturedClubCard = ( { club } : { club : FeaturedClubProps } ) => {
33+ if ( ! club . sections ) {
34+ // Render simple card for clubs without sections
35+ return (
36+ < div
37+ className = { `${ club . bgColor } p-6 rounded-xl backdrop-blur-md overflow-hidden relative group hover:transform hover:scale-[1.02] transition-all duration-300 border border-alien-gold/20 hover:border-alien-gold/40` }
38+ >
39+ < div className = "absolute inset-0 bg-gradient-to-b from-transparent via-alien-space-dark/60 to-alien-space-dark/90 z-0" > </ div >
40+
41+ < div className = "relative z-10" >
42+ < div className = "flex justify-between items-start mb-6" >
43+ < div className = "p-4 bg-alien-space-dark/80 rounded-xl backdrop-blur-md border border-alien-gold/30 group-hover:border-alien-gold/50 transition-all duration-300" >
44+ { club . icon }
45+ </ div >
46+ < span
47+ className = { `px-3 py-1 text-xs ${ club . categoryColor } rounded-full font-medium backdrop-blur-sm` }
48+ >
49+ { club . category }
50+ </ span >
51+ </ div >
52+
53+ < h3 className = "text-xl font-bold text-alien-gold mb-3 font-nasalization group-hover:text-alien-gold-light transition-colors" >
54+ { club . name }
55+ </ h3 >
56+ < p className = "text-gray-200 mb-6 text-sm font-[Exo] leading-relaxed" >
57+ { club . description }
58+ </ p >
59+
60+ < div className = "flex justify-between items-center" >
61+ < div className = "flex items-center bg-alien-space-dark/60 px-3 py-2 rounded-full backdrop-blur-sm" >
62+ < Users className = "h-4 w-4 text-alien-green mr-2" />
63+ < span className = "text-sm text-alien-green font-medium" >
64+ { club . members . toLocaleString ( ) } members
65+ </ span >
66+ </ div >
67+ < Button
68+ variant = "outline"
69+ className = "border-alien-gold/50 text-alien-gold hover:bg-alien-gold/20 hover:border-alien-gold text-sm px-4 py-2 h-auto font-[Exo] font-medium backdrop-blur-sm"
70+ >
71+ Join Club
72+ </ Button >
73+ </ div >
74+ </ div >
75+ </ div >
76+ ) ;
77+ }
78+
79+ // Render advanced card with sections
80+ return (
81+ < div className = { `${ club . bgColor } p-6 rounded-xl backdrop-blur-md overflow-hidden relative group transition-all duration-300 border border-alien-gold/20 hover:border-alien-gold/40` } >
82+ < div className = "absolute inset-0 bg-gradient-to-b from-transparent via-alien-space-dark/60 to-alien-space-dark/90 z-0" > </ div >
83+
84+ < div className = "relative z-10" >
85+ { /* Header */ }
86+ < div className = "flex justify-between items-start mb-6" >
87+ < div className = "p-4 bg-alien-space-dark/80 rounded-xl backdrop-blur-md border border-alien-gold/30 group-hover:border-alien-gold/50 transition-all duration-300" >
88+ { club . icon }
89+ </ div >
90+ < span className = { `px-3 py-1 text-xs ${ club . categoryColor } rounded-full font-medium backdrop-blur-sm` } >
91+ { club . category }
92+ </ span >
93+ </ div >
94+
95+ < h3 className = "text-xl font-bold text-alien-gold mb-3 font-nasalization group-hover:text-alien-gold-light transition-colors" >
96+ { club . name }
97+ </ h3 >
98+ < p className = "text-gray-200 mb-6 text-sm font-[Exo] leading-relaxed" >
99+ { club . description }
100+ </ p >
101+
102+ { /* Sections */ }
103+ < div className = "space-y-4 mb-6" >
104+ { club . sections . map ( ( section , index ) => (
105+ < Card key = { index } className = "bg-alien-space-dark/60 border-alien-gold/20 backdrop-blur-sm" >
106+ < CardHeader className = "pb-3" >
107+ < CardTitle className = "flex items-center text-alien-gold text-sm font-nasalization" >
108+ { section . icon }
109+ < span className = "ml-2" > { section . title } </ span >
110+ </ CardTitle >
111+ < CardDescription className = "text-xs text-gray-300 font-[Exo]" >
112+ { section . description }
113+ </ CardDescription >
114+ </ CardHeader >
115+ < CardContent className = "pt-0" >
116+ < div className = "grid grid-cols-2 gap-2" >
117+ { section . platforms . map ( ( platform , pIndex ) => (
118+ < Button
119+ key = { pIndex }
120+ variant = "ghost"
121+ size = "sm"
122+ className = { `${ section . color } text-white hover:bg-white/20 text-xs h-8 justify-start font-[Exo]` }
123+ onClick = { ( ) => platform . url && window . open ( platform . url , '_blank' ) }
124+ disabled = { ! platform . url }
125+ >
126+ < ExternalLink className = "h-3 w-3 mr-1" />
127+ { platform . name }
128+ </ Button >
129+ ) ) }
130+ </ div >
131+ </ CardContent >
132+ </ Card >
133+ ) ) }
134+ </ div >
135+
136+ { /* Footer */ }
137+ < div className = "flex justify-between items-center" >
138+ < div className = "flex items-center bg-alien-space-dark/60 px-3 py-2 rounded-full backdrop-blur-sm" >
139+ < Users className = "h-4 w-4 text-alien-green mr-2" />
140+ < span className = "text-sm text-alien-green font-medium" >
141+ { club . members . toLocaleString ( ) } members
142+ </ span >
143+ </ div >
144+ < Button
145+ variant = "outline"
146+ className = "border-alien-gold/50 text-alien-gold hover:bg-alien-gold/20 hover:border-alien-gold text-sm px-4 py-2 h-auto font-[Exo] font-medium backdrop-blur-sm"
147+ >
148+ Join Club
149+ </ Button >
150+ </ div >
151+ </ div >
152+ </ div >
153+ ) ;
154+ } ;
155+
156+ export default FeaturedClubCard ;
0 commit comments