das marketing frontend wurde auf lokalisierte urls umgestellt.

This commit is contained in:
Codex Agent
2025-11-03 15:50:10 +01:00
parent c0c1d31385
commit 55c606bdd4
47 changed files with 1592 additions and 251 deletions

View File

@@ -1,66 +1,96 @@
import React from 'react';
import React, { useMemo } from 'react';
import { Link } from '@inertiajs/react';
import { useTranslation } from 'react-i18next';
import { useConsent } from '@/contexts/consent';
import { useLocalizedRoutes } from '@/hooks/useLocalizedRoutes';
const Footer: React.FC = () => {
const { t } = useTranslation(['marketing', 'legal', 'common']);
const { openPreferences } = useConsent();
const { t } = useTranslation(['marketing', 'legal', 'common']);
const { openPreferences } = useConsent();
const { localizedPath } = useLocalizedRoutes();
const links = useMemo(() => ({
home: localizedPath('/'),
impressum: localizedPath('/impressum'),
datenschutz: localizedPath('/datenschutz'),
agb: localizedPath('/agb'),
kontakt: localizedPath('/kontakt'),
}), [localizedPath]);
const currentYear = new Date().getFullYear();
return (
<footer className="bg-white border-t border-gray-200 mt-auto">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
<div>
<div className="flex items-center gap-4">
<img src="/logo-transparent-md.png" alt="FotoSpiel.App Logo" className="h-12 w-auto" />
<div>
<Link href="/" className="text-2xl font-bold font-display text-pink-500">
Die FotoSpiel.App
</Link>
<p className="text-gray-600 font-sans-marketing mt-2">
Deine Plattform für Event-Fotos.
</p>
</div>
</div>
</div>
<footer className="mt-auto border-t border-gray-200 bg-white">
<div className="mx-auto max-w-7xl px-4 py-8 sm:px-6 lg:px-8">
<div className="grid grid-cols-1 gap-8 md:grid-cols-3">
<div>
<div className="flex items-center gap-4">
<img src="/logo-transparent-md.png" alt="FotoSpiel.App Logo" className="h-12 w-auto" />
<div>
<Link href={links.home} className="font-display text-2xl font-bold text-pink-500">
Die FotoSpiel.App
</Link>
<p className="mt-2 font-sans-marketing text-gray-600">
{t('marketing:footer.company', 'Fotospiel GmbH')}
</p>
</div>
</div>
</div>
<div>
<h3 className="font-semibold font-display text-gray-900 mb-4">Rechtliches</h3>
<ul className="space-y-2 text-sm text-gray-600 font-sans-marketing">
<li><Link href="/impressum" className="hover:text-pink-500 transition-colors">{t('legal:impressum')}</Link></li>
<li><Link href="/datenschutz" className="hover:text-pink-500 transition-colors">{t('legal:datenschutz')}</Link></li>
<li><Link href="/agb" className="hover:text-pink-500 transition-colors">{t('legal:agb')}</Link></li>
<li><Link href="/kontakt" className="hover:text-pink-500 transition-colors">{t('marketing:nav.contact')}</Link></li>
<li>
<button
type="button"
onClick={openPreferences}
className="hover:text-pink-500 transition-colors"
>
{t('common:consent.footer.manage_link')}
</button>
</li>
</ul>
</div>
<div>
<h3 className="font-display mb-4 font-semibold text-gray-900">
{t('legal:headline', 'Rechtliches')}
</h3>
<ul className="font-sans-marketing space-y-2 text-sm text-gray-600">
<li>
<Link href={links.impressum} className="transition-colors hover:text-pink-500">
{t('legal:impressum')}
</Link>
</li>
<li>
<Link href={links.datenschutz} className="transition-colors hover:text-pink-500">
{t('legal:datenschutz')}
</Link>
</li>
<li>
<Link href={links.agb} className="transition-colors hover:text-pink-500">
{t('legal:agb')}
</Link>
</li>
<li>
<Link href={links.kontakt} className="transition-colors hover:text-pink-500">
{t('marketing:nav.contact')}
</Link>
</li>
<li>
<button
type="button"
onClick={openPreferences}
className="transition-colors hover:text-pink-500"
>
{t('common:consent.footer.manage_link')}
</button>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold font-display text-gray-900 mb-4">Social</h3>
<ul className="space-y-2 text-sm text-gray-600 font-sans-marketing">
<li><a href="#" className="hover:text-pink-500">Instagram</a></li>
<li><a href="#" className="hover:text-pink-500">Facebook</a></li>
<li><a href="#" className="hover:text-pink-500">YouTube</a></li>
</ul>
</div>
</div>
<div className="border-t border-gray-200 mt-8 pt-8 text-center text-sm text-gray-500 font-sans-marketing">
&copy; 2025 Die FotoSpiel.App - Alle Rechte vorbehalten.
</div>
</div>
</footer>
<div>
<h3 className="font-display mb-4 font-semibold text-gray-900">
{t('marketing:footer.social', 'Social')}
</h3>
<ul className="font-sans-marketing space-y-2 text-sm text-gray-600">
<li><a href="#" className="hover:text-pink-500">Instagram</a></li>
<li><a href="#" className="hover:text-pink-500">Facebook</a></li>
<li><a href="#" className="hover:text-pink-500">YouTube</a></li>
</ul>
</div>
</div>
<div className="font-sans-marketing mt-8 border-t border-gray-200 pt-8 text-center text-sm text-gray-500">
&copy; {currentYear} Die FotoSpiel.App {t('marketing:footer.rights_reserved', 'Alle Rechte vorbehalten')}.
</div>
</div>
</footer>
);
};