import Link from 'next/link'; import { ChevronRight } from 'lucide-react'; import type { Metadata } from 'next'; const API_URL = process.env.NEXT_PUBLIC_API_URL || 'https://api.canina.ir'; async function getWikiTerm(key: string) { try { const res = await fetch(`${API_URL}/api/wiki/${encodeURIComponent(key)}`, { next: { revalidate: 60 } }); if (!res.ok) throw new Error('Failed to fetch wiki term'); return res.json(); } catch (error) { console.error(error); return null; } } import { getSeoConfig, formatPageTitle } from "../../../lib/seo"; export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise { const { slug } = await params; const term = await getWikiTerm(slug); const config = await getSeoConfig(); if (!term) { return { title: formatPageTitle('ترکیب علمی یافت نشد', config.brandNameFa, config.titleSeparator, config.titlePosition), }; } const rawTitle = term.metaTitle || `ترکیب علمی ${term.term}`; const title = formatPageTitle(rawTitle, config.brandNameFa, config.titleSeparator, config.titlePosition, false); const description = term.metaDescription || term.definition?.replace(/<[^>]+>/g, '').substring(0, 155).trim() || config.defaultMetaDescription; const canonicalUrl = `${config.canonicalBaseUrl.replace(/\/$/, '')}/wiki/${slug}`; return { title, description, alternates: { canonical: canonicalUrl, }, openGraph: { title, description, url: canonicalUrl, siteName: config.brandNameFa, type: "article", } }; } export default async function WikiTermPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; const term = await getWikiTerm(slug); if (!term) { return (

ترکیب علمی یافت نشد

بازگشت به دانشنامه
); } return (
بازگشت به دانشنامه

{term.term}

); }