Compare commits
2 Commits
fix/refere
...
content/ka
| Author | SHA1 | Date | |
|---|---|---|---|
| 140cb012df | |||
| e1c9720eeb |
@@ -100,10 +100,6 @@ export default async function Layout(props: {
|
||||
label: safeLocale === 'de' ? 'Referenzen' : 'References',
|
||||
url: `/${safeLocale}/referenzen`
|
||||
},
|
||||
{
|
||||
label: safeLocale === 'de' ? 'Karriere' : 'Careers',
|
||||
url: `/${safeLocale}/${await mapFileSlugToTranslated('karriere', safeLocale)}`
|
||||
},
|
||||
{
|
||||
label: safeLocale === 'de' ? 'Messen' : 'Events',
|
||||
url: `/${safeLocale}/${await mapFileSlugToTranslated('messen', safeLocale)}`
|
||||
|
||||
@@ -135,9 +135,7 @@ export default async function ReferenceDetail(props: { params: Promise<{ locale:
|
||||
<MapPin className="w-8 h-8 text-primary shrink-0" />
|
||||
<div>
|
||||
<p className="text-sm text-white/50 mb-1 uppercase tracking-wider font-bold">Ort</p>
|
||||
<p className="font-semibold text-lg">
|
||||
{reference.frontmatter.location ? reference.frontmatter.location.split('/')[0].replace(/\b\d{5}\b/g, '').trim() : ''}
|
||||
</p>
|
||||
<p className="font-semibold text-lg">{reference.frontmatter.location}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-4 p-6 bg-white/5 rounded-2xl border border-white/10 backdrop-blur-sm">
|
||||
|
||||
@@ -8,7 +8,6 @@ import { getButtonClasses, ButtonOverlay } from '@/components/ui/Button';
|
||||
import { SITE_URL } from '@/lib/schema';
|
||||
import Image from 'next/image';
|
||||
import { InteractiveGermanyMap } from '@/components/blocks/InteractiveGermanyMap';
|
||||
import { HeroSection } from '@/components/blocks/HeroSection';
|
||||
import { defaultLocations } from '@/lib/map-data';
|
||||
|
||||
interface PageProps {
|
||||
@@ -42,16 +41,6 @@ export default async function ReferenzenOverview(props: { params: Promise<{ loca
|
||||
|
||||
const references = await getAllReferences(locale);
|
||||
|
||||
// Helper to clean up location names (remove PLZ and keep only first location if multiple)
|
||||
const cleanLocation = (locStr: string | undefined) => {
|
||||
if (!locStr) return '';
|
||||
// Take first part before slash
|
||||
let cleaned = locStr.split('/')[0].trim();
|
||||
// Remove 5-digit PLZ
|
||||
cleaned = cleaned.replace(/\b\d{5}\b/g, '').trim();
|
||||
return cleaned;
|
||||
};
|
||||
|
||||
// Enrich the static map locations with dynamic project data (images, details)
|
||||
const enrichedLocations = defaultLocations.map(loc => {
|
||||
if (loc.type === 'project') {
|
||||
@@ -72,21 +61,12 @@ export default async function ReferenzenOverview(props: { params: Promise<{ loca
|
||||
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen bg-neutral-50 pb-16 md:pb-24">
|
||||
{/* Hero Section */}
|
||||
<HeroSection
|
||||
badge="Referenzen"
|
||||
title="Erfolgreich umgesetzte Projekte."
|
||||
subtitle="Vom Breitbandausbau bis zur komplexen 110kV-Trasse: Ein Auszug unserer bundesweiten Projekte, bei denen wir Infrastruktur für die Zukunft geschaffen haben."
|
||||
alignment="center"
|
||||
backgroundImage={{ url: '/assets/photos/DSC08653.JPG' }}
|
||||
/>
|
||||
|
||||
{/* Map Section */}
|
||||
{/* Map Hero Section */}
|
||||
<InteractiveGermanyMap
|
||||
isHero={false}
|
||||
badge="Einsatzgebiete"
|
||||
title="Deutschlandweit für Sie im Einsatz."
|
||||
description="Entdecken Sie unsere strategischen Standorte und eine Auswahl unserer deutschlandweiten Referenzprojekte."
|
||||
isHero={true}
|
||||
badge="Unsere Referenzen"
|
||||
title={<>Erfolgreich umgesetzte<br/>Projekte.</>}
|
||||
description="Vom Breitbandausbau bis zur komplexen 110kV-Trasse: Ein Auszug unserer bundesweiten Projekte, bei denen wir Infrastruktur für die Zukunft geschaffen haben. Entdecken Sie unsere Standorte."
|
||||
locations={enrichedLocations}
|
||||
/>
|
||||
|
||||
@@ -124,7 +104,7 @@ export default async function ReferenzenOverview(props: { params: Promise<{ loca
|
||||
<div className="absolute top-4 left-4 z-10">
|
||||
<span className="bg-white/95 backdrop-blur-md text-neutral-dark px-3 py-1.5 rounded-sm text-[10px] font-bold uppercase tracking-widest flex items-center gap-1.5 shadow-sm border border-neutral-200">
|
||||
<MapPin className="w-3 h-3 text-primary" />
|
||||
{cleanLocation(ref.frontmatter.location)}
|
||||
{ref.frontmatter.location}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@ export function InteractiveGermanyMap({
|
||||
<div className={isHero ? "relative w-full" : "relative w-full max-w-7xl mx-auto py-16 md:py-24 px-4 sm:px-6 mt-16 md:mt-20"}>
|
||||
<div className={`bg-[#050B14] ${isHero ? 'pt-32 pb-16 md:pt-40 md:pb-24' : 'rounded-[2.5rem] md:rounded-[3.5rem] shadow-2xl border border-white/5'} overflow-visible relative group/map`}>
|
||||
{/* Animated Border Glow */}
|
||||
<AnimatedGlossyBorder opacity={0.7} className="z-30" />
|
||||
{!isHero && <AnimatedGlossyBorder opacity={0.7} className="z-30" />}
|
||||
|
||||
{/* Background Effects */}
|
||||
<div className={`absolute inset-0 bg-gradient-to-br from-[#050B14] via-[#0A1322] to-[#050B14] ${!isHero && 'rounded-[2.5rem] md:rounded-[3.5rem]'} overflow-hidden`} />
|
||||
|
||||
@@ -24,73 +24,73 @@ layout: "fullBleed"
|
||||
{
|
||||
id: "region",
|
||||
title: "Spannende Bauvorhaben",
|
||||
description: "Einsatz bei interessanten regionalen und überregionalen Projekten.",
|
||||
description: "Einsatz bei regionalen und überregionalen Bauvorhaben.",
|
||||
icon: "region"
|
||||
},
|
||||
{
|
||||
id: "contract",
|
||||
title: "Unbefristeter Vertrag",
|
||||
description: "Sicherer Arbeitsplatz durch einen unbefristeten Arbeitsvertrag in Vollzeit.",
|
||||
description: "Sicherer, unbefristeter Arbeitsvertrag in Vollzeit.",
|
||||
icon: "contract"
|
||||
},
|
||||
{
|
||||
id: "money",
|
||||
title: "Faire Vergütung",
|
||||
description: "Leistungsbezogene, überdurchschnittliche und faire Bezahlung.",
|
||||
description: "Leistungsbezogene und faire Vergütung für Ihre Arbeit.",
|
||||
icon: "money"
|
||||
},
|
||||
{
|
||||
id: "allowance",
|
||||
title: "Tägliche Auslöse",
|
||||
description: "Wir zahlen eine steuerfreie Auslöse von bis zu 30,00 EUR pro Arbeitstag.",
|
||||
description: "Auslöse von bis zu 30,00 EUR pro Arbeitstag.",
|
||||
icon: "allowance"
|
||||
},
|
||||
{
|
||||
id: "vacation",
|
||||
title: "31 Tage Urlaub",
|
||||
description: "31 Tage Jahresurlaub sowie zusätzliches Urlaubsgeld zur Erholung.",
|
||||
description: "31 Tage Jahresurlaub sowie zusätzliches Urlaubsgeld.",
|
||||
icon: "vacation"
|
||||
},
|
||||
{
|
||||
id: "clothes",
|
||||
title: "Premium Arbeitskleidung",
|
||||
description: "Hochwertige Engelbert-Strauss Arbeitskleidung wird komplett gestellt.",
|
||||
title: "Marken-Arbeitskleidung",
|
||||
description: "Bereitstellung von hochwertiger Engelbert-Strauss Arbeitskleidung.",
|
||||
icon: "clothes"
|
||||
},
|
||||
{
|
||||
id: "card",
|
||||
title: "Zusatzzahlungen",
|
||||
description: "Monatliche Boni über eine persönliche MasterCard.",
|
||||
description: "Monatliche Zusatzzahlungen über eine persönliche MasterCard.",
|
||||
icon: "card"
|
||||
},
|
||||
{
|
||||
id: "retirement",
|
||||
title: "Altersvorsorge",
|
||||
description: "Attraktive Zuzahlung im Rahmen der betrieblichen Altersvorsorge.",
|
||||
description: "Zuzahlung im Rahmen der betrieblichen Altersvorsorge.",
|
||||
icon: "retirement"
|
||||
},
|
||||
{
|
||||
id: "education",
|
||||
title: "Weiterbildung",
|
||||
description: "Individuelle Entwicklungs- und Aufstiegsmöglichkeiten im Unternehmen.",
|
||||
description: "Individuelle Weiterbildungs- und Entwicklungsmöglichkeiten.",
|
||||
icon: "education"
|
||||
},
|
||||
{
|
||||
id: "car",
|
||||
title: "Firmenfahrzeug",
|
||||
description: "Stellung eines Fahrzeugs zur betrieblichen Nutzung und für Baustellen.",
|
||||
description: "Stellung eines Fahrzeugs zur betrieblichen Nutzung und Fahrten zur Baustelle.",
|
||||
icon: "car"
|
||||
},
|
||||
{
|
||||
id: "team",
|
||||
title: "Intensive Einarbeitung",
|
||||
description: "Professionelles Onboarding in einem hilfsbereiten und engagierten Team.",
|
||||
description: "Entsprechende Einarbeitung in einem engagierten Team.",
|
||||
icon: "team"
|
||||
},
|
||||
{
|
||||
id: "family",
|
||||
title: "Familiäres Klima",
|
||||
description: "Starker Zusammenhalt durch regelmäßige betrieblich organisierte Events.",
|
||||
description: "Familiäres Betriebsklima mit betrieblich organisierten Veranstaltungen.",
|
||||
icon: "family"
|
||||
}
|
||||
]}
|
||||
|
||||
Reference in New Issue
Block a user