import { notFound } from 'next/navigation';
import Link from 'next/link';
import Header from '@/components/Header';
import Footer from '@/components/Footer';
import ArticleCard from '@/components/ArticleCard';
import { listCategories, getCategoryArticles } from '@/lib/engine';
export const dynamic = 'force-dynamic';
const COLOR_MAP = {
emerald: { bg: 'bg-emerald-50 dark:bg-emerald-950', text: 'text-emerald-700 dark:text-emerald-300', border: 'border-emerald-200 dark:border-emerald-800' },
red: { bg: 'bg-red-50 dark:bg-red-950', text: 'text-red-700 dark:text-red-300', border: 'border-red-200 dark:border-red-800' },
amber: { bg: 'bg-amber-50 dark:bg-amber-950', text: 'text-amber-700 dark:text-amber-300', border: 'border-amber-200 dark:border-amber-800' },
blue: { bg: 'bg-blue-50 dark:bg-blue-950', text: 'text-blue-700 dark:text-blue-300', border: 'border-blue-200 dark:border-blue-800' },
};
export async function generateMetadata({ params }) {
const { slug } = await params;
const cats = await listCategories();
const cat = cats.find(c => c.slug === slug);
if (!cat) return { title: 'Категория не найдена' };
return {
title: `${cat.name} — ZeroPost`,
description: cat.description,
alternates: { canonical: `https://zeropost.ru/category/${slug}` },
};
}
export default async function CategoryPage({ params }) {
const { slug } = await params;
const [cats, articles] = await Promise.all([
listCategories(),
getCategoryArticles(slug, { limit: 30 }),
]);
const cat = cats.find(c => c.slug === slug);
if (!cat) notFound();
const colors = COLOR_MAP[cat.color] || COLOR_MAP.emerald;
return (
<>
{cat.description}
Скоро здесь появятся материалы по теме «{cat.name}»