"use client"; import { useState, useEffect } from 'react'; import Image from 'next/image'; import { Play, SkipBack, SkipForward, ChevronLeft, ChevronRight } from 'lucide-react'; import LoadingSpinner from '../objects/LoadingSpinner'; interface Song { albumArt: string; name: string; artist: string; duration: string; link?: string; } interface Period { timePeriod: string; songs: Song[]; } export default function Home() { const [timePeriod, setTimePeriod] = useState('Summer 2024'); const [songs, setSongs] = useState([]); const [currentIndex, setCurrentIndex] = useState(0); const [isLoading, setIsLoading] = useState(true); useEffect(() => { setIsLoading(true); fetch('/data/music.json') .then(response => response.json()) .then((data: Period[]) => { const selectedPeriod = data.find((period) => period.timePeriod === timePeriod); const songsList = selectedPeriod ? selectedPeriod.songs : []; setSongs(songsList); setCurrentIndex(Math.floor(Math.random() * songsList.length)); setIsLoading(false); }) .catch(error => { console.error('Error fetching music data:', error); setIsLoading(false); }); }, [timePeriod]); const handleNext = () => { setCurrentIndex((currentIndex + 1) % songs.length); }; const handlePrevious = () => { setCurrentIndex((currentIndex - 1 + songs.length) % songs.length); }; return (
); }