"use client"; import { Play, Pause } from "lucide-react"; import { useEffect, useState } from "react"; import { usePlayer } from "@/context/PlayerContext"; import Link from "next/link"; import { libraryService } from "@/services/library"; export default function Home() { const [timeOfDay, setTimeOfDay] = useState("Good evening"); const [browseData, setBrowseData] = useState>({}); useEffect(() => { const hour = new Date().getHours(); if (hour < 12) setTimeOfDay("Good morning"); else if (hour < 18) setTimeOfDay("Good afternoon"); else setTimeOfDay("Good evening"); // Fetch Browse Content libraryService.getBrowseContent() .then(data => setBrowseData(data)) .catch(err => console.error("Error fetching browse:", err)); }, []); // Use first item of first category as Hero const firstCategory = Object.keys(browseData)[0]; const heroPlaylist = firstCategory && browseData[firstCategory].length > 0 ? browseData[firstCategory][0] : null; return (
{/* Header / Greetings */}

{timeOfDay}

{/* Hero Section (First Playlist) */} {heroPlaylist && (
{heroPlaylist.title}

Playlist

{heroPlaylist.title}

{heroPlaylist.description}

)} {/* Made For You (Recommendations) */} {/* Recommended Albums */} {/* Render Categories */} {Object.entries(browseData).map(([category, playlists]) => (

{category}

{playlists.slice(0, 5).map((playlist) => (
{playlist.title}

{playlist.title}

{playlist.description}

))}
))}
); } function MadeForYouSection() { const { playHistory, playTrack } = usePlayer(); const [recommendations, setRecommendations] = useState([]); useEffect(() => { if (playHistory.length > 0) { const seed = playHistory[0]; // Last played libraryService.getRecommendations(seed.id) .then(tracks => setRecommendations(tracks)) .catch(err => console.error("Rec error:", err)); } }, [playHistory.length > 0 ? playHistory[0].id : null]); if (playHistory.length === 0 || recommendations.length === 0) return null; return (

Made For You

Based on your listening of {playHistory[0].title}

{recommendations.slice(0, 5).map((track, i) => (
playTrack(track, recommendations)} className="bg-[#181818] p-4 rounded-md hover:bg-[#282828] transition duration-300 group cursor-pointer relative h-full flex flex-col">
{track.title}

{track.title}

{track.artist}

))}
); } function RecommendedAlbumsSection() { const { playHistory } = usePlayer(); const [albums, setAlbums] = useState([]); useEffect(() => { if (playHistory.length > 0) { const seedArtist = playHistory[0].artist; // Last played artist if (!seedArtist) return; // Clean artist name (remove delimiters like commas if multiple) const primaryArtist = seedArtist.split(',')[0].trim(); libraryService.getRecommendedAlbums(primaryArtist) .then(data => { if (Array.isArray(data)) setAlbums(data); }) .catch(err => console.error("Album Rec error:", err)); } }, [playHistory.length > 0 ? playHistory[0].artist : null]); if (playHistory.length === 0 || albums.length === 0) return null; return (

Recommended Albums

{albums.slice(0, 5).map((album, i) => (
{album.title}

{album.title}

{album.description}

))}
); }