21 lines
691 B
TypeScript
21 lines
691 B
TypeScript
import type { NodeByUriQueryResult, NodeSeoFragment } from "#graphql/operations";
|
|
|
|
export function useNodeSeo(node: NodeByUriQueryResult["nodeByUri"]) {
|
|
// Check if node has SEO data
|
|
if (!node || !("seo" in node) || !node.seo) {
|
|
return;
|
|
}
|
|
const { seo } = node as NodeSeoFragment;
|
|
|
|
useSeoMeta({
|
|
title: seo?.title || undefined,
|
|
description: seo?.description || undefined,
|
|
robots: (seo?.robots || []).join(", "),
|
|
ogTitle: seo?.openGraph?.title || undefined,
|
|
ogDescription: seo?.openGraph?.description || undefined,
|
|
ogImage: seo?.openGraph?.image?.url || undefined,
|
|
ogUrl: seo?.canonicalUrl || undefined,
|
|
twitterCard: "summary_large_image",
|
|
});
|
|
}
|