'use client'; import { useState, useEffect } from 'react'; import { useTranslations } from 'next-intl'; interface Song { id: number; title: string; artist: string; } interface GuessInputProps { onGuess: (song: Song) => void; disabled: boolean; } export default function GuessInput({ onGuess, disabled }: GuessInputProps) { const t = useTranslations('Game'); const [query, setQuery] = useState(''); const [songs, setSongs] = useState([]); const [filteredSongs, setFilteredSongs] = useState([]); const [isOpen, setIsOpen] = useState(false); useEffect(() => { fetch('/api/songs') .then(res => res.json()) .then(data => setSongs(data)); }, []); useEffect(() => { if (query.length > 1) { const lower = query.toLowerCase(); const filtered = songs.filter(s => s.title.toLowerCase().includes(lower) || s.artist.toLowerCase().includes(lower) ); setFilteredSongs(filtered); setIsOpen(true); } else { setFilteredSongs([]); setIsOpen(false); } }, [query, songs]); const handleSelect = (song: Song) => { onGuess(song); setQuery(''); setIsOpen(false); }; return (
setQuery(e.target.value)} disabled={disabled} placeholder={disabled ? t('gameOverPlaceholder') : t('knowItSearch')} className="guess-input" /> {isOpen && filteredSongs.length > 0 && (
    {filteredSongs.map(song => (
  • handleSelect(song)} className="suggestion-item" >
    {song.title}
    {song.artist}
  • ))}
)}
); }