import { config } from './config'; const getSiteUrl = () => { if (process.env.CI) return 'http://etib.localhost'; return (config.baseUrl as string) || 'https://e-tib.com'; }; export const SITE_URL = getSiteUrl(); export const LOGO_URL = `${SITE_URL}/assets/logo.png`; export const getOrganizationSchema = () => ({ '@context': 'https://schema.org' as const, '@type': 'Organization' as const, name: 'E-TIB GmbH', url: SITE_URL, logo: LOGO_URL, sameAs: ['https://www.instagram.com/me.and.eloise/'], contactPoint: { '@type': 'ContactPoint' as const, telephone: '+49-15207230518', contactType: 'customer service' as const, email: 'd.joseph@e-tib.com', availableLanguage: ['German', 'English'], }, }); export const getBreadcrumbSchema = (items: { name: string; item: string }[]) => ({ '@context': 'https://schema.org' as const, '@type': 'BreadcrumbList' as const, itemListElement: items.map((item, index) => ({ '@type': 'ListItem' as const, position: index + 1, name: item.name, item: item.item.startsWith('http') ? item.item : `${SITE_URL}${item.item}`, })), }); export const getLocalBusinessSchema = () => ({ '@context': 'https://schema.org' as const, '@type': 'LocalBusiness' as const, name: 'E-TIB GmbH', url: SITE_URL, logo: LOGO_URL, image: LOGO_URL, description: 'Ihr Partner für Kabelleitungstiefbau, Horizontalspülbohrungen, Planung und Vermessung in Guben und überregional.', telephone: '+49-15207230518', email: 'd.joseph@e-tib.com', address: { '@type': 'PostalAddress' as const, streetAddress: 'Gewerbestraße 22', addressLocality: 'Guben', postalCode: '03172', addressCountry: 'DE', }, geo: { '@type': 'GeoCoordinates' as const, latitude: 51.9547, // Approx coordinates for Guben area longitude: 14.7175, }, openingHoursSpecification: [ { '@type': 'OpeningHoursSpecification' as const, dayOfWeek: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'], opens: '08:00', closes: '17:00', }, ], sameAs: ['https://www.instagram.com/me.and.eloise/'], }); export const getFAQSchema = (questions: { question: string; answer: string }[]) => ({ '@context': 'https://schema.org' as const, '@type': 'FAQPage' as const, mainEntity: questions.map((q) => ({ '@type': 'Question' as const, name: q.question, acceptedAnswer: { '@type': 'Answer' as const, text: q.answer, }, })), }); export const getServiceSchema = (serviceName: string, description: string, image?: string) => ({ '@context': 'https://schema.org' as const, '@type': 'Service' as const, name: serviceName, description: description, provider: { '@type': 'Organization' as const, name: 'E-TIB GmbH', }, ...(image && { image }), }); export const getEventSchema = (event: { name: string; startDate: string; endDate?: string; locationName: string; locationAddress?: string; url?: string }) => ({ '@context': 'https://schema.org' as const, '@type': 'Event' as const, name: event.name, startDate: event.startDate, ...(event.endDate && { endDate: event.endDate }), location: { '@type': 'Place' as const, name: event.locationName, ...(event.locationAddress && { address: { '@type': 'PostalAddress' as const, streetAddress: event.locationAddress, }, }), }, organizer: { '@type': 'Organization' as const, name: 'E-TIB GmbH', url: SITE_URL, }, ...(event.url && { url: event.url }), });