Improve project structure.
New Project Structure: - Created reusable UI components (ServiceCard, AnimatedSection, SectionTitle) - Split large components into smaller, focused ones - Extracted shared hooks for common functionality - Organized constants into separate files Key Improvements: - Hooks: useScrollNavigation, useScrollToSection, useCookieSettings - UI Components: Modular components for consistent styling and behavior - Constants: Centralized data management (ServicesData, NavigationData) - Component Split: Navbar, Hero, and Footer broken into logical sub-components
This commit is contained in:
@@ -2,13 +2,13 @@
|
||||
|
||||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import {motion} from 'framer-motion';
|
||||
import {Mail, Gavel, ShieldCheck, Cookie} from 'lucide-react';
|
||||
import { motion } from 'framer-motion';
|
||||
import { Mail, Gavel, ShieldCheck, Cookie } from 'lucide-react';
|
||||
import { FooterSection } from './FooterSection';
|
||||
import { useCookieSettings } from '@/hooks/useCookieSettings';
|
||||
|
||||
const Footer = () => {
|
||||
const openCookieSettings = () => {
|
||||
window.dispatchEvent(new Event('show-cookie-banner'));
|
||||
};
|
||||
const { openCookieSettings } = useCookieSettings();
|
||||
|
||||
return (
|
||||
<motion.footer
|
||||
@@ -42,56 +42,38 @@ const Footer = () => {
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
{/* Informationen */}
|
||||
<motion.div
|
||||
initial={{opacity: 0, y: 10}}
|
||||
whileInView={{opacity: 1, y: 0}}
|
||||
viewport={{once: true}}
|
||||
transition={{duration: 0.5, delay: 0.4}}
|
||||
>
|
||||
<h3 className="text-lg font-semibold mb-4">Informationen</h3>
|
||||
<ul className="space-y-3 text-sm text-gray-300">
|
||||
<li className="flex items-center gap-2">
|
||||
<Mail className="w-4 h-4"/>
|
||||
<Link href="/contact" className="hover:underline">
|
||||
Kontakt
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</motion.div>
|
||||
<FooterSection title="Informationen" delay={0.4}>
|
||||
<li className="flex items-center gap-2">
|
||||
<Mail className="w-4 h-4" />
|
||||
<Link href="/contact" className="hover:underline">
|
||||
Kontakt
|
||||
</Link>
|
||||
</li>
|
||||
</FooterSection>
|
||||
|
||||
{/* Rechtliches */}
|
||||
<motion.div
|
||||
initial={{opacity: 0, y: 10}}
|
||||
whileInView={{opacity: 1, y: 0}}
|
||||
viewport={{once: true}}
|
||||
transition={{duration: 0.5, delay: 0.5}}
|
||||
>
|
||||
<h3 className="text-lg font-semibold mb-4">Rechtliches</h3>
|
||||
<ul className="space-y-3 text-sm text-gray-300">
|
||||
<li className="flex items-center gap-2">
|
||||
<ShieldCheck className="w-4 h-4"/>
|
||||
<Link href="/legal/privacy" className="hover:underline">
|
||||
Datenschutz
|
||||
</Link>
|
||||
</li>
|
||||
<li className="flex items-center gap-2">
|
||||
<Gavel className="w-4 h-4"/>
|
||||
<Link href="/legal/imprint" className="hover:underline">
|
||||
Impressum
|
||||
</Link>
|
||||
</li>
|
||||
<li className="flex items-center gap-2">
|
||||
<Cookie className="w-4 h-4"/>
|
||||
<button
|
||||
onClick={openCookieSettings}
|
||||
className="hover:underline text-left"
|
||||
>
|
||||
Cookie-Einstellungen
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</motion.div>
|
||||
<FooterSection title="Rechtliches" delay={0.5}>
|
||||
<li className="flex items-center gap-2">
|
||||
<ShieldCheck className="w-4 h-4" />
|
||||
<Link href="/legal/privacy" className="hover:underline">
|
||||
Datenschutz
|
||||
</Link>
|
||||
</li>
|
||||
<li className="flex items-center gap-2">
|
||||
<Gavel className="w-4 h-4" />
|
||||
<Link href="/legal/imprint" className="hover:underline">
|
||||
Impressum
|
||||
</Link>
|
||||
</li>
|
||||
<li className="flex items-center gap-2">
|
||||
<Cookie className="w-4 h-4" />
|
||||
<button
|
||||
onClick={openCookieSettings}
|
||||
className="hover:underline text-left"
|
||||
>
|
||||
Cookie-Einstellungen
|
||||
</button>
|
||||
</li>
|
||||
</FooterSection>
|
||||
</div>
|
||||
|
||||
<motion.div
|
||||
|
||||
Reference in New Issue
Block a user