events, menue oben #deploy

This commit is contained in:
martin 2026-02-08 16:02:41 +01:00
parent d617eceb7b
commit 357e984077
80 changed files with 998 additions and 312 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

View File

@ -1 +1,161 @@
{"hero": {"kicker": "Ihr starker Partner für Sicherheit", "title": "Ihr starker Partner für Sicherheit.", "subtitle": "Unabhängige Versicherung- und Finanzberatung persönlich, verlässlich und auf Ihre Ziele ausgerichtet.", "primaryCta": "Jetzt beraten lassen", "secondaryCta": "Unsere Leistungen"}, "tabs": {"overview": "Philosophie", "leistungen": "Leistungen", "partner": "Partner", "events": "Events", "kontakt": "Kontakt", "team": "Team", "karriere": "Karriere"}}
{
"hero": {
"kicker": "Ihr starker Partner für Sicherheit",
"title": "Ihr starker Partner für Sicherheit.",
"subtitle": "Unabhängige Versicherung- und Finanzberatung persönlich, verlässlich und auf Ihre Ziele ausgerichtet.",
"primaryCta": "Jetzt beraten lassen",
"secondaryCta": "Unsere Leistungen"
},
"tabs": {
"overview": "Philosophie",
"leistungen": "Leistungen",
"partner": "Partner",
"events": "Events",
"kontakt": "Kontakt",
"links": "Links",
"wealth": "Vermögen",
"banks": "Banken",
"team": "Team",
"karriere": "Karriere"
},
"overview": {
"badge": "Seit 1994 an Ihrer Seite",
"title": "Agentur Mizera & Partner",
"subtitle": "Versicherung, Finanzen, Beratung",
"welcomeTitle": "Herzlich willkommen",
"salutation1": "Liebe Kundinnen und Kunden,",
"salutation2": "sehr geehrte Damen und Herren,",
"p1": "Hand aufs Herz: Wann haben Sie sich zuletzt intensiv mit Ihren Versicherungen oder Finanzanlagen beschäftigt sie verglichen oder an Ihre aktuelle Lebenssituation angepasst? Und was haben Sie dadurch in den letzten fünf, zehn oder fünfzehn Jahren tatsächlich erreicht?",
"p2": "Finanzen und Versicherungen sind Themen von großer Bedeutung, denen im Alltag jedoch oft zu wenig Aufmerksamkeit geschenkt wird. Beruf, Familie, Kinder, Hobbys und die täglichen Verpflichtungen lassen dafür kaum Raum. Schnell vergeht eine Woche, ein Monat und schließlich ein ganzes Jahr, ohne dass notwendige Entscheidungen getroffen oder Potenziale genutzt wurden.",
"p3": "Versicherungen sind heute so vielschichtig wie nie zuvor.",
"p4": "Als unabhängiger Versicherungsfachmann (BWV), Makler habe ich zur Auswahl alle bedeutendste und wichtigen Versicherungsgesellschaften für sie. Ein Angebot richtet sich nicht nach meine Interessen sondern zur Ihre Persönliche und Berufliche, Situation, Lebenslage und zur ihre Möglichkeit.",
"p5Title": "Genau hier setze ich an.",
"p5": "Als unabhängiger Versicherungsfachmann (BWV) und Makler unterstütze ich Sie dabei, Ihre Versicherungs- und Finanzlösungen regelmäßig zu überprüfen, sinnvoll anzupassen und strategisch weiterzuentwickeln abgestimmt auf Ihre jeweilige Lebenssituation. Gemeinsam analysieren wir, welche Veränderungen sinnvoll, notwendig oder vorteilhaft sind.",
"p6": "Mein besonderer Schwerpunkt liegt im Bereich der Finanzanlagen. Seit 1994 stehe ich im Dienst meiner Kundinnen und Kunden. Ein entscheidender Vorteil für Sie: Bestehende Verträge müssen bei Anpassungen nicht kostenintensiv gekündigt und neu abgeschlossen werden. Stattdessen prüfen wir effiziente Optimierungen innerhalb Ihrer bestehenden Strukturen.",
"p7": "Informieren Sie sich auf meiner Website über die Themen Finanzen und Versicherungen oder lassen Sie uns Ihre Fragen und Wünsche persönlich besprechen.",
"p8Line1": "Ich freue mich darauf, Sie kompetent und verlässlich zu begleiten.",
"p8Line2": "Gerne stehe ich Ihnen zur Verfügung.",
"signatureName": "Ihr Marian-Adam Mizera",
"signatureLine1": "Versicherungsfachmann (BWV)",
"signatureLine2": "BWV - Berufsbildungswerk der Deutschen Versicherungswirtschaft (BWV) e.V.",
"signatureLine3": "Versicherungsmakler mit Erlaubnis nach § 34d Abs. 1 GewO",
"ctaContact": "Beratung vereinbaren",
"ctaServices": "Leistungen ansehen",
"ctaEvents": "Events",
"imageCaption": "Versicherung, Finanzen und Beratung alles aus einer Hand."
},
"contact": {
"title": "Persönliche Beratung vereinbaren",
"text": "Lassen Sie sich von unseren Experten beraten und finden Sie die optimale Versicherung- und Finanzlösung für Ihre Bedürfnisse.",
"primaryCta": "Beratung vereinbaren",
"secondaryCta": "Kontakt aufnehmen"
},
"wealth": {
"title": "Vermögensverwaltung",
"text": "Wir unterstützen Sie bei der strukturierten Vermögensplanung transparent, unabhängig und an Ihren Zielen ausgerichtet.",
"scopeTitle": "Leistungsumfang (Beispiel)",
"scope": [
"Analyse Ihrer aktuellen Situation (Ziele, Risiko, Laufzeiten)",
"Strategie & Portfolio-Struktur (Diversifikation)",
"Regelmäßige Überprüfung und Anpassung",
"Transparente Kosten- und Produktübersicht"
],
"forWhoTitle": "Für wen? (Beispiel)",
"forWho": [
"Privatkunden mit mittel-/langfristigen Zielen",
"Selbstständige & Unternehmer",
"Familien (Absicherung + Vermögensaufbau)",
"Ruhestandsplanung"
],
"note": "Hinweis: Sobald Sie mir die echten Banken + Links schicken, ersetze ich die Beispielbank-Liste 1:1."
},
"events": {
"title": "Schulungen & Events",
"intro": "Schulungen und Veranstaltungen kombinieren Weiterbildung, IDD-konforme Pflichtstunden und praxisnahen Wissenstransfer speziell für Versicherungsmakler und Finanzberater.",
"focusTitle": "Drei Themen im Fokus:",
"accordionHint": "Klicken Sie auf einen Eintrag, um Details einzublenden.",
"focusItems": [
{
"title": "Weiterbildung & Lernprozesse",
"text": "Strukturierte Schulungen zu aktuellen Markt-, Produkt- und Rechtsthemen."
},
{
"title": "Pflichtstunden / IDD-konforme Weiterbildung",
"text": "Anerkannte Fortbildungen zur Erfüllung der gesetzlichen Weiterbildungspflichten."
},
{
"title": "Berufliche Essenz & Know-how",
"text": "Relevantes Praxiswissen für Beratung, Kundenkommunikation und nachhaltigen Geschäftserfolg."
}
],
"sideImageAlt": "Schulungen und Events",
"sideText": "Ergänzt wird das Angebot durch exklusive Events an besonderen Orten, die Lernen, Austausch und Erlebnis verbinden.",
"apella": {
"imageAlt": "SCHLOSS Hotel Fleesensee 2026",
"location": "SCHLOSS Hotel Fleesensee",
"title": "Apella Jahresauftaktkongress 2026",
"meta": "12. - 17. Januar 2026 • 6 Tage",
"text": "Exklusiver Jahresauftaktkongress der Apella-Gruppe im eleganten SCHLOSS Hotel Fleesensee mit FoFo-Präsentationen und Netzwerk-Events",
"cta": "Zur Bilder-Seite"
},
"facebook": {
"imageAlt": "Facebook Veranstaltungen und Schulungen",
"title": "Alle Veranstaltungen & Schulungen",
"text": "Aktuelle Termine und Hinweise finden Sie auf unserer Facebook-Seite.",
"cta": "Facebook öffnen"
},
"investmenttag": {
"imageAlt": "Investmenttag 08.07.2025",
"location": "DESIGN OFFICES IN ESSEN",
"title": "Investmenttag 08.07.2025",
"text": "Die Symbiose aus KI und Investmenterfahrung"
}
},
"services": {
"introTitle": "Leistungen der Agentur",
"introP1": "Versicherungen sind heute so vielschichtig wie nie zuvor.",
"introP2": "Als unabhängiger Versicherungsfachmann (BWV), Makler habe ich zur Auswahl alle bedeutendste und wichtigen Versicherungsgesellschaften für sie. Ein Angebot richtet sich nicht nach meine Interessen sondern zur Ihre Persönliche und Berufliche, Situation, Lebenslage und zur ihre Möglichkeit.",
"gridTitle": "Unsere Versicherungslösungen",
"iframeTitle": "Leistungen der Agentur",
"cards": {
"kfz": {
"title": "KFZ-Versicherung",
"subtitle": "Umfassende Versicherungslösungen für alle Fahrzeugtypen",
"items": ["Haftpflicht", "Vollkasko", "Teilkasko", "Insassenunfallversicherung"]
},
"property": {
"title": "Sachversicherung",
"subtitle": "Schutz für Ihr Hab und Gut",
"items": ["Hausratversicherung", "Wohngebäudeversicherung", "Rechtsschutz"]
},
"personal": {
"title": "Personenversicherung",
"subtitle": "Absicherung für Sie und Ihre Familie",
"items": ["Lebensversicherung", "Risikolebensversicherung", "Berufsunfähigkeitsversicherung"]
},
"health": {
"title": "Gesundheitsversicherung",
"subtitle": "Ihre Gesundheit optimal abgesichert",
"items": ["Private Krankenversicherung", "Krankenzusatzversicherung", "Pflegezusatzversicherung"]
},
"business": {
"title": "Betriebliche Vorsorge",
"subtitle": "Lösungen für Unternehmen und Mitarbeiter",
"items": ["Betriebliche Altersvorsorge", "Betriebliche Krankenversicherung", "Berufsgruppenlösungen"]
},
"finance": {
"title": "Finanzberatung",
"subtitle": "Strategische Planung für Ihre Ziele",
"items": ["Vermögensaufbau", "Altersvorsorge", "Investmentplanung"]
}
}
},
"partners": {
"title": "Partnerversicherungen",
"externalLinksHint": "Links zu externen Diensten öffnen Seiten Dritter."
},
"investmentHouses": {
"title": "Interner Auftritt der Investmenthäuser für ihre fondsgebundenen Produkte",
"externalLinksHint": "Links zu externen Diensten öffnen Seiten Dritter."
}
}

