marian/src/pages/Geschaeftskunden.tsx
2026-02-22 16:37:09 +01:00

395 lines
17 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { useEffect, useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { Button } from '@/components/ui/button';
import { Heart, Building, Truck, Shield, Briefcase, TrendingUp, Clock, DollarSign, Users, Phone, Mail, MapPin } from 'lucide-react';
import Layout from '@/components/Layout';
import HeroSlider from '@/components/HeroSlider';
const Geschaeftskunden = () => {
const { t } = useTranslation('geschaeftskunden');
const navigate = useNavigate();
const baseUrl = import.meta.env.BASE_URL;
const assetUrl = (fileName: string) => `${baseUrl}${encodeURI(fileName)}`;
const [focusTopics, setFocusTopics] = useState<
Array<{
id: string;
title: string;
subtitle?: string;
href: string;
image: string;
links: Array<{ title: string; href: string }>;
}>
>([]);
const [showContactForm, setShowContactForm] = useState(false);
useEffect(() => {
const pool = [
{
id: 'flottenversicherung',
title: t('topics.flotten.title', 'Flottenversicherung'),
subtitle: t('topics.flotten.subtitle', 'Optimaler Schutz für Ihren Fuhrpark\nSicher und wirtschaftlich.'),
href: '/geschaeftskunden/flottenversicherung',
image: assetUrl('Geascheaftskunden/iStock-637230106.jpg'),
links: [
{ title: t('topics.flotten.links.management', 'Flottenmanagement'), href: '/geschaeftskunden/flottenversicherung' },
],
},
{
id: 'betriebsrente',
title: t('topics.betriebsrente.title', 'Betriebsrente (BAV)'),
subtitle: 'Altersvorsorge für Ihre Mitarbeiter\nZukunftssichere Lösungen.',
href: '/geschaeftskunden/betriebsrente',
image: assetUrl('Geascheaftskunden/iStock-917884956.jpg'),
links: [
{ title: 'Mitarbeiter-Vorsorge', href: '/geschaeftskunden/betriebsrente' },
],
},
{
id: 'betriebskrankenversicherung',
title: 'Betriebskrankenversicherung',
subtitle: 'Gesundheitsschutz für Ihre Mitarbeiter\nZukunftssicher investieren.',
href: '/geschaeftskunden/betriebskrankenversicherung',
image: assetUrl('Geascheaftskunden/iStock-1134003031.jpg'),
links: [
{ title: 'Mitarbeiter schützen', href: '/geschaeftskunden/betriebskrankenversicherung' },
],
},
{
id: 'vermoegen',
title: t('focus.items.assets', 'Vermögenssicherung'),
subtitle: 'Schützen Sie Ihr Unternehmensvermögen\nZukunftssicher handeln.',
href: '/geschaeftskunden/vermoegen',
image: assetUrl('Geascheaftskunden/iStock-948602744.jpg'),
links: [
{ title: 'Unternehmensvermögen', href: '/geschaeftskunden/vermoegen' },
],
},
{
id: 'gebaeudeversicherung',
title: 'Gebäudeversicherung',
subtitle: 'Schutz für Ihre Unternehmensgebäude\nSicher und umfassend.',
href: '/geschaeftskunden/gebaeudeversicherung',
image: assetUrl('Geascheaftskunden/iStock-115948634.jpg'),
links: [
{ title: 'Gebäude schützen', href: '/geschaeftskunden/gebaeudeversicherung' },
],
},
{
id: 'betriebshaftpflicht',
title: 'Betriebshaftpflicht',
subtitle: 'Schutz vor Haftungsansprüchen\nSicher für Ihr Business.',
href: '/geschaeftskunden/betriebshaftpflicht',
image: assetUrl('Geascheaftskunden/Fotolia_3984526_XS.jpg'),
links: [
{ title: 'Haftpflicht schützen', href: '/geschaeftskunden/betriebshaftpflicht' },
],
},
{
id: 'betriebsunterbrechung',
title: 'Betriebsunterbrechung',
subtitle: 'Absicherung bei Stillstand\nFinanzielle Sicherheit.',
href: '/geschaeftskunden/betriebsunterbrechung',
image: assetUrl('Geascheaftskunden/iStock-940251778.jpg'),
links: [
{ title: 'Stillstand absichern', href: '/geschaeftskunden/betriebsunterbrechung' },
],
},
{
id: 'sachversicherung',
title: t('focus.items.property', 'Sachversicherung'),
subtitle: 'Comprehensive protection for your business assets\nInsure what matters most.',
href: '/geschaeftskunden/sachversicherung',
image: assetUrl('iStock-943842590.jpg'),
links: [
{ title: 'Business property', href: '/geschaeftskunden/sachversicherung' },
],
},
{
id: 'risikoschutz',
title: t('focus.items.risk', 'Risikoschutz'),
subtitle: 'Umfassender Schutz für alle Unternehmensrisiken\nSicher in die Zukunft.',
href: '/geschaeftskunden/risikoschutz',
image: assetUrl('Geascheaftskunden/iStock-694835984.jpg'),
links: [
{ title: 'Risikoanalyse', href: '/geschaeftskunden/risikoschutz' },
],
},
{
id: 'rechtsschutz',
title: 'Rechtsschutz',
subtitle: 'Juristische Absicherung für Ihr Unternehmen\nRechtssicherheit gewähren.',
href: '/geschaeftskunden/rechtsschutz',
image: assetUrl('Geascheaftskunden/iStock-1079882856.jpg'),
links: [
{ title: 'Unternehmens-Rechtsschutz', href: '/geschaeftskunden/rechtsschutz' },
],
},
{
id: 'cyber',
title: 'Cyber-Versicherung',
subtitle: 'Schutz vor digitalen Risiken\nIT-Sicherheit für Ihr Business.',
href: '/geschaeftskunden/cyber',
image: assetUrl('Geascheaftskunden/iStock-922758092.jpg'),
links: [
{ title: 'Details', href: '/geschaeftskunden/cyber' },
{ title: 'Cyber-Schutz', href: '/geschaeftskunden/cyber' },
],
},
{
id: 'umwelt',
title: 'Umwelthaftpflicht',
subtitle: 'Umweltrechtliche Absicherung\nNachhaltig und sicher.',
href: '/geschaeftskunden/umwelt',
image: assetUrl('Geascheaftskunden/iStock-1039705312.jpg'),
links: [
{ title: 'Umweltrisiken', href: '/geschaeftskunden/umwelt' },
{ title: 'Umwelt-Schutz', href: '/geschaeftskunden/umwelt' },
],
},
];
setFocusTopics(
[...pool].sort((a, b) => a.title.localeCompare(b.title, 'de', { sensitivity: 'base' }))
);
}, [t]);
return (
<Layout>
<HeroSlider
slides={[
{
id: 'geschaeftskunden-1',
kicker: t('hero.kicker', 'Versicherungen für Geschäftskunden'),
title: t('hero.title', 'Sicherheit für Ihr Unternehmen.'),
subtitle: t(
'hero.subtitle',
'Professionelle Versicherungsberatung für Unternehmen und Selbstständige individuell, transparent und zuverlässig.'
),
imageUrl: assetUrl('iStock-943842590.jpg'),
imagePosition: 'center',
ctas: [
{ label: t('hero.primaryCta', 'Jetzt beraten lassen'), href: '/contact' },
{ label: t('hero.secondaryCta', 'Alle Leistungen'), href: '/leistungen' },
],
},
]}
/>
<section className="py-16 bg-gradient-to-br from-gray-50 to-blue-50">
<div className="container mx-auto px-4">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-gray-900 mb-4">
Themen für Geschäftskunden
</h2>
<p className="text-xl text-gray-600 max-w-3xl mx-auto">
Die wichtigsten Lösungen für Ihr Unternehmen
</p>
</div>
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto">
{focusTopics.map((item) => (
<div
key={`${item.id}-${item.title}`}
className="group cursor-pointer transform transition-all duration-300 hover:scale-[1.04]"
role="link"
tabIndex={0}
onClick={() => navigate(item.href)}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') navigate(item.href);
}}
>
<div className="relative h-44 md:h-50 overflow-hidden rounded-xl shadow-lg group-hover:shadow-2xl transition-shadow duration-300">
<div
className="absolute inset-0 bg-cover bg-center transform transition-transform duration-500 group-hover:scale-[1.08]"
style={{ backgroundImage: `url(${item.image})` }}
/>
<div className="absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent" />
<div className="absolute bottom-0 left-0 right-0 p-4 text-white">
<div className="text-xl font-bold">{item.title}</div>
{item.subtitle ? (
<div className="mt-1 text-sm text-white/90 whitespace-pre-line">{item.subtitle}</div>
) : null}
</div>
</div>
<div className="mt-4 p-4 bg-white rounded-lg shadow-md">
<div className="space-y-2">
<div className="text-xs uppercase tracking-wide text-gray-500 font-semibold mb-3">Details:</div>
<div className="grid grid-cols-1 gap-2">
{item.links.map((link) => (
<Link
key={`${item.id}-${link.href}-${link.title}`}
to={link.href}
className="text-blue-700 hover:text-blue-900 hover:underline text-sm font-medium transition-colors duration-200 flex items-center group"
onClick={(e) => {
e.stopPropagation();
if (link.href.includes('#')) {
e.preventDefault();
navigate(link.href);
}
}}
>
<span className="w-2 h-2 bg-blue-700 rounded-full mr-2 group-hover:bg-blue-900 transition-colors" />
{link.title}
</Link>
))}
</div>
</div>
</div>
</div>
))}
</div>
</div>
</section>
{/* Benefits Section */}
<section className="py-16 bg-white">
<div className="container mx-auto px-4">
<h2 className="text-3xl font-bold text-center mb-12">
Ihre Vorteile als Geschäftskunde
</h2>
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-8">
<div className="text-center">
<TrendingUp className="w-16 h-16 text-blue-600 mx-auto mb-4" />
<h3 className="text-xl font-semibold mb-3">Wettbewerbsvorteil</h3>
<p className="text-gray-600">Stärken Sie Ihre Marktposition durch optimierten Versicherungsschutz</p>
</div>
<div className="text-center">
<Clock className="w-16 h-16 text-blue-600 mx-auto mb-4" />
<h3 className="text-xl font-semibold mb-3">Zeitersparnis</h3>
<p className="text-gray-600">Effiziente Beratung und Verwaltung aller Versicherungsanliegen</p>
</div>
<div className="text-center">
<DollarSign className="w-16 h-16 text-blue-600 mx-auto mb-4" />
<h3 className="text-xl font-semibold mb-3">Kostenoptimierung</h3>
<p className="text-gray-600">Maßgeschneiderte Lösungen zu besten Konditionen für Ihr Unternehmen</p>
</div>
<div className="text-center">
<Users className="w-16 h-16 text-blue-600 mx-auto mb-4" />
<h3 className="text-xl font-semibold mb-3">Persönliche Beratung</h3>
<p className="text-gray-600">Individuelle Betreuung durch erfahrene Versicherungsexperten</p>
</div>
</div>
</div>
</section>
{/* Geschäftskunden Kontakt Section */}
<div className="bg-gradient-to-r from-blue-600 to-indigo-600 rounded-2xl p-10 text-center text-white shadow-2xl max-w-6xl mx-auto mb-12">
<h2 className="text-3xl md:text-4xl font-bold mb-4">
Kontaktieren Sie uns
</h2>
<p className="text-lg text-blue-100 mb-8 max-w-2xl mx-auto">
Lassen Sie sich unverbindlich zu Ihren Geschäftskunden-Lösungen beraten.
</p>
{/* Buttons - immer sichtbar */}
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<Button
className="bg-white text-blue-600 hover:bg-gray-100 px-8 py-3 text-lg font-semibold shadow-lg"
onClick={() => window.location.href = 'tel:01719864053'}
>
<Phone className="h-5 w-5 mr-2" />
Jetzt anrufen
</Button>
<Button
variant="outline"
className="border-white text-white hover:bg-white hover:text-blue-600 px-8 py-3 text-lg font-semibold"
onClick={() => setShowContactForm(!showContactForm)}
>
<Mail className="h-5 w-5 mr-2" />
Angebot anfordern
</Button>
</div>
{/* Kontaktformular - erst sichtbar beim Klick auf "Angebot anfordern" */}
{showContactForm && (
<div className="mt-8 bg-white/10 backdrop-blur-sm rounded-xl p-6 max-w-2xl mx-auto animate-fade-in">
<h3 className="text-2xl font-bold mb-4">Angebot anfordern</h3>
<form className="space-y-4">
<div className="grid md:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium mb-2">Firma*</label>
<input
type="text"
className="w-full px-4 py-2 rounded-lg bg-white/20 border border-white/30 text-white placeholder-white/70 focus:outline-none focus:ring-2 focus:ring-white/50"
placeholder="Ihr Firmenname"
required
/>
</div>
<div>
<label className="block text-sm font-medium mb-2">Name*</label>
<input
type="text"
className="w-full px-4 py-2 rounded-lg bg-white/20 border border-white/30 text-white placeholder-white/70 focus:outline-none focus:ring-2 focus:ring-white/50"
placeholder="Ihr Name"
required
/>
</div>
</div>
<div className="grid md:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium mb-2">E-Mail*</label>
<input
type="email"
className="w-full px-4 py-2 rounded-lg bg-white/20 border border-white/30 text-white placeholder-white/70 focus:outline-none focus:ring-2 focus:ring-white/50"
placeholder="ihre@email.de"
required
/>
</div>
<div>
<label className="block text-sm font-medium mb-2">Telefon</label>
<input
type="tel"
className="w-full px-4 py-2 rounded-lg bg-white/20 border border-white/30 text-white placeholder-white/70 focus:outline-none focus:ring-2 focus:ring-white/50"
placeholder="0123 456789"
/>
</div>
</div>
<div>
<label className="block text-sm font-medium mb-2">Interessierte Leistungen</label>
<select className="w-full px-4 py-2 rounded-lg bg-white/20 border border-white/30 text-white focus:outline-none focus:ring-2 focus:ring-white/50">
<option value="">Bitte wählen...</option>
<option value="flottenversicherung">Flottenversicherung</option>
<option value="vermoegenssicherung">Vermögenssicherung</option>
<option value="sachversicherung">Sachversicherung</option>
<option value="risikoschutz">Risikoschutz</option>
<option value="betriebshaftpflicht">Betriebshaftpflicht</option>
<option value="betriebsunterbrechung">Betriebsunterbrechung</option>
</select>
</div>
<div>
<label className="block text-sm font-medium mb-2">Nachricht</label>
<textarea
className="w-full px-4 py-2 rounded-lg bg-white/20 border border-white/30 text-white placeholder-white/70 focus:outline-none focus:ring-2 focus:ring-white/50 h-32 resize-none"
placeholder="Ihre Nachricht an uns..."
></textarea>
</div>
<div className="flex gap-4">
<Button
type="submit"
className="bg-white text-blue-600 hover:bg-gray-100 px-6 py-2 font-semibold"
>
Anfrage senden
</Button>
<Button
type="button"
variant="outline"
className="border-white text-white hover:bg-white hover:text-blue-600 px-6 py-2 font-semibold"
onClick={() => setShowContactForm(false)}
>
Abbrechen
</Button>
</div>
</form>
</div>
)}
</div>
</Layout>
);
};
export default Geschaeftskunden;