Files
ipal-kit/dist/modules/seo/buildSiteNavigationJsonLd.js
T

34 lines
1.3 KiB
JavaScript

/**
* Builds SiteNavigationElement JSON-LD (schema.org) from the main navigation —
* declares the site's primary nav as structured data. A weaker sitelinks signal
* than WebSite/breadcrumbs, but cheap: it tells Google which pages are the main
* navigation targets.
*
* Feed it the SAME nav items the header renders (from the panel/nav global), so
* the structured data matches the visible menu — not a separate hardcoded list.
*
* import { buildSiteNavigationJsonLd } from '@intecion/ipal-kit'
* const jsonLd = buildSiteNavigationJsonLd(
* navItems.map(i => ({ name: i.label, url: `${base}${i.href}` }))
* )
* <script type="application/ld+json" ... />
*
* Emit once (site-wide, root layout). Data from the nav source, never hardcoded.
* Returns null for empty nav.
*/ export function buildSiteNavigationJsonLd(items) {
if (!items || items.length === 0) {
return null;
}
return {
'@context': 'https://schema.org',
'@type': 'ItemList',
itemListElement: items.map((item, index)=>({
name: item.name,
'@type': 'SiteNavigationElement',
position: index + 1,
url: item.url
}))
};
}
//# sourceMappingURL=buildSiteNavigationJsonLd.js.map