schon/storefront/app/composables/seo/useDefaultSeo.ts
2026-02-27 21:59:51 +03:00

27 lines
888 B
TypeScript

import type { ISEOMeta } from '@types';
export function useDefaultSeo(meta: ISEOMeta | null) {
if (meta === null) return meta;
const norm = (s?: string) => (s ?? '').toString().trim();
return {
title: norm(meta.title),
description: norm(meta.description),
canonical: norm(meta.canonical),
robots: norm(meta.robots || 'index,follow'),
og: {
title: norm(meta.openGraph?.title || meta.title),
description: norm(meta.openGraph?.description || meta.description),
type: norm(meta.openGraph?.type || 'product'),
url: norm(meta.openGraph?.url || meta.canonical),
image: norm(meta.openGraph?.image),
},
twitter: {
card: norm(meta.twitter?.card || 'summary_large_image'),
title: norm(meta.twitter?.title || meta.title),
description: norm(meta.twitter?.description || meta.description),
},
jsonLd: Array.isArray(meta.jsonLd) ? meta.jsonLd : [],
};
}