import Link from "next/link" import { ArrowRight, BookOpen, Sparkles, Flame, Heart, Swords, Building2, Rocket, Crown, Laugh, Search, Shield } from "lucide-react" import { NovelCard } from "@/components/novel-card" import { prisma } from "@/lib/prisma" const iconMap: Record = { Sparkles: , Flame: , Heart: , Sword: , Building: , Rocket: , Crown: , Laugh: , Search: , Shield: , } export default async function HomePage() { const popularNovels = await prisma.novel.findMany({ take: 6, orderBy: { views: "desc" }, }) const latestNovels = await prisma.novel.findMany({ take: 6, orderBy: { updatedAt: "desc" }, }) const topRated = await prisma.novel.findMany({ take: 4, orderBy: { rating: "desc" }, }) const genres = await prisma.genre.findMany({ take: 8, }) // get the most popular as featured (can be empty if DB is new) const featured = popularNovels[0] return (
{/* Hero / Featured Novel */} {featured && (
Truyện Nổi Bật

{featured.title}

Tác giả: {featured.authorName}

{featured.description}

{featured.totalChapters} chương {featured.status} {featured.rating}
)} {/* Popular Novels */}

Truyện Hot

Xem tất cả
{popularNovels.length > 0 ? popularNovels.map((novel) => ( )) :

Chưa có truyện nào trong hệ thống.

}
{/* Latest Updated */}

Mới Cập Nhật

Xem tất cả
{latestNovels.length > 0 ? latestNovels.map((novel) => ( )) :

Chưa có truyện nào được cập nhật.

}
{/* Two columns: Top Rated + Genres */}
{/* Top Rated */}

Đánh Giá Cao

{topRated.length > 0 ? topRated.map((novel, idx) => ( {idx + 1}

{novel.title}

{novel.authorName} - Ch. {novel.totalChapters}

{novel.rating}
)) :

Chưa có đánh giá.

}
{/* Genres */}

Thể Loại

Xem tất cả
{genres.slice(0, 8).map((genre) => ( {genre.icon && iconMap[genre.icon] ? iconMap[genre.icon] : }

{genre.name}

{genre.description}

))}
) }