"use client"; import { useState } from "react"; import { Search as SearchIcon, Play, Pause, X } from "lucide-react"; import { usePlayer } from "@/context/PlayerContext"; interface Track { title: string; artist: string; album: string; cover_url: string; id: string; } import AddToPlaylistModal from "@/components/AddToPlaylistModal"; import { Plus } from "lucide-react"; export default function SearchPage() { const [query, setQuery] = useState(""); const [results, setResults] = useState([]); const [isSearching, setIsSearching] = useState(false); const { playTrack, currentTrack, isPlaying } = usePlayer(); // Modal State const [isAddToPlaylistOpen, setIsAddToPlaylistOpen] = useState(false); const [trackToAdd, setTrackToAdd] = useState(null); const handleSearch = async (e: React.FormEvent) => { e.preventDefault(); if (!query.trim()) return; setIsSearching(true); try { const apiUrl = process.env.NEXT_PUBLIC_API_URL || ''; const res = await fetch(`${apiUrl}/api/search?query=${encodeURIComponent(query)}`); const data = await res.json(); setResults(data.tracks || []); } catch (error) { console.error("Search failed:", error); } finally { setIsSearching(false); } }; const handlePlay = (track: Track) => { // Create a temporary queue from the search results playTrack(track, results); }; const openAddToPlaylist = (e: React.MouseEvent, track: Track) => { e.stopPropagation(); setTrackToAdd(track); setIsAddToPlaylistOpen(true); }; return (
{/* Search Input */}
setQuery(e.target.value)} placeholder="What do you want to play?" className="w-full h-12 rounded-full pl-10 pr-4 bg-white text-black font-medium focus:outline-none focus:ring-2 focus:ring-white placeholder-gray-500" /> {query && ( )}
{/* Results */}
{isSearching ? (
Searching...
) : results.length > 0 ? ( <>

Top Results

{results.map((track, i) => { const isCurrent = currentTrack?.id === track.id; return (
handlePlay(track)} className="bg-[#181818] p-4 rounded-md hover:bg-[#282828] transition cursor-pointer group relative">
{track.title}
{isCurrent && isPlaying ? ( ) : ( )}

{track.title}

{track.artist}

{/* Add to Playlist Button (Absolute Top Right of Card) */}
); })}
) : (

Play what you love

Search for artists, songs, podcasts, and more.

)}
setIsAddToPlaylistOpen(false)} />
); }