'use client'; import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { MapPin, Factory, Zap, CheckCircle2 } from 'lucide-react'; import Image from 'next/image'; export interface Location { id: string; name: string; type: 'hq' | 'branch' | 'project'; x: number; y: number; description: string; details?: string[]; } const defaultLocations: Location[] = [ { id: 'guben', name: 'Guben (Hauptsitz)', type: 'hq', x: 85, y: 48, description: 'E-TIB GmbH Holding & Bohrtechnik GmbH', details: ['Zentrale Steuerung', 'Kabelleitungstiefbau', 'Maschinenpark'], }, { id: 'buelstedt', name: 'Bülstedt (Ingenieurgesellschaft)', type: 'branch', x: 37, y: 25, description: 'E-TIB Ingenieurgesellschaft mbH', details: ['Planung & Projektierung', 'Vermessung', 'Dokumentation'], }, { id: 'spreewald', name: 'Spreewald (Projekt)', type: 'project', x: 82, y: 45, description: 'Breitbandausbau FTTC', }, { id: 'bomlitz', name: 'Bomlitz (Projekt)', type: 'project', x: 45, y: 30, description: 'Breitbandausbau FTTH', }, { id: 'forst', name: 'Forst (Projekt)', type: 'project', x: 88, y: 50, description: 'Neubau Kabeltrasse', }, { id: 'eisenhuettenstadt', name: 'Eisenhüttenstadt (Projekt)', type: 'project', x: 85, y: 40, description: 'Kabelverbindung U30 - T10', }, { id: 'goerne', name: 'Görne (Projekt)', type: 'project', x: 70, y: 35, description: 'Einspeisung PV-Anlage', } ]; interface Stat { value: string; suffix?: string; label: string; } interface InteractiveGermanyMapProps { badge?: string; title?: React.ReactNode; description?: string; stats?: Stat[]; locations?: Location[]; } export function InteractiveGermanyMap({ badge = 'Einsatzgebiete', title = <>Deutschlandweit
für Sie im Einsatz., description = 'Von unseren strategischen Standorten in Guben und Bülstedt steuern und realisieren wir komplexe Infrastrukturprojekte im gesamten Bundesgebiet.', stats = [ { value: '100', suffix: '%', label: 'Überregionale Reichweite' }, { value: '2', suffix: '+', label: 'Operative Standorte' }, ], locations = defaultLocations }: InteractiveGermanyMapProps) { const [activeLocation, setActiveLocation] = useState(null); const hq = locations.find((l) => l.type === 'hq'); const branch = locations.find((l) => l.type === 'branch'); const projects = locations.filter((l) => l.type === 'project'); return (
{/* Background Effects */}
{/* Content Left */}
{badge}

{title}

{description}

{/* Industrial Stats Grid */}
{stats.map((stat, i) => (
{stat.value}{stat.suffix}
{stat.label}
))}
{/* Map Right */}
{/* Map Container - Enforce strict aspect ratio matching the SVG (1024x1024) */}
{/* Map SVG */}
Deutschlandkarte
{/* Connections (Lines) */} {hq && branch && ( )} {hq && projects.map((proj, idx) => ( ))} {/* Location Pins */} {locations.map((loc, idx) => { const isHQ = loc.type === 'hq'; const isBranch = loc.type === 'branch'; const isActive = activeLocation?.id === loc.id; return (
setActiveLocation(loc)} onMouseLeave={() => setActiveLocation(null)} > {/* Ping Animation for HQ / Branch */} {(isHQ || isBranch) && (
)} {/* Marker Dot */} {(isHQ || isBranch) && } {/* Tooltip */} {isActive && (
{isHQ ? : } {loc.name}

{loc.description}

{loc.details && (
    {loc.details.map((detail, i) => (
  • {detail}
  • ))}
)} {/* Arrow Down */}
)}
); })}
); }