Refactor website to use shadcn components
This commit is contained in:
@@ -3,95 +3,109 @@
|
||||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import {motion} from 'framer-motion';
|
||||
import {Mail, Gavel, ShieldCheck, Cookie} from 'lucide-react';
|
||||
|
||||
const Footer = () => {
|
||||
const openCookieSettings = () => {
|
||||
window.dispatchEvent(new Event('show-cookie-banner'));
|
||||
};
|
||||
|
||||
return (
|
||||
<motion.footer
|
||||
initial={{opacity: 0, y: 20}}
|
||||
whileInView={{opacity: 1, y: 0}}
|
||||
viewport={{once: true}}
|
||||
transition={{duration: 0.6, ease: 'easeOut'}}
|
||||
className="py-10 transition-theme text-white"
|
||||
style={{
|
||||
backgroundColor: '#16171f', // modern dark blue-purple tone
|
||||
}}
|
||||
className="py-12 text-white"
|
||||
style={{backgroundColor: '#16171f'}}
|
||||
>
|
||||
<div className="w-[90%] mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-8">
|
||||
{/* Logo and description */}
|
||||
<div>
|
||||
<h1 className="text-xl md:text-2xl font-bold text-white">
|
||||
<span className="text-3xl md:text-4xl text-pink-700">R</span>hein Software
|
||||
<motion.div
|
||||
initial={{opacity: 0, y: 10}}
|
||||
whileInView={{opacity: 1, y: 0}}
|
||||
viewport={{once: true}}
|
||||
transition={{duration: 0.6, delay: 0.2}}
|
||||
className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-10">
|
||||
{/* Logo */}
|
||||
<motion.div
|
||||
initial={{opacity: 0, y: 10}}
|
||||
whileInView={{opacity: 1, y: 0}}
|
||||
viewport={{once: true}}
|
||||
transition={{duration: 0.5, delay: 0.3}}
|
||||
>
|
||||
<h1 className="text-2xl font-bold">
|
||||
<span className="text-pink-700 text-4xl">R</span>hein Software
|
||||
</h1>
|
||||
</div>
|
||||
<p className="mt-4 text-sm text-gray-400">
|
||||
Individuelle Web- und Appentwicklung mit Qualität und Weitblick.
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
{/* Informationen */}
|
||||
<div>
|
||||
<h3 className="text-lg font-semibold text-white">Informationen</h3>
|
||||
<ul className="mt-4 space-y-4 text-sm font-semibold text-gray-400">
|
||||
<li>
|
||||
<Link href="/contact">
|
||||
<p className="nav_link transition-all duration-300 ease-in-out hover:text-white">
|
||||
Kontakt
|
||||
</p>
|
||||
<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>
|
||||
{/*<li>*/}
|
||||
{/* <Link href="/contact">*/}
|
||||
{/* <p className="nav_link transition-all duration-300 ease-in-out hover:text-white">*/}
|
||||
{/* Zahlung und Versand*/}
|
||||
{/* </p>*/}
|
||||
{/* </Link>*/}
|
||||
{/*</li>*/}
|
||||
</ul>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
{/* Rechtliches */}
|
||||
<div>
|
||||
<h3 className="text-lg font-semibold text-white">Rechtliches</h3>
|
||||
<ul className="mt-4 space-y-4 text-sm font-semibold text-gray-400">
|
||||
{/*<li>*/}
|
||||
{/* <Link href="/legal/terms-of-use">*/}
|
||||
{/* <p className="nav_link transition-all duration-300 ease-in-out hover:text-white">*/}
|
||||
{/* AGB*/}
|
||||
{/* </p>*/}
|
||||
{/* </Link>*/}
|
||||
{/*</li>*/}
|
||||
{/*<li>*/}
|
||||
{/* <Link href="/legal/revocation">*/}
|
||||
{/* <p className="nav_link transition-all duration-300 ease-in-out hover:text-white">*/}
|
||||
{/* Widerruf*/}
|
||||
{/* </p>*/}
|
||||
{/* </Link>*/}
|
||||
{/*</li>*/}
|
||||
<li>
|
||||
<Link href="/legal/privacy">
|
||||
<p className="nav_link transition-all duration-300 ease-in-out hover:text-white">
|
||||
Datenschutz
|
||||
</p>
|
||||
<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>
|
||||
<Link href="/legal/imprint">
|
||||
<p className="nav_link transition-all duration-300 ease-in-out hover:text-white">
|
||||
Impressum
|
||||
</p>
|
||||
<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>
|
||||
</div>
|
||||
</motion.div>
|
||||
</div>
|
||||
|
||||
{/* Bottom Section */}
|
||||
<div
|
||||
className="mt-8 border-t border-gray-600 pt-8 flex flex-col md:flex-row justify-between items-center text-sm text-gray-400">
|
||||
<p className="text-center md:text-left">
|
||||
© 2025 Rhein Software Development. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<motion.div
|
||||
className="mt-12 border-t border-gray-700 pt-6 text-center text-sm text-gray-500"
|
||||
initial={{opacity: 0, y: 10}}
|
||||
whileInView={{opacity: 1, y: 0}}
|
||||
viewport={{once: true}}
|
||||
transition={{duration: 0.5, delay: 0.6}}
|
||||
>
|
||||
© 2025 Rhein Software Development. Alle Rechte vorbehalten.
|
||||
</motion.div>
|
||||
</motion.div>
|
||||
</motion.footer>
|
||||
);
|
||||
};
|
||||
|
||||
export default Footer;
|
||||
export default Footer;
|
||||
Reference in New Issue
Block a user