'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 { 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, handleCancelSearch, } = useHomePage(); // Real-time latency pinging const sourceUrls = useMemo(() => availableSources.flatMap((source) => source.baseUrl ? [{ id: source.id, baseUrl: source.baseUrl }] : [] ), [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 */}
); } export default function Home() { return (
}>
); }