/* BAUZENTRUM RETZMANN - STABLE VERSION 3.0 */ import React, { useState, useEffect } from 'react'; import { Phone, Mail, Clock, MapPin, Menu, X, ChevronDown, Hammer, Home, Truck, Users, ArrowRight, CheckCircle2, Star, Layers, Leaf, Maximize, Lightbulb, MessageSquare, Palette, ChevronLeft, ChevronRight, User, Printer, Quote } from 'lucide-react'; const App = () => { // --- STATE --- const [isMenuOpen, setIsMenuOpen] = useState(false); const [currentView, setCurrentView] = useState('home'); const [scrolled, setScrolled] = useState(false); const [activeExhibitionTab, setActiveExhibitionTab] = useState('Garten'); const [mobileSubmenu, setMobileSubmenu] = useState(null); const [currentHeroSlide, setCurrentHeroSlide] = useState(0); const [themeColor, setThemeColor] = useState('red'); const [showThemePicker, setShowThemePicker] = useState(false); // --- THEME CONFIGURATION --- const theme = { red: { bg: 'bg-red-600', bgHover: 'hover:bg-red-700', text: 'text-red-600', textHover: 'hover:text-red-700', border: 'border-red-600', borderLight: 'border-red-100', bgLight: 'bg-red-50', shadow: 'shadow-red-600/20', from: 'from-red-500', }, blue: { bg: 'bg-blue-600', bgHover: 'hover:bg-blue-700', text: 'text-blue-600', textHover: 'hover:text-blue-700', border: 'border-blue-600', borderLight: 'border-blue-100', bgLight: 'bg-blue-50', shadow: 'shadow-blue-600/20', from: 'from-blue-500', }, green: { bg: 'bg-emerald-600', bgHover: 'hover:bg-emerald-700', text: 'text-emerald-600', textHover: 'hover:text-emerald-700', border: 'border-emerald-600', borderLight: 'border-emerald-100', bgLight: 'bg-emerald-50', shadow: 'shadow-emerald-600/20', from: 'from-emerald-500', } }[themeColor]; // --- EFFECTS --- useEffect(() => { const handleScroll = () => setScrolled(window.scrollY > 20); window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); // --- NAVIGATION --- const navigateTo = (viewId) => { setCurrentView(viewId); setIsMenuOpen(false); window.scrollTo({ top: 0, behavior: 'smooth' }); }; const scrollToSection = (id) => { setIsMenuOpen(false); if (currentView !== 'home') { setCurrentView('home'); setTimeout(() => { const el = document.getElementById(id); if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 100); } else { const el = document.getElementById(id); if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }; // --- CONTENT DATA --- const heroSlides = [ { image: "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Home/Slider/ProfikundenWebbanner1920x600Kompetenz201907261148.png", title: "Unsere Leute. Deine Kompetenz.", subtitle: "Das ist Profi-Partnerschaft!" }, { image: "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Home/Slider/_MG_7130_cropped.jpg", title: "Leistungsfähiger Fuhrpark", subtitle: "Pünktlich und zuverlässig auf Ihrer Baustelle." }, { image: "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Home/Slider/_MG_7136_cropped.jpg", title: "Umfangreiches Warenlager", subtitle: "Alles sofort verfügbar für Ihr Projekt." }, { image: "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Home/Slider/Schuettgutboxen_cropped.jpg", title: "Schüttgutlager Kleinmenge", subtitle: "Flexibel und passgenau für jeden Bedarf." } ]; // Slider Auto-Play (8s) useEffect(() => { const timer = setInterval(() => { setCurrentHeroSlide((prev) => (prev + 1) % heroSlides.length); }, 8000); return () => clearInterval(timer); }, []); const nextHeroSlide = () => setCurrentHeroSlide((prev) => (prev + 1) % heroSlides.length); const prevHeroSlide = () => setCurrentHeroSlide((prev) => (prev === 0 ? heroSlides.length - 1 : prev - 1)); // --- RENDER HELPERS --- const handleImageError = (e) => { e.target.src = "https://images.unsplash.com/photo-1503387762-592deb58ef4e?q=80&w=2689&auto=format&fit=crop"; e.target.alt = "Platzhalter Bild"; }; const departments = [ { title: "Trockenbau", icon: Home, image: "https://images.unsplash.com/photo-1581094794329-cd136ce4dad5?q=80&w=2600&auto=format&fit=crop", action: () => navigateTo('trockenbau') }, { title: "Bauelemente", icon: Star, image: "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Ausstellungen/Bauelemente_1.jpg", action: () => navigateTo('home') }, { title: "Baufachmarkt", icon: Hammer, image: "https://images.unsplash.com/photo-1581092160562-40aa08e78837?q=80&w=2670&auto=format&fit=crop", action: () => navigateTo('home') }, { title: "Fliesen & Sanitär", icon: CheckCircle2, image: "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Ausstellungen/Ausstellungen_neu/Fliesen_1.png", action: () => navigateTo('home') }, { title: "Aussenanlage", icon: Leaf, image: "https://www.retzmann-bauzentrum.de/fileadmin/_processed_/3/9/csm_JASTO_4_85f559df99.jpg", action: () => navigateTo('home') }, { title: "Putze & WDVS", icon: Layers, image: "https://images.unsplash.com/photo-1628744876497-eb30460be9f6?q=80&w=2670&auto=format&fit=crop", action: () => navigateTo('home') }, { title: "Dach & Fassade", icon: Home, image: "https://images.unsplash.com/photo-1632759145351-1d592919f522?q=80&w=2670&auto=format&fit=crop", action: () => navigateTo('home') }, { title: "Roh- & Hochbau", icon: Home, image: "https://images.unsplash.com/photo-1541888946425-d81bb19240f5?q=80&w=2670&auto=format&fit=crop", action: () => navigateTo('home') }, { title: "Tiefbau", icon: Truck, image: "https://images.unsplash.com/photo-1590486803833-1c5dc8ce8420?q=80&w=2670&auto=format&fit=crop", action: () => navigateTo('home') } ]; const contactsData = { "Zentrale": [{ name: "Sabine Christmann", phone: "(06747) 9343-22", email: "s.christmann@retzmann-bauzentrum.de" }], "Baufachmarkt": [{ name: "Theo Muders", phone: "(06747) 9343-26", email: "t.muders@retzmann-bauzentrum.de" }], "Trockenbau": [{ name: "Ralph Engel", phone: "(06747) 9343-15", email: "r.engel@retzmann-bauzentrum.de" }], "Buchhaltung": [{ name: "Jennifer Barthel", phone: "(06747) 9343-10", email: "j.barthel@retzmann-bauzentrum.de" }] }; const historyData = [ { year: '1971', text: 'Entstehung als Niederlassung Mat. Kröll GmbH & Co.' }, { year: '1988', text: 'Eröffnung unseres Baufachmarktes in Boppard.' }, { year: '2009', text: 'Umfirmierung zur Bauzentrum Retzmann GmbH.' }, { year: 'Heute', text: '14 Mitarbeiter, eigener Fuhrpark mit Kranfahrzeugen.' } ]; const exhibitions = { "Garten": ["https://www.retzmann-bauzentrum.de/fileadmin/_processed_/3/9/csm_JASTO_4_85f559df99.jpg", "https://www.retzmann-bauzentrum.de/fileadmin/_processed_/2/c/csm_JASTO_5_e180433b18.jpg"], "Fliesen": ["https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Ausstellungen/Ausstellungen_neu/Fliesen_1.png", "https://www.retzmann-bauzentrum.de/fileadmin/user_upload/Retzmann/seiten/Ausstellungen/Ausstellungen_neu/Fliesen_2.png"] }; const guidesData = [ { title: "Gartenmöbel", desc: "Verwandeln Sie Ihren Garten in ein Wohnzimmer.", img: "https://api.eurobaustoff.de/cgi-bin/infomam_ws/services/rs2/cs/csimg?mid=20230321.8334b61c-4d33-4aa6-a914-764a70cdca3d&format=21%3A9&w=800" }, { title: "Pools & Co.", desc: "Ein Pool ist wie ein Freibad zu Hause – nur besser.", img: "https://api.eurobaustoff.de/cgi-bin/infomam_ws/services/rs2/cs/csimg?mid=20230321.8334b61c-4d33-4aa6-a914-764af0003557&format=21%3A9&w=800" }, { title: "Licht im Garten", desc: "Laue Sommerabende auf der Terrasse.", img: "https://api.eurobaustoff.de/cgi-bin/infomam_ws/services/rs2/cs/csimg?mid=20230321.db6e552f-06ae-91b6-a914-464ba09e942e&format=21%3A9&w=800" } ]; const navStructure = [ { title: "Start", action: () => navigateTo('home') }, { title: "Aktuelles", items: ["Angebote", "Restposten", "Neuigkeiten"] }, { title: "Fachabteilungen", items: departments.map(d => ({ name: d.title, action: d.action })) }, { title: "Ausstellungen", action: () => navigateTo('ausstellungen') }, { title: "Ratgeber", link: "#guides", action: () => scrollToSection('guides') }, { title: "Service", items: ["Serviceleistungen", "Ansprechpartner", "Lieferservice"] }, { title: "Über uns", items: ["Bauzentrum Retzmann", "Anfahrt", "Öffnungszeiten"] } ]; return (
{/* TOP BAR */}
Halsenbach Mo-Fr 7:00-18:00
+49 6747 9343 - 0
{/* HEADER */}
navigateTo('home')}>
Logo
{/* Desktop Nav */} {/* Mobile Toggle & Theme */}
{showThemePicker && (
)}
{/* Mobile Menu Drawer */}
{navStructure.map((item, i) => (
{ if(item.action) item.action(); setMobileSubmenu(mobileSubmenu === i ? null : i); }}>{item.title}
{item.items && mobileSubmenu === i && (
{item.items.map((sub, j) => ( ))}
)}
))}
{/* === CONTENT VIEWS === */}
{/* VIEW: HOME */} {currentView === 'home' && (
{/* HERO */}
i&M Bauzentrum Partner

{heroSlides[currentHeroSlide].title}

{heroSlides[currentHeroSlide].subtitle}

{/* DEPARTMENTS TEASER */}

Alles für Ihr Projekt

Unsere Fachabteilungen

{departments.slice(0,6).map((dept, i) => (

{dept.title}

))}
{/* GOOGLE REVIEWS */}

Kundenstimmen

Was unsere Kunden sagen

{[1,2,3,4,5].map(i => )}

4,4 von 5 Sternen auf Google (138 Rezensionen)

"Sehr zuvorkommend, freundlich, große Auswahl und gute Preise."

- Google Nutzer

"Kompetente Beratung und schnelle Lieferung. Genau der richtige Partner."

- Stammkunde

"Top Service im Lager. Hilfsbereit beim Beladen."

- Handwerksbetrieb Müller

Bewertung schreiben
{/* HISTORY */}

Über uns

Wachstum durch Beständigkeit.

Was 1971 als Niederlassung begann, ist heute ein fester Bestandteil der regionalen Bauwirtschaft.

{historyData.map((item, i) => (
{item.year}

{item.text}

))}
)} {/* VIEW: TROCKENBAU */} {currentView === 'trockenbau' && (

Trockenbau

Lösungen für Wand, Decke & Boden.

Unser Sortiment

    {["Brandschutz", "Schallschutz", "Akustikdecken", "Technische Elemente"].map((item, i) => (
  • {item}
  • ))}
)} {/* VIEW: ANSPRECHPARTNER */} {currentView === 'ansprechpartner' && (

Ihre Ansprechpartner

Finden Sie den richtigen Experten.

{Object.entries(contactsData).map(([dept, people]) => (

{dept}

{people.map((p, i) => ( ))}
))}
)} {/* VIEW: AUSSTELLUNGEN */} {currentView === 'ausstellungen' && (

Unsere Ausstellungen

Lassen Sie sich inspirieren.

{Object.keys(exhibitions).map(tab => ( ))}
{exhibitions[activeExhibitionTab].map((src, i) => ( ))}
)} {/* VIEW: RATGEBER */} {currentView === 'home' && (

Tipps & Tricks

Ratgeber

{guidesData.map((guide, i) => (

{guide.title}

{guide.desc}

Lesen
))}
)}
{/* FOOTER */}
); }; export default App;