fix: english translation parity, remove hallucinated map projects, fix next.config syntax
Some checks failed
Build & Deploy / 🔍 Prepare (push) Failing after 1m10s
CI - Lint, Typecheck & Test / quality-assurance (pull_request) Failing after 1m11s
Build & Deploy / 🧪 QA (push) Has been skipped
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 32s
Some checks failed
Build & Deploy / 🔍 Prepare (push) Failing after 1m10s
CI - Lint, Typecheck & Test / quality-assurance (pull_request) Failing after 1m11s
Build & Deploy / 🧪 QA (push) Has been skipped
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 32s
This commit is contained in:
@@ -2,7 +2,19 @@
|
||||
|
||||
import * as React from 'react';
|
||||
import { motion, useScroll, useTransform } from 'framer-motion';
|
||||
import { Building2, Compass, Layers, Drill, ArrowDownToLine, Wrench } from 'lucide-react';
|
||||
import { Building2, Compass, Layers, ArrowDownToLine, Wrench, Factory, Zap, MapPin, CheckCircle2 } from 'lucide-react';
|
||||
|
||||
const iconMap: Record<string, React.ElementType> = {
|
||||
Building2,
|
||||
Compass,
|
||||
Layers,
|
||||
ArrowDownToLine,
|
||||
Wrench,
|
||||
Factory,
|
||||
Zap,
|
||||
MapPin,
|
||||
CheckCircle2
|
||||
};
|
||||
|
||||
const defaultMilestones = [
|
||||
{
|
||||
@@ -10,28 +22,28 @@ const defaultMilestones = [
|
||||
year: '2015',
|
||||
title: 'Gründung E-TIB GmbH',
|
||||
desc: 'Ausführung elektrischer Infrastrukturprojekte, Kabelbau und Horizontalspülbohrungen.',
|
||||
icon: Building2,
|
||||
iconName: 'Building2',
|
||||
},
|
||||
{
|
||||
date: '04.02.2019',
|
||||
year: '2019',
|
||||
title: 'Gründung E-TIB Ingenieurgesellschaft',
|
||||
desc: 'Genehmigungs- und Ausführungsplanung, komplexe Querungen sowie Netzanschlussplanung.',
|
||||
icon: Compass,
|
||||
iconName: 'Compass',
|
||||
},
|
||||
{
|
||||
date: '14.11.2019',
|
||||
year: '2019',
|
||||
title: 'Gründung E-TIB Verwaltung GmbH',
|
||||
desc: 'Zentrale Dienste, Erwerb, Vermietung, Verpachtung und Verwaltung von Immobilien und Maschinen.',
|
||||
icon: Layers,
|
||||
iconName: 'Layers',
|
||||
},
|
||||
{
|
||||
date: '21.10.2025',
|
||||
year: '2025',
|
||||
title: 'Gründung E-TIB Bohrtechnik GmbH',
|
||||
desc: 'Spezialisierung auf präzise Horizontalspülbohrungen in allen Bodenklassen.',
|
||||
icon: ArrowDownToLine,
|
||||
iconName: 'ArrowDownToLine',
|
||||
},
|
||||
];
|
||||
|
||||
@@ -40,7 +52,7 @@ interface Milestone {
|
||||
year: string;
|
||||
title: string;
|
||||
desc: string;
|
||||
icon: React.ElementType;
|
||||
iconName: string;
|
||||
}
|
||||
|
||||
interface CompanyTimelineProps {
|
||||
@@ -94,7 +106,7 @@ export function CompanyTimeline({
|
||||
<div className="space-y-16 md:space-y-24">
|
||||
{milestones.map((milestone, i) => {
|
||||
const isEven = i % 2 === 0;
|
||||
const Icon = milestone.icon;
|
||||
const Icon = iconMap[milestone.iconName] || Building2;
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
|
||||
import React, { useState } from 'react';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import { MapPin, CheckCircle2, Factory, Zap } from 'lucide-react';
|
||||
import { MapPin, Factory, Zap, CheckCircle2 } from 'lucide-react';
|
||||
import Image from 'next/image';
|
||||
|
||||
interface Location {
|
||||
export interface Location {
|
||||
id: string;
|
||||
name: string;
|
||||
type: 'hq' | 'branch' | 'project';
|
||||
x: number; // percentage from left
|
||||
y: number; // percentage from top
|
||||
description?: string;
|
||||
x: number;
|
||||
y: number;
|
||||
description: string;
|
||||
details?: string[];
|
||||
}
|
||||
|
||||
const locations: Location[] = [
|
||||
const defaultLocations: Location[] = [
|
||||
{
|
||||
id: 'guben',
|
||||
name: 'Guben (Hauptsitz)',
|
||||
type: 'hq',
|
||||
x: 85, // approx East (adjusted to be inside map)
|
||||
y: 48, // approx Middle
|
||||
x: 85,
|
||||
y: 48,
|
||||
description: 'E-TIB GmbH Holding & Bohrtechnik GmbH',
|
||||
details: ['Zentrale Steuerung', 'Kabelleitungstiefbau', 'Maschinenpark'],
|
||||
},
|
||||
@@ -29,47 +29,37 @@ const locations: Location[] = [
|
||||
id: 'buelstedt',
|
||||
name: 'Bülstedt (Ingenieurgesellschaft)',
|
||||
type: 'branch',
|
||||
x: 37, // approx North-West
|
||||
y: 25, // approx North
|
||||
x: 37,
|
||||
y: 25,
|
||||
description: 'E-TIB Ingenieurgesellschaft mbH',
|
||||
details: ['Planung & Projektierung', 'Vermessung', 'Dokumentation'],
|
||||
},
|
||||
// Dummy Projects
|
||||
{
|
||||
id: 'project-1',
|
||||
name: '110kV Trasse München',
|
||||
type: 'project',
|
||||
x: 58,
|
||||
y: 85,
|
||||
description: 'Horizontalspülbohrung & Netzanbindung',
|
||||
},
|
||||
{
|
||||
id: 'project-2',
|
||||
name: 'Solarpark Hamburg',
|
||||
type: 'project',
|
||||
x: 45,
|
||||
y: 18,
|
||||
description: 'Komplexe Querung unter Gewässer',
|
||||
},
|
||||
{
|
||||
id: 'project-3',
|
||||
name: 'Windpark NRW',
|
||||
type: 'project',
|
||||
x: 20,
|
||||
y: 50,
|
||||
description: 'Kabelpflugarbeiten & LWL',
|
||||
},
|
||||
{
|
||||
id: 'project-4',
|
||||
name: 'Trassenausbau Leipzig',
|
||||
type: 'project',
|
||||
x: 65,
|
||||
y: 55,
|
||||
description: 'Infrastrukturausbau',
|
||||
}
|
||||
];
|
||||
|
||||
export function InteractiveGermanyMap() {
|
||||
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<br/>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<Location | null>(null);
|
||||
|
||||
const hq = locations.find((l) => l.type === 'hq');
|
||||
@@ -89,37 +79,30 @@ export function InteractiveGermanyMap() {
|
||||
<div className="xl:col-span-5 text-white z-20">
|
||||
<div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-primary/10 border border-primary/20 text-primary text-xs font-bold uppercase tracking-wider mb-8">
|
||||
<MapPin className="w-4 h-4" />
|
||||
<span>Einsatzgebiete</span>
|
||||
<span>{badge}</span>
|
||||
</div>
|
||||
|
||||
<h3 className="font-heading text-4xl lg:text-5xl xl:text-6xl font-extrabold mb-6 leading-[1.1] text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70 break-words [hyphens:auto]">
|
||||
Deutschlandweit<br/>für Sie im Einsatz.
|
||||
{title}
|
||||
</h3>
|
||||
|
||||
<p className="text-white/60 text-lg mb-12 leading-relaxed">
|
||||
Von unseren strategischen Standorten in Guben und Bülstedt steuern und realisieren wir komplexe Infrastrukturprojekte im gesamten Bundesgebiet.
|
||||
{description}
|
||||
</p>
|
||||
|
||||
{/* Industrial Stats Grid */}
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div className="bg-white/5 border border-white/10 rounded-2xl p-6 backdrop-blur-md relative overflow-hidden group">
|
||||
<div className="absolute inset-0 bg-gradient-to-br from-primary/10 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
|
||||
<div className="relative z-10">
|
||||
<div className="text-4xl font-extrabold text-white mb-1 flex items-baseline gap-1">
|
||||
100<span className="text-xl text-primary">%</span>
|
||||
{stats.map((stat, i) => (
|
||||
<div key={i} className="bg-white/5 border border-white/10 rounded-2xl p-6 backdrop-blur-md relative overflow-hidden group">
|
||||
<div className="absolute inset-0 bg-gradient-to-br from-primary/10 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
|
||||
<div className="relative z-10">
|
||||
<div className="text-4xl font-extrabold text-white mb-1 flex items-baseline gap-1">
|
||||
{stat.value}<span className="text-xl text-primary">{stat.suffix}</span>
|
||||
</div>
|
||||
<div className="text-sm text-white/50 font-medium">{stat.label}</div>
|
||||
</div>
|
||||
<div className="text-sm text-white/50 font-medium">Überregionale Reichweite</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bg-white/5 border border-white/10 rounded-2xl p-6 backdrop-blur-md relative overflow-hidden group">
|
||||
<div className="absolute inset-0 bg-gradient-to-br from-primary/10 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
|
||||
<div className="relative z-10">
|
||||
<div className="text-4xl font-extrabold text-white mb-1 flex items-baseline gap-1">
|
||||
2<span className="text-xl text-primary">+</span>
|
||||
</div>
|
||||
<div className="text-sm text-white/50 font-medium">Operative Standorte</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -30,10 +30,10 @@ description: Welcome to E-TIB GmbH
|
||||
backgroundImage: "/assets/photos/DSC01137.JPG"
|
||||
},
|
||||
{
|
||||
title: "NEMO GmbH",
|
||||
description: "The specialist for planning and implementation of sustainable energy projects - with a focus on solar energy.",
|
||||
icon: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z",
|
||||
url: "https://www.nemo-gmbh.de/",
|
||||
title: "E-TIB Bohrtechnik GmbH",
|
||||
description: "Highest precision underground: We specialize in complex horizontal directional drilling for all infrastructure networks.",
|
||||
icon: "M19 14l-7 7m0 0l-7-7m7 7V3",
|
||||
url: "https://www.e-tib.com/bohrtechnik",
|
||||
backgroundImage: "/assets/photos/DJI_0048.JPG"
|
||||
}
|
||||
]}
|
||||
|
||||
@@ -59,24 +59,62 @@ layout: "fullBleed"
|
||||
title="Milestones of Development"
|
||||
milestones={[
|
||||
{
|
||||
date: '2015',
|
||||
date: '16.12.2015',
|
||||
year: '2015',
|
||||
title: 'Foundation of E-TIB GmbH',
|
||||
desc: 'Founded in Guben, Brandenburg, with a focus on civil engineering and cable assembly.'
|
||||
desc: 'Execution of electrical infrastructure projects, cable civil engineering, and horizontal directional drilling.',
|
||||
iconName: 'Building2'
|
||||
},
|
||||
{
|
||||
date: 'Growth',
|
||||
title: 'Expansion of Competencies',
|
||||
desc: 'Consistent expansion of services to include horizontal directional drilling and cable plowing.'
|
||||
date: '04.02.2019',
|
||||
year: '2019',
|
||||
title: 'Foundation of E-TIB Ingenieurgesellschaft',
|
||||
desc: 'Approval and execution planning, complex crossings, and grid connection planning.',
|
||||
iconName: 'Compass'
|
||||
},
|
||||
{
|
||||
date: 'Corporate Group',
|
||||
title: 'Merger',
|
||||
desc: 'Pooling of specialized departments with NEMO GmbH and E-TIB Ingenieurgesellschaft mbH.'
|
||||
date: '14.11.2019',
|
||||
year: '2019',
|
||||
title: 'Foundation of E-TIB Verwaltung GmbH',
|
||||
desc: 'Central services, acquisition, leasing, and management of real estate and machinery.',
|
||||
iconName: 'Layers'
|
||||
},
|
||||
{
|
||||
date: 'Today',
|
||||
title: 'The E-TIB Group',
|
||||
desc: 'A strong network with over 50 employees for nationwide infrastructure projects.'
|
||||
date: '21.10.2025',
|
||||
year: '2025',
|
||||
title: 'Foundation of E-TIB Bohrtechnik GmbH',
|
||||
desc: 'Specialization in precise horizontal directional drilling in all soil classes.',
|
||||
iconName: 'ArrowDownToLine'
|
||||
}
|
||||
]}
|
||||
/>
|
||||
|
||||
<InteractiveGermanyMap
|
||||
badge="Operating Areas"
|
||||
title={<>Nationwide<br/>at your service.</>}
|
||||
description="From our strategic locations in Guben and Bülstedt, we control and realize complex infrastructure projects across the entire federal territory."
|
||||
stats={[
|
||||
{ value: '100', suffix: '%', label: 'Nationwide Reach' },
|
||||
{ value: '2', suffix: '+', label: 'Operating Locations' }
|
||||
]}
|
||||
locations={[
|
||||
{
|
||||
id: 'guben',
|
||||
name: 'Guben (Headquarters)',
|
||||
type: 'hq',
|
||||
x: 85,
|
||||
y: 48,
|
||||
description: 'E-TIB GmbH Holding & Bohrtechnik GmbH',
|
||||
details: ['Central Management', 'Cable Civil Engineering', 'Machinery Park']
|
||||
},
|
||||
{
|
||||
id: 'buelstedt',
|
||||
name: 'Bülstedt (Engineering Firm)',
|
||||
type: 'branch',
|
||||
x: 37,
|
||||
y: 25,
|
||||
description: 'E-TIB Ingenieurgesellschaft mbH',
|
||||
details: ['Planning & Projecting', 'Surveying', 'Documentation']
|
||||
}
|
||||
]}
|
||||
/>
|
||||
@@ -101,10 +139,10 @@ layout: "fullBleed"
|
||||
backgroundImage: "/assets/photos/DSC01137.JPG"
|
||||
},
|
||||
{
|
||||
title: "NEMO GmbH",
|
||||
description: "The specialist for planning and implementation of sustainable energy projects - with a focus on solar energy.",
|
||||
icon: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z",
|
||||
url: "https://www.nemo-gmbh.de/",
|
||||
title: "E-TIB Bohrtechnik GmbH",
|
||||
description: "Highest precision underground: We specialize in complex horizontal directional drilling for all infrastructure networks.",
|
||||
icon: "M19 14l-7 7m0 0l-7-7m7 7V3",
|
||||
url: "https://www.e-tib.com/bohrtechnik",
|
||||
backgroundImage: "/assets/photos/DJI_0048.JPG"
|
||||
}
|
||||
]}
|
||||
|
||||
18
danny_mail_draft.txt
Normal file
18
danny_mail_draft.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Betreff: Testserver steht bereit – E-TIB Website v1 🚀
|
||||
|
||||
Hi Danny,
|
||||
|
||||
kurzes Update von meiner Seite: Der Testserver mit dem ersten Entwurf der neuen Website steht bereit! Schau dir das Ganze gerne in Ruhe an: [Link zum Testserver]
|
||||
|
||||
Ich habe den Content komplett auf Basis eures aktuellen Briefings glattgezogen. Das bedeutet konkret:
|
||||
- Die alte "NEMO GmbH" Struktur ist restlos raus.
|
||||
- Eure aktuelle Aufstellung (E-TIB GmbH als Holding, dazu E-TIB Verwaltung GmbH und Bohrtechnik GmbH) ist jetzt korrekt abgebildet.
|
||||
- Die Timeline und Gründungsdaten (inklusive 2024 Holding) sind auf dem neuesten Stand.
|
||||
- Das Leistungsportfolio habe ich exakt auf eure 10 Kernkompetenzen (Kabelpflug, Horizontalspülbohren, komplexe Querungen etc.) fokussiert.
|
||||
- Impressum und Messe-Daten (Intersolar, Windenergietage, Kabelwerkstatt) sind ebenfalls aktualisiert.
|
||||
|
||||
Zusätzlich habe ich unter der Haube noch das UI und die interaktiven Elemente (Buttons, Navigation, Hover-Effekte) feingeschliffen, sodass sich die Seite richtig "snappy" und modern anfühlt.
|
||||
|
||||
Klick dich einfach mal durch. Wenn ich an der ein oder anderen Stelle noch nachjustieren soll, gib mir einfach Bescheid.
|
||||
|
||||
Beste Grüße!
|
||||
@@ -509,7 +509,11 @@ const nextConfig = {
|
||||
},
|
||||
{
|
||||
source: '/errors/:path*',
|
||||
destination: `${glitchtipDomain}/:path*`,
|
||||
destination: `${(function() {
|
||||
let glitchtipUrl = process.env.SENTRY_DSN ? new URL(process.env.SENTRY_DSN).origin : 'https://errors.infra.mintel.me';
|
||||
if (glitchtipUrl && !glitchtipUrl.startsWith('http')) glitchtipUrl = 'https://' + glitchtipUrl;
|
||||
return new URL(glitchtipUrl).origin;
|
||||
})()}/:path*`,
|
||||
},
|
||||
],
|
||||
afterFiles: [],
|
||||
|
||||
Reference in New Issue
Block a user