import type { Metadata } from "next"; import Link from "next/link"; import SlotImage from "@/components/SlotImage"; import SlotLink from "@/components/SlotLink"; import { blogDate, blogHref, blogImage, fetchBlogs, getLocalBlogPosts } from "@/lib/blog"; import { pageMetadata } from "@/lib/seo"; import { fetchStaticImageSlots, overlaySlotImages, pickSlot } from "@/lib/static-images"; export const revalidate = 60; export async function generateMetadata({ searchParams, }: { searchParams: Promise<{ page?: string }>; }): Promise { const { page: pageParam } = await searchParams; const page = Math.max(1, Number(pageParam) || 1); return pageMetadata({ title: page > 1 ? `وبلاگ — صفحه ${page}` : "وبلاگ", description: "آخرین اخبار و مقالات فنی صنایع سیم و کابل کمان.", path: page > 1 ? `/blog?page=${page}` : "/blog", image: "/images/samples/production-line.avif", }); } export default async function BlogPage({ searchParams, }: { searchParams: Promise<{ page?: string }>; }) { const { page: pageParam } = await searchParams; const page = Math.max(1, Number(pageParam) || 1); const [result, slots] = await Promise.all([fetchBlogs({ page, pageSize: 12 }), fetchStaticImageSlots("blog")]); const hero = overlaySlotImages( pickSlot(slots, "blog-hero"), [{ id: "blog-hero", image: "/images/samples/production-line.avif", title: "وبلاگ" }], "blog-hero", ); const usingApi = result.items.length > 0; const posts = usingApi ? result.items : page === 1 ? getLocalBlogPosts() : []; const pageCount = usingApi ? Math.max(1, Math.ceil((result.total || result.items.length) / (result.pageSize || 12))) : 1; return ( <>

وبلاگ

Blog

{posts.length === 0 ? (

مقاله‌ای برای نمایش وجود ندارد.

) : (
{posts.map((post) => (
{blogDate(post) ?

{blogDate(post)}

: null}

{post.title}

{post.abstract ?

{post.abstract}

: null} ادامه مطلب
))}
)} {pageCount > 1 ? ( ) : null}
); }