View File

@ -1 +1,161 @@
{"hero": {"kicker": "Twój silny partner w bezpieczeństwie", "title": "Twój silny partner w bezpieczeństwie.", "subtitle": "Niezależne doradztwo ubezpieczeniowe i finansowe - osobiste, niezawodne i dostosowane do Twoich celów.", "primaryCta": "Skonsultuj się teraz", "secondaryCta": "Nasze usługi"}, "tabs": {"overview": "Filozofia", "leistungen": "Usługi", "partner": "Partnerzy", "events": "Wydarzenia", "kontakt": "Kontakt", "team": "Zespół", "karriere": "Kariera"}}
{
"hero": {
"kicker": "Twój silny partner w bezpieczeństwie",
"title": "Twój silny partner w bezpieczeństwie.",
"subtitle": "Niezależne doradztwo ubezpieczeniowe i finansowe - osobiste, niezawodne i dostosowane do Twoich celów.",
"primaryCta": "Skonsultuj się teraz",
"secondaryCta": "Nasze usługi"
},
"tabs": {
"overview": "Filozofia",
"leistungen": "Usługi",
"partner": "Partnerzy",
"events": "Wydarzenia",
"kontakt": "Kontakt",
"links": "Linki",
"wealth": "Majątek",
"banks": "Banki",
"team": "Zespół",
"karriere": "Kariera"
},
"overview": {
"badge": "Od 1994 roku po Twojej stronie",
"title": "Agentur Mizera & Partner",
"subtitle": "Ubezpieczenia, finanse, doradztwo",
"welcomeTitle": "Serdecznie witamy",
"salutation1": "Drodzy Klienci,",
"salutation2": "Szanowni Państwo,",
"p1": "Szczerze: kiedy ostatnio szczegółowo zajmowałeś/aś się swoimi ubezpieczeniami lub inwestycjami porównywałeś/aś je albo dopasowywałeś/aś do aktualnej sytuacji życiowej? I co realnie osiągnąłeś/aś dzięki temu w ciągu ostatnich pięciu, dziesięciu czy piętnastu lat?",
"p2": "Finanse i ubezpieczenia to tematy o dużym znaczeniu, którym w codziennym życiu często poświęca się zbyt mało uwagi. Praca, rodzina, dzieci, hobby i codzienne obowiązki zostawiają na to niewiele miejsca. Szybko mija tydzień, miesiąc a w końcu cały rok, bez podjęcia potrzebnych decyzji lub wykorzystania możliwości.",
"p3": "Ubezpieczenia są dziś bardziej złożone niż kiedykolwiek.",
"p4": "Jako niezależny specjalista ubezpieczeniowy (BWV) i broker mam do dyspozycji najważniejsze towarzystwa ubezpieczeniowe. Oferta nie jest tworzona pod moje interesy, lecz pod Twoją sytuację prywatną i zawodową, potrzeby i możliwości.",
"p5Title": "Właśnie tutaj wkraczam.",
"p5": "Jako niezależny specjalista ubezpieczeniowy (BWV) i broker wspieram Cię w regularnym przeglądzie, sensownym dopasowaniu oraz strategicznym rozwoju rozwiązań ubezpieczeniowych i finansowych zgodnie z Twoją sytuacją życiową. Wspólnie analizujemy, jakie zmiany są sensowne, konieczne lub korzystne.",
"p6": "Moim szczególnym obszarem jest inwestowanie. Od 1994 roku pracuję dla moich klientów. Ważna korzyść dla Ciebie: przy zmianach nie trzeba kosztownie wypowiadać i zawierać umów od nowa. Zamiast tego szukamy skutecznych optymalizacji w istniejących strukturach.",
"p7": "Zapoznaj się na mojej stronie z tematami finansów i ubezpieczeń albo omówmy Twoje pytania i potrzeby osobiście.",
"p8Line1": "Cieszę się, że mogę towarzyszyć Ci kompetentnie i rzetelnie.",
"p8Line2": "Chętnie jestem do dyspozycji.",
"signatureName": "Twój Marian-Adam Mizera",
"signatureLine1": "Specjalista ubezpieczeniowy (BWV)",
"signatureLine2": "BWV - Berufsbildungswerk der Deutschen Versicherungswirtschaft (BWV) e.V.",
"signatureLine3": "Broker ubezpieczeniowy z zezwoleniem zgodnie z § 34d ust. 1 GewO",
"ctaContact": "Umów konsultację",
"ctaServices": "Zobacz usługi",
"ctaEvents": "Wydarzenia",
"imageCaption": "Ubezpieczenia, finanse i doradztwo wszystko w jednym miejscu."
},
"contact": {
"title": "Umów osobistą konsultację",
"text": "Skonsultuj się z naszymi ekspertami i znajdź optymalne rozwiązanie ubezpieczeniowe i finansowe dopasowane do Twoich potrzeb.",
"primaryCta": "Umów konsultację",
"secondaryCta": "Skontaktuj się"
},
"wealth": {
"title": "Zarządzanie majątkiem",
"text": "Wspieramy Cię w uporządkowanym planowaniu majątku przejrzyście, niezależnie i zgodnie z Twoimi celami.",
"scopeTitle": "Zakres (przykład)",
"scope": [
"Analiza aktualnej sytuacji (cele, ryzyko, horyzont)",
"Strategia i struktura portfela (dywersyfikacja)",
"Regularny przegląd i dostosowania",
"Przejrzysta informacja o kosztach i produktach"
],
"forWhoTitle": "Dla kogo? (przykład)",
"forWho": [
"Klienci indywidualni z celami średnio- i długoterminowymi",
"Samozatrudnieni i przedsiębiorcy",
"Rodziny (ochrona + budowanie majątku)",
"Planowanie emerytury"
],
"note": "Uwaga: gdy prześlesz mi właściwe banki i linki, podmienię listę przykładową 1:1."
},
"events": {
"title": "Szkolenia i wydarzenia",
"intro": "Szkolenia i wydarzenia łączą rozwój, godziny obowiązkowe zgodne z IDD oraz praktyczny transfer wiedzy szczególnie dla brokerów ubezpieczeniowych i doradców finansowych.",
"focusTitle": "Trzy tematy w centrum:",
"accordionHint": "Kliknij pozycję, aby zobaczyć szczegóły.",
"focusItems": [
{
"title": "Rozwój i procesy uczenia",
"text": "Ustrukturyzowane szkolenia z aktualnych tematów rynkowych, produktowych i prawnych."
},
{
"title": "Godziny obowiązkowe / szkolenia zgodne z IDD",
"text": "Uznane szkolenia pomagające spełnić ustawowe obowiązki dokształcania."
},
{
"title": "Esencja zawodowa i know-how",
"text": "Praktyczna wiedza dla doradztwa, komunikacji z klientem i trwałego sukcesu."
}
],
"sideImageAlt": "Szkolenia i wydarzenia",
"sideText": "Ofertę uzupełniają ekskluzywne wydarzenia w wyjątkowych miejscach, łączące naukę, wymianę i doświadczenie.",
"apella": {
"imageAlt": "SCHLOSS Hotel Fleesensee 2026",
"location": "SCHLOSS Hotel Fleesensee",
"title": "Apella kongres otwarcia roku 2026",
"meta": "1217 stycznia 2026 • 6 dni",
"text": "Ekskluzywny kongres otwarcia roku grupy Apella w eleganckim SCHLOSS Hotel Fleesensee z prezentacjami FoFo i wydarzeniami networkingowymi.",
"cta": "Zobacz galerię"
},
"facebook": {
"imageAlt": "Facebook wydarzenia i szkolenia",
"title": "Wszystkie wydarzenia i szkolenia",
"text": "Aktualne terminy i informacje znajdziesz na naszej stronie na Facebooku.",
"cta": "Otwórz Facebook"
},
"investmenttag": {
"imageAlt": "Investmenttag 08.07.2025",
"location": "DESIGN OFFICES W ESSEN",
"title": "Investmenttag 08.07.2025",
"text": "Synergia sztucznej inteligencji i doświadczenia inwestycyjnego"
}
},
"services": {
"introTitle": "Usługi agencji",
"introP1": "Ubezpieczenia są dziś bardziej złożone niż kiedykolwiek.",
"introP2": "Jako niezależny specjalista ubezpieczeniowy (BWV) i broker mam do dyspozycji najważniejsze towarzystwa ubezpieczeniowe. Oferta nie jest tworzona pod moje interesy, lecz pod Twoją sytuację prywatną i zawodową, potrzeby i możliwości.",
"gridTitle": "Nasze rozwiązania ubezpieczeniowe",
"iframeTitle": "Usługi agencji",
"cards": {
"kfz": {
"title": "Ubezpieczenie samochodu",
"subtitle": "Kompleksowe rozwiązania dla wszystkich typów pojazdów",
"items": ["OC", "AC", "Częściowe AC", "Ubezpieczenie NNW pasażerów"]
},
"property": {
"title": "Ubezpieczenia majątkowe",
"subtitle": "Ochrona Twojego mienia",
"items": ["Ubezpieczenie mienia domowego", "Ubezpieczenie budynku", "Ochrona prawna"]
},
"personal": {
"title": "Ubezpieczenia osobowe",
"subtitle": "Zabezpieczenie dla Ciebie i Twojej rodziny",
"items": ["Ubezpieczenie na życie", "Ubezpieczenie terminowe", "Ubezpieczenie niezdolności do pracy"]
},
"health": {
"title": "Ubezpieczenia zdrowotne",
"subtitle": "Twoje zdrowie optymalnie zabezpieczone",
"items": ["Prywatne ubezpieczenie zdrowotne", "Ubezpieczenie dodatkowe", "Ubezpieczenie pielęgnacyjne"]
},
"business": {
"title": "Programy pracownicze",
"subtitle": "Rozwiązania dla firm i pracowników",
"items": ["Pracownicza emerytura", "Pracownicze ubezpieczenie zdrowotne", "Rozwiązania dla grup zawodowych"]
},
"finance": {
"title": "Doradztwo finansowe",
"subtitle": "Strategiczne planowanie Twoich celów",
"items": ["Budowanie majątku", "Emerytura", "Plan inwestycyjny"]
}
}
},
"partners": {
"title": "Ubezpieczyciele partnerscy",
"externalLinksHint": "Linki do zewnętrznych usług otwierają strony podmiotów trzecich."
},
"investmentHouses": {
"title": "Strony inwestycyjnych instytucji (produkty funduszowe)",
"externalLinksHint": "Linki do zewnętrznych usług otwierają strony podmiotów trzecich."
}
}

