import { useEffect } from 'react'; interface SeoProps { title: string; description: string; canonical?: string; noIndex?: boolean; image?: string; } const BASE_URL = 'https://sascha-bach.de'; export function usePageSeo({ title, description, canonical, noIndex, image }: SeoProps) { useEffect(() => { document.title = title; const setMeta = (name: string, content: string, isProperty = false) => { const attr = isProperty ? 'property' : 'name'; let el = document.querySelector(`meta[${attr}="${name}"]`); if (!el) { el = document.createElement('meta'); el.setAttribute(attr, name); document.head.appendChild(el); } el.content = content; }; setMeta('description', description); setMeta('og:title', title, true); setMeta('og:description', description, true); setMeta('twitter:title', title); setMeta('twitter:description', description); if (image) { const imageUrl = image.startsWith('http') ? image : `${BASE_URL}${image}`; setMeta('og:image', imageUrl, true); setMeta('twitter:image', imageUrl); } if (canonical) { setMeta('og:url', `${BASE_URL}${canonical}`, true); let link = document.querySelector('link[rel="canonical"]'); if (!link) { link = document.createElement('link'); link.rel = 'canonical'; document.head.appendChild(link); } link.href = `${BASE_URL}${canonical}`; } if (noIndex) { setMeta('robots', 'noindex, nofollow'); } return () => { if (noIndex) { const robotsMeta = document.querySelector('meta[name="robots"]'); robotsMeta?.remove(); } }; }, [title, description, canonical, noIndex]); }