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 { getSeries } from '@/lib/engine'; import { Sparkles, Plug, Zap, Layers, ArrowLeft } from 'lucide-react'; const ICONS = { Sparkles, Plug, Zap, Layers }; const COLORS = { emerald: { bg: 'rgb(16 185 129 / 0.1)', text: '#10b981' }, teal: { bg: 'rgb(20 184 166 / 0.1)', text: '#14b8a6' }, amber: { bg: 'rgb(245 158 11 / 0.1)', text: '#f59e0b' }, indigo: { bg: 'rgb(99 102 241 / 0.1)', text: '#6366f1' }, }; export const dynamic = 'force-dynamic'; export async function generateMetadata({ params }) { const { slug } = await params; const s = await getSeries(slug); if (!s) return { title: 'Серия не найдена' }; return { title: s.title, description: s.intro, }; } export default async function SeriesPage({ params }) { const { slug } = await params; const s = await getSeries(slug); if (!s) notFound(); const Icon = ICONS[s.icon] || Layers; const color = COLORS[s.color] || COLORS.emerald; return ( <>
Все статьи
Серия

{s.title}

{s.intro && (

{s.intro}

)}
{s.articles?.length || 0} {(s.articles?.length || 0) === 1 ? 'материал' : 'материалов'} в серии
{s.articles?.length > 0 ? (
{s.articles.map(a => )}
) : (
Скоро здесь появятся статьи. Серия только формируется.
)}