/** * Builds LocalBusiness JSON-LD (schema.org) — the key structured data for LOCAL * SEO. Helps Google show the business in local results / map pack with address, * hours, phone. Strong signal for "usługa + miasto" queries. * * All data from the panel (company global) — nothing hardcoded. Emit once in the * root layout (business is site-wide): * * import { buildLocalBusinessJsonLd } from '@intecion/ipal-kit' * const jsonLd = buildLocalBusinessJsonLd({ * name: company.name, url: baseUrl, telephone: company.phone, * address: company.address, openingHours: company.hours, * }) * * For a more specific type (e.g. 'Dentist', 'Plumber'), override @type in the * returned object — schema.org has many LocalBusiness subtypes. */ export function buildLocalBusinessJsonLd({ name, address, geo, image, logo, openingHours, priceRange, sameAs, telephone, url }) { const logoUrl = logo?.url; const imageUrl = image?.url ?? logoUrl; return { name, '@context': 'https://schema.org', '@type': 'LocalBusiness', url, ...telephone ? { telephone } : {}, ...imageUrl ? { image: imageUrl.startsWith('http') ? imageUrl : `${url}${imageUrl}` } : {}, ...logoUrl ? { logo: logoUrl.startsWith('http') ? logoUrl : `${url}${logoUrl}` } : {}, ...address ? { address: { '@type': 'PostalAddress', ...address.street ? { streetAddress: address.street } : {}, ...address.city ? { addressLocality: address.city } : {}, ...address.postalCode ? { postalCode: address.postalCode } : {}, ...address.region ? { addressRegion: address.region } : {}, ...address.country ? { addressCountry: address.country } : {} } } : {}, ...geo ? { geo: { '@type': 'GeoCoordinates', latitude: geo.latitude, longitude: geo.longitude } } : {}, ...openingHours && openingHours.length > 0 ? { openingHours } : {}, ...priceRange ? { priceRange } : {}, ...sameAs && sameAs.length > 0 ? { sameAs } : {} }; } //# sourceMappingURL=buildLocalBusinessJsonLd.js.map