'use client'; import { Suspense, useMemo } from 'react'; import { SearchForm } from '@/components/search/SearchForm'; import { NoResults } from '@/components/search/NoResults'; import { PopularFeatures } from '@/components/home/PopularFeatures'; import { WatchHistorySidebar } from '@/components/history/WatchHistorySidebar'; import { FavoritesSidebar } from '@/components/favorites/FavoritesSidebar'; import { Navbar } from '@/components/layout/Navbar'; import { SearchResults } from '@/components/home/SearchResults'; import { useHomePage } from '@/lib/hooks/useHomePage'; import { useLatencyPing } from '@/lib/hooks/useLatencyPing'; function HomePage() { const { query, hasSearched, loading, results, availableSources, completedSources, totalSources, handleSearch, handleReset, } = useHomePage(); // Real-time latency pinging const sourceUrls = useMemo(() => availableSources.map(s => ({ id: s.id, baseUrl: s.id })), // Using id as baseUrl if not available elsewhere [availableSources] ); const { latencies } = useLatencyPing({ sourceUrls, enabled: hasSearched && results.length > 0, }); return (
{/* Glass Navbar */} {/* Search Form - Separate from navbar */}
{/* Main Content */}
{/* Results Section */} {(results.length >= 1 || (!loading && results.length > 0)) && ( )} {/* Popular Features - Homepage */} {!loading && !hasSearched && } {/* No Results */} {!loading && hasSearched && results.length === 0 && ( )}
{/* Favorites Sidebar - Left */} {/* Watch History Sidebar - Right */}
); } export default function Home() { return (
}>
); }