43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import React from 'react';
|
|
import { Helmet } from 'react-helmet-async';
|
|
|
|
interface SEOProps {
|
|
title?: string;
|
|
description?: string;
|
|
keywords?: string;
|
|
schema?: object;
|
|
}
|
|
|
|
export const SEO: React.FC<SEOProps> = ({
|
|
title = "DigiCraft",
|
|
description = "Automated Digital Product Architect & Visual DNA Suite",
|
|
keywords = "ai, etsy, digital products, automation, visuals",
|
|
schema
|
|
}) => {
|
|
return (
|
|
<Helmet>
|
|
{/* Standard Metadata */}
|
|
<title>{title}</title>
|
|
<meta name="description" content={description} />
|
|
<meta name="keywords" content={keywords} />
|
|
|
|
{/* Open Graph / Facebook */}
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:title" content={title} />
|
|
<meta property="og:description" content={description} />
|
|
|
|
{/* Twitter */}
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content={title} />
|
|
<meta name="twitter:description" content={description} />
|
|
|
|
{/* Structured Data (JSON-LD) */}
|
|
{schema && (
|
|
<script type="application/ld+json">
|
|
{JSON.stringify(schema)}
|
|
</script>
|
|
)}
|
|
</Helmet>
|
|
);
|
|
};
|