@@ -3,57 +3,53 @@ import { Link } from 'react-router-dom';
33import { BsPlayCircleFill } from 'react-icons/bs' ;
44import { BiLogoTypescript , BiLogoJavascript } from 'react-icons/bi' ;
55import PlayShare from './PlayShare.jsx' ;
6-
7- import Shimmer from 'react-shimmer-effect' ;
86import Like from 'common/components/Like/Like' ;
97import userImage from 'images/user.png' ;
108
119function PlayCard ( { play, cover, likeObject } ) {
1210 return (
1311 < Link to = { `/plays/${ encodeURI ( play . github . toLowerCase ( ) ) } /${ play . slug } ` } >
14- < div className = "play-card-container" >
15- < div className = "play-thumb-container" >
16- < Shimmer >
17- < img alt = "" className = "play-card-thumb-img" src = { cover } />
18- </ Shimmer >
19- < BsPlayCircleFill className = "play-icon" color = "white" size = { 80 } />
12+ < div className = "glass-card max-w-sm overflow-hidden" >
13+
14+ { /* Thumbnail */ }
15+ < div className = "relative group" >
16+ < img
17+ src = { cover }
18+ alt = { play . name }
19+ className = "min-w-full h-44 object-cover rounded-t-2xl transform group-hover:scale-105 transition duration-500"
20+ />
21+ < BsPlayCircleFill className = "absolute inset-0 m-auto text-gray-700 opacity-80 group-hover:opacity-100 transition" size = { 70 } />
2022 </ div >
2123
22- { /* <div className="border" /> */ }
23- < div className = "card-header" > { play . name } </ div >
24- { play . user && (
25- < div className = "author" >
26- < img
27- alt = "avatar"
28- className = "rounded-full border border-zink"
29- height = "25px"
30- loading = "lazy"
31- src = {
32- play ?. user . avatarUrl
33- ? play ?. user . avatarUrl . length
34- ? play ?. user . avatarUrl
35- : userImage
36- : userImage
37- }
38- width = "25px"
39- />
40- < div className = "author-name" > { play ?. user . displayName } </ div >
41- </ div >
42- ) }
43- < div className = "play-actions mt-4" >
44- < div className = "like-container" >
45- < Like likeObj = { likeObject ( ) } onLikeClick = { null } />
46- < div style = { { display : 'flex' , alignItems : 'center' } } >
47- < PlayShare
48- cover = { cover }
49- link = { `/plays/${ encodeURI ( play . github . toLowerCase ( ) ) } /${ play . slug } ` }
24+ { /* Content */ }
25+ < div className = "p-4 text-center" >
26+ < h3 className = "text-xl font-semibold text-gray-700 drop-shadow-lg" >
27+ { play . name }
28+ </ h3 >
29+
30+ { play . user && (
31+ < div className = "flex items-center justify-center gap-2 mt-2 text-gray-700 text-sm" >
32+ < img
33+ className = "w-8 h-8 rounded-full border border-white/40 shadow-md"
34+ src = { play . user . avatarUrl ?. length ? play . user . avatarUrl : userImage }
35+ alt = "avatar"
5036 />
51- { play . language === 'ts' ? (
52- < BiLogoTypescript className = "lang-icon" color = "#007acc" size = { 25 } />
53- ) : (
54- < BiLogoJavascript className = "lang-icon" color = "#F0DB4F" size = { 25 } />
55- ) }
37+ < span > { play . user . displayName } </ span >
5638 </ div >
39+ ) }
40+
41+ { /* Actions */ }
42+ < div className = "flex justify-between items-center mt-4 px-2 text-gray-700 " >
43+ < Like likeObj = { likeObject ( ) } onLikeClick = { null } />
44+ < PlayShare
45+ cover = { cover }
46+ link = { `/plays/${ encodeURI ( play . github . toLowerCase ( ) ) } /${ play . slug } ` }
47+ />
48+ { play . language === "ts" ? (
49+ < BiLogoTypescript className = "text-blue-400" size = { 22 } />
50+ ) : (
51+ < BiLogoJavascript className = "text-yellow-400" size = { 22 } />
52+ ) }
5753 </ div >
5854 </ div >
5955 </ div >
0 commit comments