끝으로 search 기능을 탑재했다
상품을 검색하면 그 상품에 대한 detail page가 출력되는 방식이다


{searchQuery && (
<div className="absolute left-0 top-12 w-full mx-auto max-h-96 bg-gray-200 rounded-lg overflow-y-scroll cursor-pointer text-black">
{filteredProducts.length > 0 ? (
<>
{searchQuery &&
filteredProducts.map((item: StoreProduct) => (
<Link
key={item._id}
className="w-full border-b-[1px] border-b-gray-400 flex items-center gap-4"
href={{
pathname: `${item._id}`,
query: {
_id: item._id,
brand: item.brand,
category: item.category,
description: item.description,
image: item.image,
isNew: item.isNew,
oldPrice: item.oldPrice,
price: item.price,
title: item.title,
},
}}
onClick={() => setSearchQuery("")}
>
<SearchProducts item={item} />
</Link>
))}
</>
) : (
<div className="bg-gray-50 flex items-center justify-center py-10 rounded-lg shadow-lg">
<p className="text-xl font-semibold animate-bounce">
Nothing is matches with your search keywords. Please try
again!
</p>
</div>
)}
</div>
)}

<input
onChange={handleSearch}
value={searchQuery}
className="w-full h-full rounded-md px-2 placeholder:text-sm text-base text-black border-[3px] border-transparent outline-none focus-visible:border-amazon_yellow"
type="text"
placeholder="Search next_amazon_yt products"
/>

// Search area
const [searchQuery, setSearchQuery] = useState("");
const [filteredProducts, setFilteredProducts] = useState([]);
const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {
setSearchQuery(e.target.value);
};
useEffect(() => {
const filtered = favoriteData.filter((item: StoreProduct) =>
item.title.toLocaleLowerCase().includes(searchQuery.toLowerCase())
);
setFilteredProducts(filtered);
}, [searchQuery]);