import { JsonLd } from './JsonLd';
import { generateProductSchema, generateCategorizedProductSchema } from '@/lib/seo/schema/productSchema';
import { generateProductBreadcrumbs } from '@/lib/seo/schema/breadcrumbSchema';
import { Locale } from '@/lib/seo/keywords/types';
interface ProductSchemaProps {
baseUrl: string;
locale: Locale;
product: {
name: string;
slug: string;
description: string;
images: string[];
price: {
amount: number;
currency: string;
};
sku?: string;
availability?: 'InStock' | 'OutOfStock' | 'PreOrder';
};
category?: 'antiAging' | 'hydration' | 'glow' | 'sensitive' | 'natural' | 'organic';
rating?: {
value: number;
count: number;
};
includeBreadcrumbs?: boolean;
}
/**
* Product schema component
* Renders Product + BreadcrumbList JSON-LD schemas
*
* @param baseUrl - Site base URL
* @param locale - Current locale
* @param product - Product data object
* @param category - Optional category for enhanced targeting
* @param rating - Optional aggregate rating data
* @param includeBreadcrumbs - Whether to include breadcrumb schema (default: true)
*/
export function ProductSchema({
baseUrl,
locale,
product,
category,
rating,
includeBreadcrumbs = true,
}: ProductSchemaProps) {
// Generate product schema
const productSchema = category
? generateCategorizedProductSchema(baseUrl, locale, { ...product, rating }, category)
: generateProductSchema(baseUrl, locale, { ...product, rating });
// Generate breadcrumbs if requested
if (includeBreadcrumbs) {
const breadcrumbSchema = generateProductBreadcrumbs(
baseUrl,
locale,
product.name,
product.slug
);
return ;
}
return ;
}
export default ProductSchema;