feat: add basic webui
This commit is contained in:
67
packages/seo/metadata.ts
Normal file
67
packages/seo/metadata.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import merge from 'lodash.merge';
|
||||
import type { Metadata } from 'next';
|
||||
|
||||
type MetadataGenerator = Omit<Metadata, 'description' | 'title'> & {
|
||||
title: string;
|
||||
description: string;
|
||||
image?: string;
|
||||
};
|
||||
|
||||
const applicationName = 'next-forge';
|
||||
const author: Metadata['authors'] = {
|
||||
name: 'Hayden Bleasel',
|
||||
url: 'https://haydenbleasel.com/',
|
||||
};
|
||||
const publisher = 'Hayden Bleasel';
|
||||
const twitterHandle = '@haydenbleasel';
|
||||
|
||||
export const createMetadata = ({
|
||||
title,
|
||||
description,
|
||||
image,
|
||||
...properties
|
||||
}: MetadataGenerator): Metadata => {
|
||||
const parsedTitle = `${title} | ${applicationName}`;
|
||||
const defaultMetadata: Metadata = {
|
||||
title: parsedTitle,
|
||||
description,
|
||||
applicationName,
|
||||
authors: [author],
|
||||
creator: author.name,
|
||||
formatDetection: {
|
||||
telephone: false,
|
||||
},
|
||||
appleWebApp: {
|
||||
capable: true,
|
||||
statusBarStyle: 'default',
|
||||
title: parsedTitle,
|
||||
},
|
||||
openGraph: {
|
||||
title: parsedTitle,
|
||||
description,
|
||||
type: 'website',
|
||||
siteName: applicationName,
|
||||
locale: 'en_US',
|
||||
},
|
||||
publisher,
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
creator: twitterHandle,
|
||||
},
|
||||
};
|
||||
|
||||
const metadata: Metadata = merge(defaultMetadata, properties);
|
||||
|
||||
if (image && metadata.openGraph) {
|
||||
metadata.openGraph.images = [
|
||||
{
|
||||
url: image,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: title,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
return metadata;
|
||||
};
|
||||
Reference in New Issue
Block a user