"use client" import { useState, useMemo } from "react" import { useSearchParams } from "next/navigation" import { Search } from "lucide-react" import { Input } from "@/components/ui/input" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { NovelCard } from "@/components/novel-card" import { novels, genres, searchNovels } from "@/lib/data" export default function SearchPage() { const searchParams = useSearchParams() const initialQuery = searchParams.get("q") || "" const initialSort = searchParams.get("sort") || "latest" const [query, setQuery] = useState(initialQuery) const [sortBy, setSortBy] = useState(initialSort) const [genreFilter, setGenreFilter] = useState("all") const [statusFilter, setStatusFilter] = useState("all") const filteredNovels = useMemo(() => { let results = query.trim() ? searchNovels(query) : [...novels] if (genreFilter !== "all") { results = results.filter((n) => n.genres.includes(genreFilter)) } if (statusFilter !== "all") { results = results.filter((n) => n.status === statusFilter) } switch (sortBy) { case "popular": results.sort((a, b) => b.views - a.views) break case "rating": results.sort((a, b) => b.rating - a.rating) break case "name": results.sort((a, b) => a.title.localeCompare(b.title)) break case "latest": default: results.sort((a, b) => new Date(b.lastUpdated).getTime() - new Date(a.lastUpdated).getTime()) } return results }, [query, sortBy, genreFilter, statusFilter]) return (

Tìm Kiếm Truyện

{/* Search bar */}
setQuery(e.target.value)} />
{/* Filters */}
{/* Results */}

{filteredNovels.length} kết quả

{filteredNovels.length === 0 ? (

Không tìm thấy truyện

Thử tìm kiếm với từ khóa khác hoặc thay đổi bộ lọc.

) : (
{filteredNovels.map((novel) => ( ))}
)}
) }