mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-08-29 11:38:25 +02:00
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { PageData } from 'vitepress';
|
|
|
|
export default async function getStructuredData(iconName: string, pageData: PageData) {
|
|
const url = `https://lucide.dev/icons/${iconName}`;
|
|
|
|
return {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'WebPage',
|
|
'@id': url,
|
|
name: pageData.title,
|
|
description: pageData.description,
|
|
url,
|
|
inLanguage: 'en',
|
|
isPartOf: {
|
|
'@type': 'WebSite',
|
|
name: 'Lucide Icons',
|
|
url: 'https://lucide.dev',
|
|
},
|
|
breadcrumb: {
|
|
'@type': 'BreadcrumbList',
|
|
itemListElement: [
|
|
{ '@type': 'ListItem', position: 1, name: 'Icons', item: 'https://lucide.dev/icons' },
|
|
{ '@type': 'ListItem', position: 2, name: iconName, item: url },
|
|
],
|
|
},
|
|
mainEntity: {
|
|
'@type': 'ImageObject',
|
|
'@id': `${url}#icon`,
|
|
name: iconName,
|
|
// TODO: Add support for description extraction from icon metadata
|
|
// description: 'An ...SVG icon from the Lucide icon set.',
|
|
contentUrl: `https://lucide.dev/api/icons/${iconName}}?width=24&height=24&background=white`,
|
|
thumbnailUrl: `https://lucide.dev/api/icons/${iconName}}?width=256&height=256&background=white`,
|
|
encodingFormat: 'image/svg+xml',
|
|
keywords: pageData.params?.tags,
|
|
width: 24,
|
|
height: 24,
|
|
creator: {
|
|
'@type': 'Organization',
|
|
name: 'Lucide Icons',
|
|
},
|
|
datePublished: pageData?.params?.createdRelease?.date,
|
|
dateModified: pageData?.params?.changedRelease?.date,
|
|
},
|
|
};
|
|
}
|