'use client'; import { useState } from 'react'; import { debounce } from 'lodash'; import { getImageUrl } from '@/lib/neoApi'; interface Movie { id: number; title: string; overview: string; release_date: string; vote_average: number; poster_path: string | null; genre_ids: number[]; } interface MovieCardProps { children: React.ReactNode; } const MovieCard: React.FC = ({ children }) => { return (
{children}
); }; interface PosterContainerProps { children: React.ReactNode; } const PosterContainer: React.FC = ({ children }) => { return (
{children}
); }; interface ImageProps extends React.ImgHTMLAttributes { src: string; alt: string; width: number; height: number; } const Image: React.FC = ({ src, alt, width, height, ...props }) => { return ( {alt} ); }; interface MovieInfoProps { children: React.ReactNode; } const MovieInfo: React.FC = ({ children }) => { return (
{children}
); }; interface TitleProps { children: React.ReactNode; } const Title: React.FC = ({ children }) => { return (

{children}

); }; interface YearProps { children: React.ReactNode; } const Year: React.FC = ({ children }) => { return (

{children}

); }; export default function MovieSearch() { const [searchQuery, setSearchQuery] = useState(''); const [searchResults, setSearchResults] = useState([]); const [loading, setLoading] = useState(false); const searchMovies = debounce(async (query: string) => { if (!query.trim()) { setSearchResults([]); return; } try { setLoading(true); const response = await fetch( `/api/movies/search?query=${encodeURIComponent(query)}` ); const data = await response.json(); setSearchResults(data.results || []); } catch (error) { console.error('Error searching movies:', error); } finally { setLoading(false); } }, 500); const handleSearch = (e: React.ChangeEvent) => { const query = e.target.value; setSearchQuery(query); searchMovies(query); }; return (
{loading && (
)}
{searchResults.length > 0 && (
{searchResults.map((movie) => ( {movie.title} {movie.title} {new Date(movie.release_date).getFullYear()}

{movie.vote_average.toFixed(1)} ⭐

{movie.overview}

))}
)}
); }