View File

@ -18,6 +18,7 @@ import Senioren from "./pages/Senioren";
import Geschaeftskunden from "./pages/Geschaeftskunden";
import Finanzen from "./pages/Finanzen";
import Agentur from "./pages/Agentur";
import AgenturEventFleesensee from "./pages/AgenturEventFleesensee";
import Service from "./pages/Service";
import Hausrat from "./pages/hausrat";
import Unfall from "./pages/unfall";
@ -133,6 +134,7 @@ const App = () => {
<Route path="/geschaeftskunden" element={<Geschaeftskunden />} />
<Route path="/finanzen" element={<Finanzen />} />
<Route path="/agentur" element={<Agentur />} />
<Route path="/agentur/events/schloss-hotel-fleesensee" element={<AgenturEventFleesensee />} />
<Route path="/test-agentur" element={<div>Test-Route funktioniert! Agentur-Test</div>} />
<Route path="/service" element={<Service />} />
<Route path="/hausrat" element={<Hausrat />} />

View File

@ -1,7 +1,9 @@
import React from 'react';
import { AlertTriangle } from 'lucide-react';
import { useTranslation } from 'react-i18next';
const Disclaimer = () => {
const { t } = useTranslation('common');
return (
<div className="bg-amber-50/80 border border-amber-200/50">
<div className="container mx-auto px-4 py-6">
@ -9,9 +11,12 @@ const Disclaimer = () => {
<div className="flex items-start gap-3">
<AlertTriangle className="w-6 h-6 text-amber-600 mt-0.5 flex-shrink-0" />
<div className="text-base text-amber-800">
<h4 className="font-semibold mb-2">Wichtiger Hinweis:</h4>
<h4 className="font-semibold mb-2">{t('generalNotice.title', 'Wichtiger Hinweis:')}</h4>
<p>
Die auf diesen Seiten enthaltenen Tipps und Informationen stellen allgemeine, unverbindliche Hinweise zu Versicherungen dar. Es handelt sich um eine private Meinungsäußerung ohne Anspruch auf Richtigkeit, Vollständigkeit oder Haftung und ersetzt keine individuelle Beratung. Maßgeblich sind ausschließlich die jeweiligen Versicherungsbedingungen des Versicherungsunternehmens.
{t(
'generalNotice.text',
'Die auf diesen Seiten enthaltenen Tipps und Informationen stellen allgemeine, unverbindliche Hinweise zu Versicherungen dar. Es handelt sich um eine private Meinungsäußerung ohne Anspruch auf Richtigkeit, Vollständigkeit oder Haftung und ersetzt keine individuelle Beratung. Maßgeblich sind ausschließlich die jeweiligen Versicherungsbedingungen des Versicherungsunternehmens.'
)}
</p>
</div>
</div>

View File

@ -85,6 +85,7 @@ const Footer = () => {
const base = [
{ id: 'home', to: '/', label: tNav('home', 'Startseite'), icon: Home },
{ id: 'contact', to: '/contact#contact', label: tNav('contact', 'Kontakt'), icon: Phone },
{ id: 'events', to: '/agentur?tab=events', label: tNav('events', 'Events'), icon: MessageCircle },
{ id: 'privacy', to: '/datenschutz', label: tNav('privacy', 'Datenschutz'), icon: Shield },
{ id: 'imprint', to: '/impressum', label: tNav('imprint', 'Impressum'), icon: FileText },
{ id: 'car', to: '/kfz', label: tNav('car', 'Kfz-Versicherung'), icon: Truck },

View File

@ -1,7 +1,7 @@
import { useState } from 'react';
import { Link, useLocation, useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { Menu, X, Phone, Home, Shield, FileText, Truck, Users, Search, Accessibility } from 'lucide-react';
import { Menu, X, Phone, Home, Shield, FileText, Truck, Users, Search, Accessibility, MapPin, Calendar } from 'lucide-react';
import { Button } from '@/components/ui/button';
import LanguageSwitcher from '@/components/LanguageSwitcher';
import AccessibilityBar from '@/components/AccessibilityBar';
@ -24,6 +24,61 @@ const Header = () => {
{ name: t('health', 'Gesundheit'), href: '/gesundheitsvorsorge', icon: Shield },
];
const familySubItems = [
{ name: t('health', 'Gesundheit'), href: '/familien-kinder/gesundheit', icon: Shield },
{ name: t('travel', 'Reise'), href: '/familien-kinder/reise', icon: Shield },
{ name: t('prevention', 'Vorsorge'), href: '/familien-kinder/vorsorge', icon: Shield },
];
const seniorSubItems = [
{ name: t('retirementProvision', 'Altersvorsorge'), href: '/senioren-altersvorsorge', icon: Shield },
{ name: t('health', 'Gesundheit'), href: '/senioren-gesundheitsvorsorge', icon: Shield },
{ name: t('riskProtection', 'Risikoschutz'), href: '/senioren-risikoschutz', icon: Shield },
{ name: t('funeralInsurance', 'Sterbegeld'), href: '/senioren-sterbegeldversicherung', icon: Shield },
];
const businessSubItems = [
{ name: t('fleetInsurance', 'Flottenversicherung'), href: '/geschaeftskunden/flottenversicherung', icon: Truck },
{ name: t('companyPension', 'Betriebsrente'), href: '/geschaeftskunden/betriebsrente', icon: FileText },
{ name: t('liabilityInsurance', 'Betriebshaftpflicht'), href: '/geschaeftskunden/betriebshaftpflicht', icon: Shield },
{ name: t('cyberInsurance', 'Cyber-Versicherung'), href: '/geschaeftskunden/cyber-versicherung', icon: Shield },
];
const financeSubItems = [
{ name: t('savingsAccount', 'Tagesgeld'), href: '/tagesgeld', icon: FileText },
{ name: t('investmentSavingsPlan', 'Investmentsparplan'), href: '/investmentsparplan', icon: FileText },
{ name: t('depots', 'Depots'), href: '/depots', icon: FileText },
{ name: t('financing', 'Finanzierung'), href: '/finanzierung', icon: FileText },
];
const agencySubItems = [
{ name: t('philosophy', 'Philosophie'), href: '/agentur?tab=overview', icon: Shield },
{ name: t('events', 'Events'), href: '/agentur?tab=events', icon: Calendar },
{ name: t('partners', 'Partner'), href: '/agentur?tab=philosophie', icon: Users },
{ name: t('wealth', 'Vermögen'), href: '/agentur?tab=vermoegensverwaltung', icon: FileText },
];
const contactSubItems = [
{ name: t('contact', 'Kontakt'), href: '/contact?tab=contact', icon: Phone },
{ name: t('map', 'Karte'), href: '/contact?tab=card', icon: MapPin },
{ name: t('service', 'Service'), href: '/contact?tab=service', icon: Shield },
{ name: t('faq', 'FAQ'), href: '/contact?tab=faq', icon: FileText },
];
const normalizeHrefBasePath = (href: string) => href.split('?')[0].split('#')[0];
const getSubItems = (href: string) => {
const base = normalizeHrefBasePath(href);
if (base === '/privatkunden') return privateSubItems;
if (base === '/familien-kinder') return familySubItems;
if (base === '/senioren') return seniorSubItems;
if (base === '/geschaeftskunden') return businessSubItems;
if (base === '/finanzen') return financeSubItems;
if (base === '/agentur') return agencySubItems;
if (base === '/contact') return contactSubItems;
return null;
};
const navigation = [
{ name: t('home'), href: '/', icon: Home },
{ name: t('privateCustomers'), href: '/privatkunden', icon: Users },
@ -35,13 +90,19 @@ const Header = () => {
const rightMenuItems = [
{ name: t('agency'), href: '/agentur', icon: Shield },
{ name: t('finances'), href: '/finanzen', icon: FileText },
{ name: t('contact'), href: '/contact#contact', icon: Phone },
{ name: t('contact'), href: '/contact?tab=contact', icon: Phone },
];
const searchItems = [
...navigation,
...rightMenuItems,
...privateSubItems,
...familySubItems,
...seniorSubItems,
...businessSubItems,
...financeSubItems,
...agencySubItems,
...contactSubItems,
{ name: t('accidentInsurance', 'Unfall'), href: '/unfall', icon: Shield },
{ name: t('carInsurance', 'KFZ'), href: '/kfz', icon: Truck },
{ name: t('services', 'Leistungen'), href: '/leistungen', icon: FileText },
@ -197,12 +258,13 @@ const Header = () => {
<div className="flex flex-wrap items-center gap-2 min-w-0">
{navigation.map((item) => {
const Icon = item.icon;
const isPrivatkunden = item.href === '/privatkunden';
const isActive = isPrivatkunden
? location.pathname === '/privatkunden' || privateSubItems.some((x) => location.pathname.startsWith(x.href))
: location.pathname === item.href;
const subItems = getSubItems(item.href);
const baseHref = normalizeHrefBasePath(item.href);
const isActive = subItems
? location.pathname === baseHref || subItems.some((x) => location.pathname.startsWith(normalizeHrefBasePath(x.href)))
: location.pathname === baseHref;
if (!isPrivatkunden) {
if (!subItems) {
return (
<Link
key={item.name}
@ -235,12 +297,12 @@ const Header = () => {
<div className="absolute left-0 top-full pt-2 opacity-0 pointer-events-none group-hover:opacity-100 group-hover:pointer-events-auto transition-opacity z-50">
<div className="w-56 rounded-lg border border-gray-200 bg-white shadow-lg overflow-hidden">
{privateSubItems.map((sub) => (
{subItems.map((sub) => (
<Link
key={sub.href}
to={sub.href}
className={`flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors ${
location.pathname.startsWith(sub.href)
location.pathname.startsWith(normalizeHrefBasePath(sub.href))
? 'bg-blue-50 text-blue-700'
: 'text-gray-700 hover:bg-gray-50'
}`}
@ -260,8 +322,13 @@ const Header = () => {
<div className="flex flex-wrap items-center gap-2 shrink-0">
{rightMenuItems.map((item) => {
const Icon = item.icon;
const isActive = location.pathname === item.href;
const subItems = getSubItems(item.href);
const baseHref = normalizeHrefBasePath(item.href);
const isActive = subItems
? location.pathname === baseHref || subItems.some((x) => location.pathname.startsWith(normalizeHrefBasePath(x.href)))
: location.pathname === baseHref;
if (!subItems) {
return (
<Link
key={item.name}
@ -276,6 +343,42 @@ const Header = () => {
<span className="whitespace-nowrap">{item.name}</span>
</Link>
);
}
return (
<div key={item.name} className="relative group">
<Link
to={item.href}
className={`flex items-center space-x-1 px-3 py-2 rounded-md text-sm font-semibold transition-colors ${
isActive
? 'text-blue-600 bg-blue-50'
: 'text-gray-700 hover:text-blue-600 hover:bg-gray-50'
}`}
>
<Icon className="h-5 w-5" strokeWidth={1.25} />
<span className="whitespace-nowrap">{item.name}</span>
</Link>
<div className="absolute left-0 top-full pt-2 opacity-0 pointer-events-none group-hover:opacity-100 group-hover:pointer-events-auto transition-opacity z-50">
<div className="w-56 rounded-lg border border-gray-200 bg-white shadow-lg overflow-hidden">
{subItems.map((sub) => (
<Link
key={sub.href}
to={sub.href}
className={`flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors ${
location.pathname.startsWith(normalizeHrefBasePath(sub.href))
? 'bg-blue-50 text-blue-700'
: 'text-gray-700 hover:bg-gray-50'
}`}
>
<sub.icon className="h-4 w-4" strokeWidth={1.5} />
<span>{sub.name}</span>
</Link>
))}
</div>
</div>
</div>
);
})}
</div>
</div>
@ -305,7 +408,11 @@ const Header = () => {
{[...navigation, ...rightMenuItems].map((item) => {
const Icon = item.icon;
const isActive = location.pathname === item.href;
const subItems = getSubItems(item.href);
const baseHref = normalizeHrefBasePath(item.href);
const isActive = subItems
? location.pathname === baseHref || subItems.some((x) => location.pathname.startsWith(normalizeHrefBasePath(x.href)))
: location.pathname === baseHref;
return (
<div key={item.name}>
@ -322,15 +429,15 @@ const Header = () => {
<span>{item.name}</span>
</Link>
{item.href === '/privatkunden' && (
{subItems && (
<div className="ml-10 mt-1 flex flex-col">
{privateSubItems.map((sub) => (
{subItems.map((sub) => (
<Link
key={sub.href}
to={sub.href}
onClick={() => setIsMenuOpen(false)}
className={`flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-colors ${
location.pathname.startsWith(sub.href)
location.pathname.startsWith(normalizeHrefBasePath(sub.href))
? 'text-blue-600 bg-blue-50'
: 'text-gray-700 hover:text-blue-600 hover:bg-gray-50'
}`}

View File

@ -1,19 +1,50 @@
import { useEffect, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
const LanguageSwitcher = () => {
const { i18n } = useTranslation();
const namespaces = useMemo(() => {
return Array.isArray(i18n.options.ns)
? (i18n.options.ns as string[])
: typeof i18n.options.ns === 'string'
? [i18n.options.ns]
: ['common'];
}, [i18n]);
const didPreloadRef = useRef(false);
const [selected, setSelected] = useState((i18n.language || 'de').slice(0, 2));
useEffect(() => {
setSelected((i18n.language || 'de').slice(0, 2));
}, [i18n.language]);
useEffect(() => {
void i18n.loadLanguages(['de', 'pl']);
}, [i18n]);
useEffect(() => {
if (didPreloadRef.current) return;
didPreloadRef.current = true;
void i18n.loadNamespaces(namespaces);
void i18n.reloadResources(['de', 'pl'], namespaces);
}, [i18n, namespaces]);
const changeLanguage = (lng: string) => {
i18n.changeLanguage(lng);
setSelected(lng);
localStorage.setItem('i18nextLng', lng);
void i18n.changeLanguage(lng);
};
const current = (i18n.language || 'de').slice(0, 2);
const current = selected;
const baseBtn =
'inline-flex items-center gap-2 h-9 px-3 rounded-full border border-gray-200 bg-white text-sm font-semibold transition-colors';
'inline-flex items-center gap-2 h-9 px-3 rounded-full border border-gray-200 bg-white text-sm font-semibold';
const activeBtn = 'bg-blue-50 text-blue-700 border-blue-200';
const inactiveBtn = 'text-gray-700 hover:bg-gray-50';
const activeBtn = 'text-gray-900 border-gray-400 ring-1 ring-gray-300';
const inactiveBtn = 'text-gray-700 hover:bg-gray-50 hover:text-gray-900';
return (
<div className="flex items-center gap-2">

View File

@ -102,7 +102,7 @@ const Layout = ({ children }: LayoutProps) => {
<AccessibilityToggle />
<div className="fixed bottom-6 right-[calc(1rem+140px)] z-50 flex flex-col items-end gap-3 md:right-[calc(1rem+180px)] sm:right-[calc(1rem+90px)]">
<div className="fixed bottom-6 right-[calc(1rem+140px)] z-50 flex flex-col items-end gap-2 md:right-[calc(1rem+180px)] sm:right-[calc(1rem+90px)]">
{showToTop && (
<Button
type="button"
@ -116,10 +116,13 @@ const Layout = ({ children }: LayoutProps) => {
</Button>
)}
<Button asChild className="h-12 rounded-full px-4 bg-blue-600 hover:bg-blue-700 shadow-lg sm:h-9 sm:px-3 sm:text-xs">
<Button
asChild
aria-label={tNav('contact', 'Kontakt')}
className="h-12 w-12 rounded-full bg-blue-600 hover:bg-blue-700 shadow-lg p-0 sm:h-9 sm:w-9"
>
<Link to="/contact#contact">
<Phone className="h-5 w-5 mr-2 sm:h-4 sm:w-4 sm:mr-1" />
<span className="sm:hidden">{tNav('contact', 'Kontakt')}</span>
<Phone className="h-5 w-5 text-white sm:h-4 sm:w-4" />
</Link>
</Button>
</div>

View File

@ -1,15 +1,16 @@
import React, { useState, useEffect } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { Link, useNavigate, useLocation } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { Button } from '@/components/ui/button';
import { Shield, Users, TrendingUp, Clock, DollarSign, MapPin, Phone, Mail, Building, Briefcase, Truck, Star, Car, Home, CheckCircle, HeartPulse, LineChart, Globe, Calendar } from 'lucide-react';
import { Shield, Users, TrendingUp, Clock, DollarSign, MapPin, Phone, Mail, Building, Briefcase, Truck, Star, Car, Home, CheckCircle, HeartPulse, LineChart, Globe, Calendar, ExternalLink } from 'lucide-react';
import Layout from '@/components/Layout';
import HeroSlider from '@/components/HeroSlider';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import GeneralNotice from '@/components/GeneralNotice';
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
const Agentur = () => {
const { t } = useTranslation('agentur');
const { t } = useTranslation(['agentur', 'common']);
const location = useLocation();
const baseUrl = import.meta.env.BASE_URL;
const assetUrl = (fileName: string) => `${baseUrl}${encodeURI(fileName)}`;
@ -17,6 +18,29 @@ const Agentur = () => {
const [activeTab, setActiveTab] = useState('overview');
useEffect(() => {
const params = new URLSearchParams(location.search);
const tab = params.get('tab');
if (
tab &&
[
'overview',
'events',
'philosophie',
'vermoegensverwaltung',
'investmentbanken',
'links',
'leistungen',
'kontakt',
].includes(tab)
) {
setActiveTab(tab);
setTimeout(() => {
document.getElementById('tab-section')?.scrollIntoView({ behavior: 'smooth' });
}, 0);
}
}, [location.search]);
const partnerInsurers: Array<{ name: string; url: string; logoFile?: string }> = [
{ name: 'Allianz', url: 'https://www.allianz.de/', logoFile: 'allianz.svg' },
{ name: 'ARAG', url: 'https://www.arag.de/', logoFile: 'arag.svg' },
@ -101,35 +125,35 @@ const Agentur = () => {
className="relative px-2 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 data-[state=active]:bg-blue-600 data-[state=active]:text-white data-[state=active]:shadow-md data-[state=inactive]:bg-white data-[state=inactive]:text-gray-600 data-[state=inactive]:hover:bg-gray-50 data-[state=inactive]:border border-gray-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 !outline-none !ring-0"
>
<Calendar className="w-4 h-4 mr-1" />
Events
{t('tabs.events', 'Events')}
</TabsTrigger>
<TabsTrigger
value="kontakt"
className="relative px-2 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 data-[state=active]:bg-blue-600 data-[state=active]:text-white data-[state=active]:shadow-md data-[state=inactive]:bg-white data-[state=inactive]:text-gray-600 data-[state=inactive]:hover:bg-gray-50 data-[state=inactive]:border border-gray-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 !outline-none !ring-0"
>
<TrendingUp className="w-4 h-4 mr-1" />
Finanz
{t('tabs.kontakt', 'Kontakt')}
</TabsTrigger>
<TabsTrigger
value="links"
className="relative px-2 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 data-[state=active]:bg-blue-600 data-[state=active]:text-white data-[state=active]:shadow-md data-[state=inactive]:bg-white data-[state=inactive]:text-gray-600 data-[state=inactive]:hover:bg-gray-50 data-[state=inactive]:border border-gray-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 !outline-none !ring-0"
>
<Globe className="w-4 h-4 mr-1" />
Links
{t('tabs.links', 'Links')}
</TabsTrigger>
<TabsTrigger
value="vermoegensverwaltung"
className="relative px-2 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 data-[state=active]:bg-blue-600 data-[state=active]:text-white data-[state=active]:shadow-md data-[state=inactive]:bg-white data-[state=inactive]:text-gray-600 data-[state=inactive]:hover:bg-gray-50 data-[state=inactive]:border border-gray-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 !outline-none !ring-0"
>
<DollarSign className="w-4 h-4 mr-1" />
Vermögen
{t('tabs.wealth', 'Vermögen')}
</TabsTrigger>
<TabsTrigger
value="investmentbanken"
className="relative px-2 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 data-[state=active]:bg-blue-600 data-[state=active]:text-white data-[state=active]:shadow-md data-[state=inactive]:bg-white data-[state=inactive]:text-gray-600 data-[state=inactive]:hover:bg-gray-50 data-[state=inactive]:border border-gray-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 !outline-none !ring-0"
>
<Building className="w-4 h-4 mr-1" />
Banken
{t('tabs.banks', 'Banken')}
</TabsTrigger>
</TabsList>
</div>
@ -139,56 +163,56 @@ const Agentur = () => {
<div>
<div className="inline-flex items-center gap-2 rounded-full bg-blue-50 border border-blue-200 px-3 py-1 text-sm text-blue-800 mb-4">
<Star className="w-4 h-4" />
<span>Seit 1994 an Ihrer Seite</span>
<span>{t('overview.badge', 'Seit 1994 an Ihrer Seite')}</span>
</div>
<h2 className="text-2xl md:text-3xl font-bold text-gray-900 leading-tight">
Agentur Mizera & Partner
<span className="block text-blue-700">Versicherung, Finanzen, Beratung</span>
{t('overview.title', 'Agentur Mizera & Partner')}
<span className="block text-blue-700">
{t('overview.subtitle', 'Versicherung, Finanzen, Beratung')}
</span>
</h2>
<div className="mt-4 text-gray-600 text-lg space-y-4">
<p className="font-semibold text-gray-900">Herzlich willkommen</p>
<p>Liebe Kundinnen und Kunden,</p>
<p>sehr geehrte Damen und Herren,</p>
<p className="font-semibold text-gray-900">{t('overview.welcomeTitle', 'Herzlich willkommen')}</p>
<p>{t('overview.salutation1', 'Liebe Kundinnen und Kunden,')}</p>
<p>{t('overview.salutation2', 'sehr geehrte Damen und Herren,')}</p>
<p>{t('overview.p1')}</p>
<p>{t('overview.p2')}</p>
<p>{t('overview.p3')}</p>
<p>{t('overview.p4')}</p>
<p className="font-semibold text-gray-900">{t('overview.p5Title')}</p>
<p>{t('overview.p5')}</p>
<p>{t('overview.p6')}</p>
<p>{t('overview.p7')}</p>
<p>
Hand aufs Herz: Wann haben Sie sich zuletzt intensiv mit Ihren Versicherungen oder Finanzanlagen beschäftigt sie verglichen oder an Ihre aktuelle Lebenssituation angepasst? Und was haben Sie dadurch in den letzten fünf, zehn oder fünfzehn Jahren tatsächlich erreicht?
</p>
<p>
Finanzen und Versicherungen sind Themen von großer Bedeutung, denen im Alltag jedoch oft zu wenig Aufmerksamkeit geschenkt wird. Beruf, Familie, Kinder, Hobbys und die täglichen Verpflichtungen lassen dafür kaum Raum. Schnell vergeht eine Woche, ein Monat und schließlich ein ganzes Jahr, ohne dass notwendige Entscheidungen getroffen oder Potenziale genutzt wurden.
</p>
<p>Versicherungen sind heute so vielschichtig wie nie zuvor.</p>
<p>
Als unabhängiger Versicherungsfachmann (BWV), Makler habe ich zur Auswahl alle bedeutendste und wichtigen Versicherungsgesellschaften für sie. Ein Angebot richtet sich nicht nach meine Interessen sondern zur Ihre Persönliche und Berufliche, Situation, Lebenslage und zur ihre Möglichkeit.
</p>
<p className="font-semibold text-gray-900">Genau hier setze ich an.</p>
<p>
Als unabhängiger Versicherungsfachmann (BWV) und Makler unterstütze ich Sie dabei, Ihre Versicherungs- und Finanzlösungen regelmäßig zu überprüfen, sinnvoll anzupassen und strategisch weiterzuentwickeln abgestimmt auf Ihre jeweilige Lebenssituation. Gemeinsam analysieren wir, welche Veränderungen sinnvoll, notwendig oder vorteilhaft sind.
</p>
<p>
Mein besonderer Schwerpunkt liegt im Bereich der Finanzanlagen. Seit 1994 stehe ich im Dienst meiner Kundinnen und Kunden. Ein entscheidender Vorteil für Sie: Bestehende Verträge müssen bei Anpassungen nicht kostenintensiv gekündigt und neu abgeschlossen werden. Stattdessen prüfen wir effiziente Optimierungen innerhalb Ihrer bestehenden Strukturen.
</p>
<p>
Informieren Sie sich auf meiner Website über die Themen Finanzen und Versicherungen oder lassen Sie uns Ihre Fragen und Wünsche persönlich besprechen.
</p>
<p>
Ich freue mich darauf, Sie kompetent und verlässlich zu begleiten.
{t('overview.p8Line1')}
<br />
Gerne stehe ich Ihnen zur Verfügung.
{t('overview.p8Line2')}
</p>
<div className="pt-2 text-gray-800">
<p className="font-semibold">Ihr Marian-Adam Mizera</p>
<p>Versicherungsfachmann (BWV)</p>
<p>BWV - Berufsbildungswerk der Deutschen Versicherungswirtschaft (BWV) e.V.</p>
<p>Versicherungsmakler mit Erlaubnis nach § 34d Abs. 1 GewO</p>
<p className="font-semibold">{t('overview.signatureName', 'Ihr Marian-Adam Mizera')}</p>
<p>{t('overview.signatureLine1', 'Versicherungsfachmann (BWV)')}</p>
<p>{t('overview.signatureLine2', 'BWV - Berufsbildungswerk der Deutschen Versicherungswirtschaft (BWV) e.V.')}</p>
<p>{t('overview.signatureLine3', 'Versicherungsmakler mit Erlaubnis nach § 34d Abs. 1 GewO')}</p>
</div>
</div>
<div className="mt-6 flex flex-col sm:flex-row gap-3">
<Button asChild className="bg-blue-700 hover:bg-blue-800">
<Link to="/contact">Beratung vereinbaren</Link>
<Link to="/contact">{t('overview.ctaContact', 'Beratung vereinbaren')}</Link>
</Button>
<Button asChild variant="outline" className="border-gray-300">
<Link to="/leistungen">Leistungen ansehen</Link>
<Link to="/leistungen">{t('overview.ctaServices', 'Leistungen ansehen')}</Link>
</Button>
<Button
variant="outline"
className="border-gray-300"
onClick={() => {
setActiveTab('events');
document.getElementById('tab-section')?.scrollIntoView({ behavior: 'smooth' });
}}
>
{t('overview.ctaEvents', 'Events')}
</Button>
</div>
</div>
@ -206,7 +230,7 @@ const Agentur = () => {
/>
<div className="p-5">
<div className="mt-2 text-sm text-gray-600">
Versicherung, Finanzen und Beratung alles aus einer Hand.
{t('overview.imageCaption', 'Versicherung, Finanzen und Beratung alles aus einer Hand.')}
</div>
</div>
</div>
@ -216,18 +240,16 @@ const Agentur = () => {
<TabsContent value="leistungen" className="p-4 md:p-6 h-[75vh] overflow-y-auto">
<div className="mb-4 rounded-lg border border-gray-200 bg-gray-50 p-4">
<div className="text-lg font-semibold text-gray-900 mb-2">Leistungen der Agentur</div>
<div className="text-lg font-semibold text-gray-900 mb-2">{t('services.introTitle')}</div>
<div className="text-gray-700 space-y-2">
<p>Versicherungen sind heute so vielschichtig wie nie zuvor.</p>
<p>
Als unabhängiger Versicherungsfachmann (BWV), Makler habe ich zur Auswahl alle bedeutendste und wichtigen Versicherungsgesellschaften für sie. Ein Angebot richtet sich nicht nach meine Interessen sondern zur Ihre Persönliche und Berufliche, Situation, Lebenslage und zur ihre Möglichkeit.
</p>
<p>{t('services.introP1')}</p>
<p>{t('services.introP2')}</p>
</div>
</div>
<div className="mt-8">
<h2 className="text-2xl md:text-3xl font-bold text-gray-900 text-center">
Unsere Versicherungslösungen
{t('services.gridTitle')}
</h2>
<div className="mt-8 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@ -235,12 +257,12 @@ const Agentur = () => {
<div className="w-12 h-12 rounded-lg bg-blue-50 border border-blue-100 flex items-center justify-center mb-4">
<Car className="w-6 h-6 text-blue-700" />
</div>
<div className="text-lg font-semibold text-gray-900">KFZ-Versicherung</div>
<div className="mt-2 text-sm text-gray-600">
Umfassende Versicherungslösungen für alle Fahrzeugtypen
</div>
<div className="text-lg font-semibold text-gray-900">{t('services.cards.kfz.title')}</div>
<div className="mt-2 text-sm text-gray-600">{t('services.cards.kfz.subtitle')}</div>
<div className="mt-4 space-y-2">
{['Haftpflicht', 'Vollkasko', 'Teilkasko', 'Insassenunfallversicherung'].map((item) => (
{(
t('services.cards.kfz.items', { returnObjects: true }) as unknown as string[]
).map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
<span>{item}</span>
@ -253,10 +275,12 @@ const Agentur = () => {
<div className="w-12 h-12 rounded-lg bg-blue-50 border border-blue-100 flex items-center justify-center mb-4">
<Home className="w-6 h-6 text-blue-700" />
</div>
<div className="text-lg font-semibold text-gray-900">Sachversicherung</div>
<div className="mt-2 text-sm text-gray-600">Schutz für Ihr Hab und Gut</div>
<div className="text-lg font-semibold text-gray-900">{t('services.cards.property.title')}</div>
<div className="mt-2 text-sm text-gray-600">{t('services.cards.property.subtitle')}</div>
<div className="mt-4 space-y-2">
{['Hausratversicherung', 'Wohngebäudeversicherung', 'Rechtsschutz'].map((item) => (
{(
t('services.cards.property.items', { returnObjects: true }) as unknown as string[]
).map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
<span>{item}</span>
@ -269,10 +293,12 @@ const Agentur = () => {
<div className="w-12 h-12 rounded-lg bg-blue-50 border border-blue-100 flex items-center justify-center mb-4">
<Users className="w-6 h-6 text-blue-700" />
</div>
<div className="text-lg font-semibold text-gray-900">Personenversicherung</div>
<div className="mt-2 text-sm text-gray-600">Absicherung für Sie und Ihre Familie</div>
<div className="text-lg font-semibold text-gray-900">{t('services.cards.personal.title')}</div>
<div className="mt-2 text-sm text-gray-600">{t('services.cards.personal.subtitle')}</div>
<div className="mt-4 space-y-2">
{['Lebensversicherung', 'Risikolebensversicherung', 'Berufsunfähigkeitsversicherung'].map((item) => (
{(
t('services.cards.personal.items', { returnObjects: true }) as unknown as string[]
).map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
<span>{item}</span>
@ -285,10 +311,12 @@ const Agentur = () => {
<div className="w-12 h-12 rounded-lg bg-blue-50 border border-blue-100 flex items-center justify-center mb-4">
<HeartPulse className="w-6 h-6 text-blue-700" />
</div>
<div className="text-lg font-semibold text-gray-900">Gesundheitsversicherung</div>
<div className="mt-2 text-sm text-gray-600">Ihre Gesundheit optimal abgesichert</div>
<div className="text-lg font-semibold text-gray-900">{t('services.cards.health.title')}</div>
<div className="mt-2 text-sm text-gray-600">{t('services.cards.health.subtitle')}</div>
<div className="mt-4 space-y-2">
{['Private Krankenversicherung', 'Krankenzusatzversicherung', 'Pflegezusatzversicherung'].map((item) => (
{(
t('services.cards.health.items', { returnObjects: true }) as unknown as string[]
).map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
<span>{item}</span>
@ -301,10 +329,12 @@ const Agentur = () => {
<div className="w-12 h-12 rounded-lg bg-blue-50 border border-blue-100 flex items-center justify-center mb-4">
<Briefcase className="w-6 h-6 text-blue-700" />
</div>
<div className="text-lg font-semibold text-gray-900">Betriebliche Vorsorge</div>
<div className="mt-2 text-sm text-gray-600">Lösungen für Unternehmen und Mitarbeiter</div>
<div className="text-lg font-semibold text-gray-900">{t('services.cards.business.title')}</div>
<div className="mt-2 text-sm text-gray-600">{t('services.cards.business.subtitle')}</div>
<div className="mt-4 space-y-2">
{['Betriebliche Altersvorsorge', 'Betriebliche Krankenversicherung', 'Berufsgruppenlösungen'].map((item) => (
{(
t('services.cards.business.items', { returnObjects: true }) as unknown as string[]
).map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
<span>{item}</span>
@ -317,10 +347,12 @@ const Agentur = () => {
<div className="w-12 h-12 rounded-lg bg-blue-50 border border-blue-100 flex items-center justify-center mb-4">
<LineChart className="w-6 h-6 text-blue-700" />
</div>
<div className="text-lg font-semibold text-gray-900">Finanzberatung</div>
<div className="mt-2 text-sm text-gray-600">Strategische Planung für Ihre Ziele</div>
<div className="text-lg font-semibold text-gray-900">{t('services.cards.finance.title')}</div>
<div className="mt-2 text-sm text-gray-600">{t('services.cards.finance.subtitle')}</div>
<div className="mt-4 space-y-2">
{['Vermögensaufbau', 'Altersvorsorge', 'Investmentplanung'].map((item) => (
{(
t('services.cards.finance.items', { returnObjects: true }) as unknown as string[]
).map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
<span>{item}</span>
@ -332,7 +364,7 @@ const Agentur = () => {
</div>
<iframe
title="Leistungen der Agentur"
title={t('services.iframeTitle', 'Leistungen der Agentur')}
src="/leistungen?embed=1"
className="w-full h-[520px] rounded-lg border border-gray-200 bg-white"
loading="lazy"
@ -342,7 +374,7 @@ const Agentur = () => {
<TabsContent value="philosophie" className="p-4 md:p-6">
<div className="mb-2">
<h2 className="text-2xl font-semibold text-gray-900 mb-6 text-center">
Partnerversicherungen
{t('partners.title')}
</h2>
<div className="bg-blue-50 rounded-lg p-6 md:p-8">
@ -372,20 +404,20 @@ const Agentur = () => {
</div>
<div className="min-w-0">
<div className="font-semibold text-gray-900 truncate">{partner.name}</div>
<div className="text-xs text-gray-600 truncate">Website öffnen</div>
<div className="text-xs text-gray-600 truncate">{t('common:openWebsite', 'Website öffnen')}</div>
</div>
</a>
))}
</div>
<div className="mt-4 text-center text-sm text-gray-600">
Links zu externen Diensten öffnen Seiten Dritter.
{t('partners.externalLinksHint')}
</div>
</div>
<div className="mt-8">
<h2 className="text-2xl font-semibold text-gray-900 mb-6 text-center">
Interner Auftritt der Investmenthäuser für ihre fondsgebundenen Produkte
{t('investmentHouses.title')}
</h2>
<div className="bg-green-50 rounded-lg p-6 md:p-8">
@ -429,14 +461,14 @@ const Agentur = () => {
</div>
<div className="min-w-0">
<div className="font-semibold text-gray-900 truncate">{partner.name}</div>
<div className="text-xs text-gray-600 truncate">Website öffnen</div>
<div className="text-xs text-gray-600 truncate">{t('common:openWebsite', 'Website öffnen')}</div>
</div>
</a>
))}
</div>
<div className="mt-4 text-center text-sm text-gray-600">
Links zu externen Diensten öffnen Seiten Dritter.
{t('investmentHouses.externalLinksHint')}
</div>
</div>
</div>
@ -445,18 +477,16 @@ const Agentur = () => {
<TabsContent value="kontakt" className="p-4 md:p-6">
<div className="bg-gray-100 rounded-lg p-8 text-center">
<h2 className="text-2xl font-semibold text-gray-900 mb-4">Persönliche Beratung vereinbaren</h2>
<p className="text-gray-600 mb-6">
Lassen Sie sich von unseren Experten beraten und finden Sie die optimale Versicherung- und Finanzlösung für Ihre Bedürfnisse.
</p>
<h2 className="text-2xl font-semibold text-gray-900 mb-4">{t('contact.title')}</h2>
<p className="text-gray-600 mb-6">{t('contact.text')}</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<Button className="bg-blue-600 text-white hover:bg-blue-700">
<Phone className="h-5 w-5 mr-2" />
Beratung vereinbaren
{t('contact.primaryCta')}
</Button>
<Button variant="outline" className="border-blue-600 text-blue-600 hover:bg-blue-50">
<Mail className="h-5 w-5 mr-2" />
Kontakt aufnehmen
{t('contact.secondaryCta')}
</Button>
</div>
</div>
@ -473,20 +503,18 @@ const Agentur = () => {
<TabsContent value="vermoegensverwaltung" className="p-4 md:p-6">
<div className="rounded-lg border border-gray-200 bg-gray-50 p-6">
<h2 className="text-2xl font-semibold text-gray-900 mb-2">Vermögensverwaltung</h2>
<p className="text-gray-700">
Mustertext: Wir unterstützen Sie bei der strukturierten Vermögensplanung transparent, unabhängig und an Ihren Zielen ausgerichtet.
</p>
<h2 className="text-2xl font-semibold text-gray-900 mb-2">{t('wealth.title')}</h2>
<p className="text-gray-700">{t('wealth.text')}</p>
<div className="mt-6 grid grid-cols-1 md:grid-cols-2 gap-4">
<div className="rounded-lg border border-gray-200 bg-white p-4">
<div className="font-semibold text-gray-900 mb-2">Leistungsumfang (Beispiel)</div>
<div className="font-semibold text-gray-900 mb-2">{t('wealth.scopeTitle')}</div>
<div className="space-y-2">
{[
'Analyse Ihrer aktuellen Situation (Ziele, Risiko, Laufzeiten)',
'Strategie & Portfolio-Struktur (Diversifikation)',
'Regelmäßige Überprüfung und Anpassung',
'Transparente Kosten- und Produktübersicht',
t('wealth.scope.0'),
t('wealth.scope.1'),
t('wealth.scope.2'),
t('wealth.scope.3'),
].map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
@ -497,13 +525,13 @@ const Agentur = () => {
</div>
<div className="rounded-lg border border-gray-200 bg-white p-4">
<div className="font-semibold text-gray-900 mb-2">Für wen? (Beispiel)</div>
<div className="font-semibold text-gray-900 mb-2">{t('wealth.forWhoTitle')}</div>
<div className="space-y-2">
{[
'Privatkunden mit mittel-/langfristigen Zielen',
'Selbstständige & Unternehmer',
'Familien (Absicherung + Vermögensaufbau)',
'Ruhestandsplanung',
t('wealth.forWho.0'),
t('wealth.forWho.1'),
t('wealth.forWho.2'),
t('wealth.forWho.3'),
].map((item) => (
<div key={item} className="flex items-start gap-2 text-sm text-gray-700">
<CheckCircle className="w-4 h-4 text-green-600 mt-0.5 flex-shrink-0" />
@ -514,30 +542,6 @@ const Agentur = () => {
</div>
</div>
<div className="mt-6 rounded-lg border border-blue-200 bg-blue-50 p-4">
<div className="font-semibold text-gray-900">Kontakt / Muster-CTA</div>
<div className="text-sm text-gray-700 mt-1">
Vereinbaren Sie einen Termin wir besprechen Ziele, Zeitrahmen und passende Lösungen.
</div>
<div className="mt-3 flex flex-col sm:flex-row gap-3">
<Button asChild className="bg-blue-700 hover:bg-blue-800">
<Link to="/contact">Beratung vereinbaren</Link>
</Button>
<Button asChild variant="outline" className="border-gray-300">
<Link to="/leistungen">Leistungen ansehen</Link>
</Button>
</div>
</div>
</div>
</TabsContent>
<TabsContent value="investmentbanken" className="p-4 md:p-6">
<div className="rounded-lg border border-gray-200 bg-gray-50 p-6">
<h2 className="text-2xl font-semibold text-gray-900 mb-2">Investment-Banken</h2>
<p className="text-gray-700">
Mustertext: Hier kann eine alphabetische Liste Ihrer Partnerbanken mit Links erscheinen.
</p>
<div className="mt-6 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
{[
{ name: 'Commerzbank', url: 'https://www.commerzbank.de/' },
@ -552,15 +556,15 @@ const Agentur = () => {
>
<div className="min-w-0">
<div className="font-semibold text-gray-900 truncate">{bank.name}</div>
<div className="text-xs text-gray-600 truncate">Website öffnen</div>
<div className="text-xs text-gray-600 truncate">{t('common:openWebsite', 'Website öffnen')}</div>
</div>
<div className="text-xs font-semibold text-blue-700">LINK</div>
<div className="text-xs font-semibold text-blue-700">{t('common:link', 'LINK')}</div>
</a>
))}
</div>
<div className="mt-6 text-sm text-gray-600">
Hinweis: Sobald Sie mir die echten Banken + Links schicken, ersetze ich die Beispielbank-Liste 1:1.
{t('wealth.note')}
</div>
</div>
</TabsContent>
@ -569,159 +573,179 @@ const Agentur = () => {
<div className="space-y-8">
<div className="text-center">
<Calendar className="h-12 w-12 text-blue-600 mx-auto mb-4" />
<h3 className="text-2xl font-bold text-gray-900 mb-4">Schulungen & Events</h3>
<p className="text-gray-600 mb-8">
Besuchen Sie unsere exklusiven Schulungen und Events an historischen Orten wie dem SCHLOSS Hotel Fleesensee
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div className="rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow bg-white">
<div className="aspect-video bg-gray-100">
<img
src={assetUrl('iStock-928087944.jpg')}
alt="SCHLOSS Hotel Fleesensee 2026"
className="w-full h-full object-cover"
/>
</div>
<div className="p-4">
<div className="flex items-center gap-2 text-sm text-blue-600 font-semibold mb-2">
<MapPin className="w-4 h-4" />
SCHLOSS Hotel Fleesensee
</div>
<h4 className="text-lg font-semibold text-gray-900 mb-1">Apella Jahresauftaktkongress 2026</h4>
<p className="text-sm text-gray-600 mb-4">12. - 17. Januar 2026 6 Tage</p>
<p className="text-gray-600 mb-4">
Exklusiver Jahresauftaktkongress der Apella-Gruppe im eleganten SCHLOSS Hotel Fleesensee mit FoFo-Präsentationen und Netzwerk-Events
</p>
<div className="space-y-2 mb-4">
<div className="flex items-center gap-2 text-sm text-gray-600">
<Users className="w-4 h-4" />
<span>Max. 150 Teilnehmer</span>
</div>
<div className="flex items-center gap-2 text-sm text-gray-600">
<Clock className="w-4 h-4" />
<span>9:00 - 20:00 Uhr</span>
</div>
</div>
<Button className="w-full bg-blue-600 hover:bg-blue-700 text-white">
Jetzt anmelden
</Button>
</div>
</div>
<div className="rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow bg-white">
<div className="aspect-video bg-gray-100">
<img
src={assetUrl('iStock-957363908.jpg')}
alt="FoFo Presentation"
className="w-full h-full object-cover"
/>
</div>
<div className="p-4">
<div className="flex items-center gap-2 text-sm text-blue-600 font-semibold mb-2">
<MapPin className="w-4 h-4" />
SCHLOSS Hotel Fleesensee
</div>
<h4 className="text-lg font-semibold text-gray-900 mb-1">FoFo-Präsentation</h4>
<p className="text-sm text-gray-600 mb-4">13. Januar 2026 1 Tag</p>
<p className="text-gray-600 mb-4">
Professionelle FoFo-Präsentationen (Follow-up/Follow-on) mit neuesten Markteinblicken und Strategien
</p>
<div className="space-y-2 mb-4">
<div className="flex items-center gap-2 text-sm text-gray-600">
<Users className="w-4 h-4" />
<span>Max. 50 Teilnehmer</span>
</div>
<div className="flex items-center gap-2 text-sm text-gray-600">
<Clock className="w-4 h-4" />
<span>14:00 - 18:00 Uhr</span>
</div>
</div>
<Button className="w-full bg-blue-600 hover:bg-blue-700 text-white">
Jetzt anmelden
</Button>
</div>
</div>
<div className="rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow bg-white">
<div className="aspect-video bg-gray-100">
<img
src={assetUrl('iStock-948602744.jpg')}
alt="Networking Event"
className="w-full h-full object-cover"
/>
</div>
<div className="p-4">
<div className="flex items-center gap-2 text-sm text-blue-600 font-semibold mb-2">
<MapPin className="w-4 h-4" />
SCHLOSS Hotel Fleesensee
</div>
<h4 className="text-lg font-semibold text-gray-900 mb-1">Networking-Event</h4>
<p className="text-sm text-gray-600 mb-4">15. Januar 2026 1 Abend</p>
<p className="text-gray-600 mb-4">
Exklusives Networking-Event mit Partnern und Kunden im eleganten Ambiente des SCHLOSS Hotels Fleesensee
</p>
<div className="space-y-2 mb-4">
<div className="flex items-center gap-2 text-sm text-gray-600">
<Users className="w-4 h-4" />
<span>Max. 80 Teilnehmer</span>
</div>
<div className="flex items-center gap-2 text-sm text-gray-600">
<Clock className="w-4 h-4" />
<span>18:00 - 22:00 Uhr</span>
</div>
</div>
<Button className="w-full bg-blue-600 hover:bg-blue-700 text-white">
Jetzt anmelden
</Button>
</div>
</div>
</div>
<div className="bg-white rounded-xl border border-gray-200 p-6">
<h4 className="text-xl font-bold text-gray-900 mb-4">Warum SCHLOSS Hotel Fleesensee?</h4>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<h3 className="text-2xl font-bold text-gray-900 mb-4">{t('events.title')}</h3>
<div className="text-gray-600 mb-8 max-w-5xl mx-auto">
<div className="grid grid-cols-1 md:grid-cols-[1fr_360px] gap-6 md:gap-8 items-start text-left">
<div>
<p className="text-gray-600 mb-4">
Das elegante SCHLOSS Hotel Fleesensee bietet die perfekte Kulisse für unsere Apella Jahresauftaktkongresse:
<p>
{t('events.intro')}
</p>
<ul className="space-y-2 text-gray-600">
<li className="flex items-start gap-2">
<CheckCircle className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<span>Exklusive Location am Fleesensee</span>
</li>
<li className="flex items-start gap-2">
<CheckCircle className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<span>Professionelle FoFo-Präsentationen</span>
</li>
<li className="flex items-start gap-2">
<CheckCircle className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<span>High-Level Networking</span>
</li>
</ul>
<p className="mt-3">{t('events.focusTitle')}</p>
<div className="mt-3 rounded-lg border border-gray-200 bg-white overflow-hidden">
<div className="px-4 md:px-6 py-3 border-b border-gray-200 bg-gray-50">
<div className="text-sm text-gray-600">{t('events.accordionHint')}</div>
</div>
<div>
<div className="rounded-lg border border-gray-200 bg-gray-50 p-4">
<div className="flex items-center gap-2 text-sm font-semibold text-gray-900 mb-2">
<Calendar className="w-4 h-4 text-blue-600" />
Nächster Termin
<Accordion type="single" collapsible className="w-full">
<AccordionItem value="weiterbildung" className="border-b border-gray-200 data-[state=open]:bg-blue-50">
<AccordionTrigger className="px-4 md:px-6 py-3 hover:no-underline text-left">
<span className="text-sm md:text-base text-gray-900">
<span className="text-blue-700 font-semibold mr-2">»</span>
{t('events.focusItems.0.title')}
</span>
</AccordionTrigger>
<AccordionContent className="px-4 md:px-6">
<div className="text-sm text-gray-700 pb-4">
{t('events.focusItems.0.text')}
</div>
</AccordionContent>
</AccordionItem>
<AccordionItem value="pflichtstunden" className="border-b border-gray-200 data-[state=open]:bg-blue-50">
<AccordionTrigger className="px-4 md:px-6 py-3 hover:no-underline text-left">
<span className="text-sm md:text-base text-gray-900">
<span className="text-blue-700 font-semibold mr-2">»</span>
{t('events.focusItems.1.title')}
</span>
</AccordionTrigger>
<AccordionContent className="px-4 md:px-6">
<div className="text-sm text-gray-700 pb-4">
{t('events.focusItems.1.text')}
</div>
</AccordionContent>
</AccordionItem>
<AccordionItem value="knowhow" className="border-b border-gray-200 data-[state=open]:bg-blue-50">
<AccordionTrigger className="px-4 md:px-6 py-3 hover:no-underline text-left">
<span className="text-sm md:text-base text-gray-900">
<span className="text-blue-700 font-semibold mr-2">»</span>
{t('events.focusItems.2.title')}
</span>
</AccordionTrigger>
<AccordionContent className="px-4 md:px-6">
<div className="text-sm text-gray-700 pb-4">
{t('events.focusItems.2.text')}
</div>
</AccordionContent>
</AccordionItem>
</Accordion>
</div>
</div>
<div className="rounded-lg border border-gray-200 bg-white overflow-hidden shadow-sm">
<div className="aspect-[4/3] bg-gray-100">
<img
src={assetUrl('Fotolia_551208_XS.jpg')}
alt={t('events.sideImageAlt', 'Schulungen und Events')}
className="w-full h-full object-cover"
loading="lazy"
/>
</div>
<div className="px-4 py-3 border-t border-gray-200 bg-gray-50">
<div className="text-sm text-gray-600">
{t('events.sideText')}
</div>
</div>
</div>
</div>
</div>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
<div className="w-full rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow bg-white">
<div className="aspect-video bg-gray-100">
<img
src={assetUrl('Investmenttag 08.07.2025/518150959_1326383976154647_3647200665327233005_n.jpg')}
alt={t('events.investmenttag.imageAlt', 'Investmenttag 08.07.2025')}
className="w-full h-full object-cover"
loading="lazy"
/>
</div>
<div className="p-4">
<div className="flex flex-wrap items-center gap-3 text-sm text-blue-600 font-semibold mb-2">
<a
href="https://www.google.com/maps/search/?api=1&query=DESIGN%20OFFICES%20Essen"
target="_blank"
rel="noreferrer"
className="inline-flex items-center gap-2 hover:underline"
>
<MapPin className="w-4 h-4" />
{t('events.investmenttag.location', 'DESIGN OFFICES IN ESSEN')}
</a>
<span className="inline-flex items-center gap-2 text-gray-600 font-normal">
<Calendar className="w-4 h-4" />
08.07.2025
</span>
</div>
<h4 className="text-lg font-semibold text-gray-900 mb-1">{t('events.investmenttag.title', 'Investmenttag 08.07.2025')}</h4>
<p className="text-gray-600">
<strong>12. - 17. Januar 2026</strong><br />
Apella Jahresauftaktkongress 2026<br />
<span className="text-blue-600">Noch 45 Plätze frei</span>
{t('events.investmenttag.text', 'Die Symbiose aus KI und Investmenterfahrung')}
</p>
</div>
</div>
<div className="w-full rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow bg-white">
<div className="aspect-video bg-gray-100">
<img
src={assetUrl('Apella JAK 2026 - Netz/Schloss-Fleesensee-Tor-16-9_01.jpg')}
alt={t('events.apella.imageAlt', 'SCHLOSS Hotel Fleesensee 2026')}
className="w-full h-full object-cover"
/>
</div>
<div className="p-4">
<a
href="https://www.google.com/maps/search/?api=1&query=SCHLOSS%20Hotel%20Fleesensee"
target="_blank"
rel="noreferrer"
className="flex items-center gap-2 text-sm text-blue-600 font-semibold mb-2 hover:underline"
>
<MapPin className="w-4 h-4" />
{t('events.apella.location', 'SCHLOSS Hotel Fleesensee')}
</a>
<h4 className="text-lg font-semibold text-gray-900 mb-1">{t('events.apella.title')}</h4>
<p className="text-sm text-gray-600 mb-4">{t('events.apella.meta')}</p>
<p className="text-gray-600 mb-4">
{t('events.apella.text')}
</p>
<Button asChild variant="outline" className="w-full border-gray-300 bg-white hover:bg-gray-50">
<Link to="/agentur/events/schloss-hotel-fleesensee">{t('events.apella.cta')}</Link>
</Button>
</div>
</div>
<div className="w-full rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-shadow bg-white">
<div className="aspect-video bg-gray-100">
<img
src={assetUrl('Finanzen/iStock-899471458.jpg')}
alt={t('events.facebook.imageAlt', 'Facebook Veranstaltungen und Schulungen')}
className="w-full h-full object-cover"
loading="lazy"
/>
</div>
<div className="p-4">
<div className="text-sm text-gray-700">
<div className="font-semibold text-gray-900">{t('events.facebook.title')}</div>
<div className="mt-1">{t('events.facebook.text')}</div>
</div>
<div className="mt-4">
<Button asChild variant="outline" className="w-full border-gray-300 bg-white hover:bg-gray-50">
<a
href="https://www.facebook.com/profile.php?id=100063491712944"
target="_blank"
rel="noreferrer"
>
{t('events.facebook.cta')}
<ExternalLink className="h-4 w-4 ml-2" />
</a>
</Button>
</div>
</div>
</div>
</div>
</div>
</TabsContent>
<div className="p-4 md:p-6">
<GeneralNotice className="rounded-md border border-gray-200 bg-white p-4" />
</div>
</Tabs>
</div>
</div>

View File

@ -0,0 +1,151 @@
import { Link } from 'react-router-dom';
import Layout from '@/components/Layout';
import { Button } from '@/components/ui/button';
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from '@/components/ui/carousel';
import { ArrowLeft, Calendar, MapPin } from 'lucide-react';
const AgenturEventFleesensee = () => {
const baseUrl = import.meta.env.BASE_URL;
const assetUrl = (fileName: string) => `${baseUrl}${encodeURI(fileName)}`;
const fleesenseeNetworkingGallery = [
'IMG_20260112_122240.jpg',
'IMG_20260112_135738.jpg',
'IMG_20260112_155035.jpg',
'IMG_20260112_160838.jpg',
'IMG_20260112_202540.jpg',
'IMG_20260112_210524.jpg',
'IMG_20260112_210741.jpg',
'IMG_20260112_215330.jpg',
'IMG_20260113_083109.jpg',
'IMG_20260113_100119.jpg',
'IMG_20260113_112257.jpg',
'IMG_20260113_154012.jpg',
'IMG_20260113_155639.jpg',
'IMG_20260113_172616.jpg',
'IMG_20260113_174352.jpg',
'IMG_20260113_174458.jpg',
'IMG_20260113_182406.jpg',
'IMG_20260113_192944.jpg',
'IMG_20260113_202153.jpg',
'IMG_20260113_202953.jpg',
'IMG_20260113_204032.jpg',
'IMG_20260113_215851.jpg',
'IMG_20260113_221331.jpg',
'IMG_20260113_221423.jpg',
'IMG_20260113_233726.jpg',
'IMG_20260114_090240.jpg',
'IMG_20260114_111818.jpg',
'IMG_20260114_121822.jpg',
'IMG_20260115_180510.jpg',
'IMG_20260115_181038.jpg',
'IMG_20260115_190642.jpg',
'IMG_20260115_191432.jpg',
'IMG_20260115_213330.jpg',
'IMG_20260115_213831.jpg',
'IMG_20260116_095250.jpg',
'IMG_20260116_095702.jpg',
'IMG_20260116_095711.jpg',
'IMG_20260116_095807.jpg',
'IMG_20260116_100253.jpg',
'IMG_20260116_102634.jpg',
'IMG_20260116_134652.jpg',
'IMG_20260116_135136.jpg',
'IMG_20260116_145649.jpg',
'IMG_20260116_145751.jpg',
'IMG_20260116_154145.jpg',
'IMG_20260116_154152.jpg',
'IMG_20260116_161143.jpg',
'IMG_20260116_161348.jpg',
'IMG_20260116_163845.jpg',
'IMG_20260116_174800.jpg',
'IMG_20260116_174843.jpg',
'IMG_20260116_175242.jpg',
'IMG_20260116_181623.jpg',
'IMG_20260116_181927.jpg',
'IMG_20260116_202241.jpg',
'IMG_20260116_202820.jpg',
'IMG_20260116_202829.jpg',
'IMG_20260116_202855.jpg',
'IMG_20260116_202855.jpg',
'IMG_20260116_203214.jpg',
'IMG_20260116_204420.jpg',
'IMG_20260116_212113.jpg',
'IMG_20260117_085621.jpg',
];
return (
<Layout>
<div className="min-h-screen bg-gray-50">
<div className="container mx-auto px-4 py-10">
<div className="max-w-6xl mx-auto">
<div className="mb-6">
<Button asChild variant="outline" className="border-gray-300">
<Link to="/agentur">
<ArrowLeft className="h-4 w-4 mr-2" />
Zurück zur Agentur
</Link>
</Button>
</div>
<div className="rounded-xl border border-gray-200 bg-white overflow-hidden shadow-sm">
<div className="p-6">
<div className="flex flex-wrap items-center gap-3 text-sm text-blue-700 font-semibold">
<span className="inline-flex items-center gap-2">
<MapPin className="h-4 w-4" />
SCHLOSS Hotel Fleesensee
</span>
<span className="inline-flex items-center gap-2">
<Calendar className="h-4 w-4" />
12. - 17. Januar 2026
</span>
</div>
<h1 className="mt-3 text-3xl font-bold text-gray-900">Apella Jahresauftaktkongress 2026</h1>
<p className="mt-3 text-gray-600">
Fotos & Impressionen vom Event.
</p>
<div className="mt-6">
<h2 className="text-xl font-bold text-gray-900">Galerie</h2>
<p className="text-gray-600 mt-1">Durchklicken oder wischen.</p>
<div className="mt-4">
<Carousel
opts={{
align: 'start',
loop: true,
}}
className="w-full"
>
<CarouselContent>
{fleesenseeNetworkingGallery.map((file) => (
<CarouselItem key={file} className="basis-full sm:basis-1/2 lg:basis-1/3">
<div className="overflow-hidden rounded-lg border border-gray-200 bg-gray-50">
<div className="aspect-[4/3]">
<img
src={assetUrl(`Apella JAK 2026 - Netz/${file}`)}
alt={`SCHLOSS Hotel Fleesensee ${file}`}
className="h-full w-full object-cover"
loading="lazy"
/>
</div>
</div>
</CarouselItem>
))}
</CarouselContent>
<CarouselPrevious className="left-2 z-10 bg-white/90 shadow-md border-gray-200" />
<CarouselNext className="right-2 z-10 bg-white/90 shadow-md border-gray-200" />
</Carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</Layout>
);
};
export default AgenturEventFleesensee;

View File

@ -1,4 +1,5 @@
import { useState, useEffect } from 'react';
import { useLocation } from 'react-router-dom';
import Layout from '@/components/Layout';
import TenReasons from '@/components/TenReasons';
import GeneralNotice from '@/components/GeneralNotice';
@ -14,6 +15,7 @@ export default function ContactPage() {
const baseUrl = import.meta.env.BASE_URL;
const assetUrl = (fileName: string) => `${baseUrl}${encodeURI(fileName)}`;
const { t } = useTranslation('contact');
const location = useLocation();
const [yearsOfExperience, setYearsOfExperience] = useState(0);
const [activeTab, setActiveTab] = useState('contact');
const [formData, setFormData] = useState({
@ -206,6 +208,48 @@ export default function ContactPage() {
};
}, []);
useEffect(() => {
const params = new URLSearchParams(location.search);
const tab = params.get('tab');
if (
tab &&
[
'contact',
'card',
'reasons',
'service',
'impressum',
'leistungen',
'datenschutz',
'links',
'news',
'daily-info',
'faq',
].includes(tab)
) {
setActiveTab(tab);
window.setTimeout(() => {
const tabsEl = document.getElementById('contact-tabs');
if (!tabsEl) return;
const headerEl = document.querySelector('header');
const headerHeight = headerEl?.getBoundingClientRect().height ?? 0;
const breadcrumbNav = document.querySelector('nav[aria-label="Breadcrumb"]');
const breadcrumbBar = (breadcrumbNav?.closest('div.border-b') as HTMLElement | null) ?? null;
const breadcrumbHeight = breadcrumbBar?.getBoundingClientRect().height ?? 0;
const extraGap = 8;
const offset = headerHeight + breadcrumbHeight + extraGap;
const desiredTop = tabsEl.getBoundingClientRect().top + window.scrollY - offset;
const top = Math.max(0, desiredTop);
window.scrollTo({ top, behavior: 'smooth' });
}, 0);
}
}, [location.search]);
return (
<Layout>
<div className="container mx-auto px-4 md:px-6 py-8">
@ -221,6 +265,7 @@ export default function ContactPage() {
setActiveTab(next);
}}
className="w-full"
id="contact-tabs"
>
<div className="border-b border-gray-100 px-4 pt-6 pb-2 bg-gradient-to-r from-blue-50 to-white">
<TabsList className="grid grid-cols-11 gap-2 w-full h-auto bg-transparent border-0 shadow-none">

View File

@ -6,7 +6,6 @@ import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Shield, Car, Phone, Users, Award, CheckCircle, ArrowRight, Star, FileText } from 'lucide-react';
import HeroSlider from '@/components/HeroSlider';
import Disclaimer from '@/components/Disclaimer';
const Index = () => {
const { t, i18n } = useTranslation('home');
@ -604,8 +603,6 @@ const Index = () => {
</div>
</div>
</section>
<Disclaimer />
</Layout>
);
};