32 lines
849 B
TypeScript
32 lines
849 B
TypeScript
import { Metadata } from 'next'
|
|
import siteMetadata from '@/data/siteMetadata'
|
|
|
|
interface PageSEOProps {
|
|
title: string
|
|
description?: string
|
|
image?: string
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
[key: string]: any
|
|
}
|
|
|
|
export function genPageMetadata({ title, description, image, ...rest }: PageSEOProps): Metadata {
|
|
return {
|
|
title,
|
|
openGraph: {
|
|
title: `${title} | ${siteMetadata.title}`,
|
|
description: description || siteMetadata.description,
|
|
url: './',
|
|
siteName: siteMetadata.title,
|
|
images: image ? [image] : [siteMetadata.socialBanner],
|
|
locale: 'en_US',
|
|
type: 'website',
|
|
},
|
|
twitter: {
|
|
title: `${title} | ${siteMetadata.title}`,
|
|
card: 'summary_large_image',
|
|
images: image ? [image] : [siteMetadata.socialBanner],
|
|
},
|
|
...rest,
|
|
}
|
|
}
|