diff --git a/src/components/TrendingTracks/TrackRow.jsx b/src/components/TrendingTracks/TrackRow.jsx new file mode 100644 index 0000000..50bc5b3 --- /dev/null +++ b/src/components/TrendingTracks/TrackRow.jsx @@ -0,0 +1,79 @@ +import { useState } from 'react' +import { motion } from 'framer-motion' + +export default function TrackRow({ track, index, isActive, onPlay }) { + const [hovered, setHovered] = useState(false) + + return ( + setHovered(true)} + onMouseLeave={() => setHovered(false)} + onClick={() => onPlay(track)} + animate={{ x: hovered ? 6 : 0, backgroundColor: hovered ? 'rgba(201,168,76,0.035)' : 'transparent' }} + transition={{ duration: 0.2 }} + className="flex items-center gap-4 px-4 py-3.5 rounded-xl cursor-pointer" + style={isActive ? { background: 'rgba(201,168,76,0.06)', border: '1px solid rgba(201,168,76,0.18)' } + : { border: '1px solid transparent' }} + > + {/* Rank / eq bars */} +
+ {isActive ? ( +
+ {[1,2,3].map(i => ( + + ))} +
+ ) : ( + {index + 1} + )} +
+ + {/* Cover */} +
+ {track.title} + {hovered && !isActive && ( + + + + + + )} +
+ + {/* Title & artist */} +
+

{track.title}

+

{track.artist} ยท {track.album}

+
+ + {/* Plays */} + {track.plays} + + {/* Duration */} + {track.duration} + + {/* Action button */} + + + + + +
+ ) +}