@@ -123,12 +123,36 @@ const FeaturedClubCard = ({
123123 { /* Special handling for EcoFlow product carousel */ }
124124 { club . name === 'Δ EcoFlow' && section . title === 'Eco Products Catalog' ? < div className = "mt-4" >
125125 < EcoProductCarousel />
126- </ div > : < div className = "flex flex-wrap gap-2" >
127- { section . platforms . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) . map ( ( platform , pIndex ) => < Button key = { pIndex } variant = "ghost" size = "sm" className = { `${ section . color } text-white hover:bg-white/20 text-xs h-auto py-2 justify-start font-[Exo]` } onClick = { ( ) => platform . url && window . open ( platform . url , '_blank' ) } disabled = { ! platform . url } >
128- { platform . icon && < img src = { platform . icon } alt = { platform . name } className = "h-4 w-4 mr-2 flex-shrink-0 rounded" /> }
129- { ! platform . icon && < ExternalLink className = "h-4 w-4 mr-2 flex-shrink-0" /> }
130- < span className = "truncate text-left" > { platform . name } </ span >
131- </ Button > ) }
126+ </ div > : < div className = "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3" >
127+ { section . platforms . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) . map ( ( platform , pIndex ) => < div key = { pIndex } onClick = { ( ) => platform . url && window . open ( platform . url , '_blank' ) } className = { `${ section . color } rounded-lg p-4 hover:bg-white/20 transition-all duration-300 cursor-pointer border border-white/10 hover:border-white/30 hover:scale-105 ${ ! platform . url && 'opacity-50 cursor-not-allowed' } ` } >
128+ { /* Icon container - fixed size */ }
129+ < div className = "w-12 h-12 mb-3 flex items-center justify-center bg-white/10 rounded-lg overflow-hidden" >
130+ { platform . icon ? (
131+ < img
132+ src = { platform . icon }
133+ alt = { platform . name }
134+ className = "w-8 h-8 object-contain"
135+ onError = { ( e ) => {
136+ const target = e . target as HTMLImageElement ;
137+ target . style . display = 'none' ;
138+ const fallback = target . nextElementSibling as HTMLElement ;
139+ if ( fallback ) fallback . classList . remove ( 'hidden' ) ;
140+ } }
141+ />
142+ ) : null }
143+ < ExternalLink className = { `h-6 w-6 text-white/70 ${ platform . icon ? 'hidden' : '' } ` } />
144+ </ div >
145+
146+ { /* Line 1: Name */ }
147+ < h4 className = "text-white font-semibold text-sm font-[Exo] mb-1 line-clamp-1" >
148+ { platform . name }
149+ </ h4 >
150+
151+ { /* Line 2: Brief description */ }
152+ < p className = "text-white/70 text-xs font-[Exo] line-clamp-2 leading-relaxed min-h-[2.5rem]" >
153+ { platform . description || 'Crypto platform partner' }
154+ </ p >
155+ </ div > ) }
132156 </ div > }
133157 </ div > ) }
134158 </ div >
0 commit comments