import { notFound } from 'next/navigation';
import { MDXRemote } from 'next-mdx-remote/rsc';
import { getProductBySlug, getAllProducts } from '@/lib/mdx';
import ProductTechnicalData from '@/components/ProductTechnicalData';
import ProductTabs from '@/components/ProductTabs';
import RequestQuoteForm from '@/components/RequestQuoteForm';
import RelatedProducts from '@/components/RelatedProducts';
import Link from 'next/link';
import Image from 'next/image';
import { getTranslations } from 'next-intl/server';
import { Section, Container, Heading, Badge, Button } from '@/components/ui';
import Scribble from '@/components/Scribble';
interface ProductPageProps {
params: {
locale: string;
slug: string[];
};
}
const components = {
ProductTechnicalData,
ProductTabs,
p: (props: any) =>
,
h2: (props: any) => (
),
h3: (props: any) => ,
ul: (props: any) => ,
li: (props: any) => ,
table: (props: any) => (
),
th: (props: any) => | ,
td: (props: any) => | ,
hr: () =>
,
blockquote: (props: any) => (
),
};
export default async function ProductPage({ params }: ProductPageProps) {
const { locale, slug } = params;
const productSlug = slug[slug.length - 1];
const t = await getTranslations('Products');
// Check if it's a category page
const categories = ['low-voltage-cables', 'medium-voltage-cables', 'high-voltage-cables', 'solar-cables'];
if (categories.includes(productSlug)) {
const allProducts = await getAllProducts(locale);
const categoryKey = productSlug.replace(/-cables$/, '').replace(/-([a-z])/g, (g) => g[1].toUpperCase());
const categoryTitle = t(`categories.${categoryKey}.title`);
// Filter products for this category
const filteredProducts = allProducts.filter(p =>
p.frontmatter.categories.some(cat => cat.toLowerCase().replace(/\s+/g, '-') === productSlug)
);
return (
{categoryTitle}
{filteredProducts.map((product) => (
{product.frontmatter.images?.[0] && (
<>
{/* Subtle reflection/shadow effect */}
>
)}
{product.frontmatter.categories.map((cat, i) => (
{cat}
))}
{product.frontmatter.title}
{product.frontmatter.description}
))}
);
}
const product = await getProductBySlug(productSlug, locale);
if (!product) {
notFound();
}
const isFallback = (product.frontmatter as any).isFallback;
const categorySlug = slug[0];
const categoryKey = categorySlug.replace(/-cables$/, '').replace(/-([a-z])/g, (g) => g[1].toUpperCase());
const categoryTitle = t(`categories.${categoryKey}.title`);
return (
{/* Product Hero */}
{isFallback && (
{t('englishVersion')}
)}
{product.frontmatter.categories.map((cat, idx) => (
{cat}
))}
{product.frontmatter.title}
{/* Large Product Image Section */}
{product.frontmatter.images && product.frontmatter.images.length > 0 && (
{/* Subtle reflection/shadow effect */}
{product.frontmatter.images.length > 1 && (
{product.frontmatter.images.slice(0, 5).map((img, idx) => (
))}
)}
)}
{/* Main Content Area */}
{/* Related Products */}
{/* Request Quote Form */}
{/* Product Thumbnail for Sticky State */}
{product.frontmatter.images?.[0] && (
)}
{t('requestQuote')}
{t('requestQuoteDesc')}
);
}