"use client" import { use, useState, useMemo } from "react" import Link from "next/link" import { ChevronLeft } from "lucide-react" import { getGenreBySlug, getNovelsByGenre } from "@/lib/data" import { NovelCard } from "@/components/novel-card" import { Button } from "@/components/ui/button" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { notFound } from "next/navigation" export default function GenreDetailPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = use(params) const genre = getGenreBySlug(slug) if (!genre) { notFound() } return } function GenreContent({ genreName, genreSlug, genreDescription }: { genreName: string; genreSlug: string; genreDescription: string }) { const [sortBy, setSortBy] = useState("latest") const allNovels = getNovelsByGenre(genreSlug) const sortedNovels = useMemo(() => { const sorted = [...allNovels] switch (sortBy) { case "popular": sorted.sort((a, b) => b.views - a.views) break case "rating": sorted.sort((a, b) => b.rating - a.rating) break case "latest": default: sorted.sort((a, b) => new Date(b.lastUpdated).getTime() - new Date(a.lastUpdated).getTime()) } return sorted }, [allNovels, sortBy]) return (
Thể Loại

{genreName}

{genreDescription}

{sortedNovels.length} truyện

{sortedNovels.length === 0 ? (

Chưa có truyện nào

Thể loại này chưa có truyện, hãy quay lại sau.

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