// "use client"; // import { useState } from "react"; // import SearchBar from "./components/SearchBar"; // import { searchModels, searchParts } from "../lib/search/search"; // export default function HomePage() { // const [results, setResults] = useState([]); // function handleSearch(query) { // const models = searchModels(query); // const parts = searchParts(query); // setResults([...models, ...parts]); // } // return ( //
//

RC Compatibility Explorer

// //
// {results.map((item) => { // const isModel = !!item.categories; // const link = isModel ? `/model/${item.id}` : `/part/${item.id}`; // return ( // // {item.name} //
{isModel ? "Model" : "Part"}
//
// ); // })} //
//
// ); // } "use client"; import { useState } from "react"; import SearchBar from "./components/SearchBar"; import SearchResultCard from "./components/SearchResultCard"; import SearchSkeletonCard from "./components/SearchSkeletonCard"; import { searchModels, searchParts } from "@/lib/search/search"; export default function HomePage() { const [results, setResults] = useState(null); // null = loading phase const [loading, setLoading] = useState(false); async function handleSearch(query) { if (!query) { setResults([]); return; } setLoading(true); setResults(null); // Simulate real network delay for proper skeleton visuals setTimeout(() => { const models = searchModels(query); const parts = searchParts(query); setResults([...models, ...parts]); setLoading(false); }, 300); } return (
{/* Title */}

RC Compatibility Explorer

{/* Search Field */} {/* Skeleton Loader */} {loading && (
{Array.from({ length: 6 }).map((_, i) => ( ))}
)} {/* Results */} {!loading && results?.length > 0 && ( <>

Search Results

{results.map((item) => ( ))}
)} {/* No Results */} {!loading && results?.length === 0 && (

No matching models or parts found.

)}
); }