import { IFaq } from '@/components/blocks/Faq/Faq.types'; import { SITE_URL } from '@/utils/constants'; import { IBreadcrumbs } from '@/components/ui/Breadcrumbs/Breadcrumbs.types'; import { getImage } from '@/utils/imageResolver'; export const faqJsonLd = (faqItems: IFaq.Item[]) => { return { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqItems.map(element => ({ '@type': 'Question', name: element.question, acceptedAnswer: { '@type': 'Answer', text: element.answer, }, })), }; }; export const breadcrumbsJsonLd = (breadcrumbItems: IBreadcrumbs.Item[]) => { return { '@context': 'https://schema.org', '@type': 'BreadcrumbList', itemListElement: breadcrumbItems.map((element, index) => ({ '@type': 'ListItem', position: index + 1, name: element.name, item: SITE_URL + element.url, })), }; }; export const articleJsonLd = (articleItem: any) => { return { '@context': 'https://schema.org', '@type': 'NewsArticle', mainEntityOfPage: { '@type': 'WebPage', '@id': 'https://google.com/article', }, headline: 'Article headline', image: getImage(articleItem?.seo?.metaImageFile, { fallbackImage: articleItem?.seo?.metaImage, }), datePublished: articleItem.date_created, dateModified: articleItem.date_updated, description: articleItem.previewText, articleBody: articleItem.content, genre: articleItem.category.name, author: { '@type': 'Person', name: articleItem.author?.name, url: SITE_URL + articleItem.slug, }, publisher: { '@type': 'Organization', name: 'Belkins', logo: { '@type': 'ImageObject', url: SITE_URL + '/logo.svg', }, }, }; };