import { title as homeTitle } from '@/app/(main)/layout.config'; import { owner } from '@/app/(main)/layout.config'; import { baseUrl } from '@/lib/constants'; import type { Post } from '@/lib/source'; import type { BlogPosting, BreadcrumbList, Graph } from 'schema-dts'; export const PostJsonLd = ({ page }: { page: Post }) => { if (!page) { return null; } const url = new URL(page.url, baseUrl.href).href; const post: BlogPosting = { '@type': 'BlogPosting', headline: page.data.title, description: page.data.description, image: new URL(`/og/${page.slugs.join('/')}/image.png`, baseUrl.href).href, datePublished: new Date(page.data.date).toISOString(), dateModified: page.data.lastModified ? new Date(page.data.lastModified).toISOString() : undefined, mainEntityOfPage: { '@type': 'WebPage', '@id': url, }, author: { '@type': 'Person', name: page.data.author, // url: 'https://techwithanirudh.com/', }, publisher: { '@type': 'Person', name: owner, url: 'https://techwithanirudh.com/', }, }; const breadcrumbList: BreadcrumbList = { '@type': 'BreadcrumbList', itemListElement: [ { '@type': 'ListItem', position: 1, name: homeTitle, item: baseUrl.href, }, { '@type': 'ListItem', position: 2, name: `${homeTitle} | Posts`, item: new URL('/posts', baseUrl.href).href, }, { '@type': 'ListItem', position: 3, name: page.data.title, item: url, }, ], }; const graph: Graph = { '@context': 'https://schema.org', '@graph': [post, breadcrumbList], }; return (