import { Thing, WithContext } from 'schema-dts'; interface JsonLdProps { id?: string; data?: WithContext | WithContext[]; } export default function JsonLd({ id, data }: JsonLdProps) { // If data is provided, use it. Otherwise, use the default Organization + WebSite schema. const rawData = data || [ { '@context': 'https://schema.org', '@type': 'Organization', name: 'KLZ Cables', url: 'https://klz-cables.com', logo: 'https://klz-cables.com/logo-blue.svg', sameAs: ['https://www.linkedin.com/company/klz-cables'], description: 'Premium Cable Solutions for Renewable Energy and Infrastructure.', address: { '@type': 'PostalAddress', addressCountry: 'DE', }, }, { '@context': 'https://schema.org', '@type': 'WebSite', name: 'KLZ Cables', url: 'https://klz-cables.com', potentialAction: { '@type': 'SearchAction', target: { '@type': 'EntryPoint', urlTemplate: 'https://klz-cables.com/search?q={search_term_string}', }, 'query-input': 'required name=search_term_string', }, }, ]; // Harden schema items: Ensure each item is an object and has @context const schemaData = (Array.isArray(rawData) ? rawData : [rawData]) .filter((item): item is WithContext => { // Basic sanity check: must be an object and not null return typeof item === 'object' && item !== null; }) .map((item) => { // Ensure @context is present and correctly typed for consumer libraries if (!item['@context']) { return { ...(item as Record), '@context': 'https://schema.org', } as WithContext; } return item; }); return (