diff --git a/src/components/TrendingTracks/TrendingTracks.jsx b/src/components/TrendingTracks/TrendingTracks.jsx new file mode 100644 index 0000000..bde2d38 --- /dev/null +++ b/src/components/TrendingTracks/TrendingTracks.jsx @@ -0,0 +1,93 @@ +import { useRef, useEffect } from 'react' +import { motion, useInView } from 'framer-motion' +import { gsap } from 'gsap' +import { ScrollTrigger } from 'gsap/ScrollTrigger' +import TrackRow from './TrackRow' +import { tracks } from '../../data/mockData' + +gsap.registerPlugin(ScrollTrigger) + +export default function TrendingTracks({ currentTrack, onPlay }) { + const sectionRef = useRef() + const ref = useRef() + const inView = useInView(ref, { once: true, margin: '-80px' }) + + useEffect(() => { + const ctx = gsap.context(() => { + gsap.from('.track-item', { + x: -24, + opacity: 0, + stagger: 0.06, + ease: 'power3.out', + scrollTrigger: { + trigger: sectionRef.current, + start: 'top 78%', + }, + }) + }, sectionRef) + return () => ctx.revert() + }, []) + + return ( +
+
+ +
+ +
+

Hot Right Now

+

+ Trending Tracks +

+
+
+

Updated

+

Weekly

+
+
+ + {/* Column headers */} +
+ # + + Title + Plays + Time + +
+ +
+ {tracks.map((track, i) => ( +
+ +
+ ))} +
+ + {/* Show more */} + + + Show More Tracks + + +
+
+ ) +}