2026-04-24 17:12:51 +02:00
|
|
|
'use client'
|
|
|
|
|
|
|
|
|
|
import Link from 'next/link'
|
|
|
|
|
import { motion } from 'framer-motion'
|
|
|
|
|
import { Github, Mail, ArrowUpRight } from 'lucide-react'
|
|
|
|
|
|
|
|
|
|
const footerLinks = [
|
|
|
|
|
{ label: 'Projekte', href: '#projekte' },
|
|
|
|
|
{ label: 'Über', href: '#ueber' },
|
|
|
|
|
{ label: 'Fokus', href: '#fokus' },
|
|
|
|
|
{ label: 'Philosophie', href: '#philosophie' },
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
const legalLinks = [
|
|
|
|
|
{ label: 'Impressum', href: '/impressum' },
|
|
|
|
|
{ label: 'Datenschutz', href: '/datenschutz' },
|
|
|
|
|
]
|
|
|
|
|
|
2026-04-25 22:21:46 +02:00
|
|
|
export function Footer({ email }: { email?: string }) {
|
2026-04-25 22:26:20 +02:00
|
|
|
const repoLink = { label: 'Forgejo', href: 'https://kitux.de/forgejo/dschlueter/jamulix-homepage', icon: Github }
|
2026-04-24 17:12:51 +02:00
|
|
|
const currentYear = new Date().getFullYear()
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<footer id="kontakt" className="py-16 lg:py-20 border-t border-border">
|
|
|
|
|
<div className="max-w-6xl mx-auto px-6 lg:px-8">
|
|
|
|
|
<motion.div
|
|
|
|
|
initial={{ opacity: 0, y: 20 }}
|
|
|
|
|
whileInView={{ opacity: 1, y: 0 }}
|
|
|
|
|
viewport={{ once: true }}
|
|
|
|
|
transition={{ duration: 0.6 }}
|
|
|
|
|
>
|
|
|
|
|
{/* Main footer content */}
|
|
|
|
|
<div className="grid lg:grid-cols-12 gap-12 lg:gap-8">
|
|
|
|
|
{/* Brand section */}
|
|
|
|
|
<div className="lg:col-span-5">
|
|
|
|
|
<Link
|
|
|
|
|
href="/"
|
|
|
|
|
className="inline-block font-mono text-xl tracking-tight text-foreground hover:text-accent transition-colors"
|
|
|
|
|
>
|
|
|
|
|
Jamulix
|
|
|
|
|
</Link>
|
|
|
|
|
<p className="mt-4 text-muted-foreground max-w-sm leading-relaxed">
|
2026-04-24 22:19:39 +02:00
|
|
|
50 Jahre Programmierung. Von Fortran bis KI.
|
2026-04-24 23:02:58 +02:00
|
|
|
Linux-Enthusiast seit 1992. Aktuell Python, Rust, C und Vibe-Coding.
|
2026-04-24 17:12:51 +02:00
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
{/* Social links */}
|
2026-04-25 22:26:20 +02:00
|
|
|
<div className="flex flex-col gap-3 mt-6">
|
|
|
|
|
<Link
|
|
|
|
|
href={repoLink.href}
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
className="group flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors"
|
|
|
|
|
aria-label={repoLink.label}
|
|
|
|
|
>
|
|
|
|
|
<Github className="size-5" />
|
|
|
|
|
<span className="text-sm">{repoLink.label}</span>
|
|
|
|
|
<ArrowUpRight className="size-3 opacity-0 group-hover:opacity-100 transition-opacity" />
|
|
|
|
|
</Link>
|
2026-04-25 22:29:53 +02:00
|
|
|
<Link
|
|
|
|
|
href={`mailto:${email ?? '[Emailadresse]'}`}
|
|
|
|
|
className="flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors"
|
|
|
|
|
>
|
2026-04-25 22:26:20 +02:00
|
|
|
<Mail className="size-5 shrink-0" />
|
|
|
|
|
<span className="text-sm">{email ?? '[Emailadresse]'}</span>
|
2026-04-25 22:29:53 +02:00
|
|
|
</Link>
|
2026-04-24 17:12:51 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* Navigation */}
|
|
|
|
|
<div className="lg:col-span-3 lg:col-start-7">
|
|
|
|
|
<h3 className="font-mono text-sm text-accent mb-4">Navigation</h3>
|
|
|
|
|
<ul className="space-y-3">
|
|
|
|
|
{footerLinks.map((link) => (
|
|
|
|
|
<li key={link.href}>
|
|
|
|
|
<Link
|
|
|
|
|
href={link.href}
|
|
|
|
|
className="text-muted-foreground hover:text-foreground transition-colors"
|
|
|
|
|
>
|
|
|
|
|
{link.label}
|
|
|
|
|
</Link>
|
|
|
|
|
</li>
|
|
|
|
|
))}
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* Legal */}
|
|
|
|
|
<div className="lg:col-span-3">
|
|
|
|
|
<h3 className="font-mono text-sm text-accent mb-4">Rechtliches</h3>
|
|
|
|
|
<ul className="space-y-3">
|
|
|
|
|
{legalLinks.map((link) => (
|
|
|
|
|
<li key={link.href}>
|
|
|
|
|
<Link
|
|
|
|
|
href={link.href}
|
|
|
|
|
className="text-muted-foreground hover:text-foreground transition-colors"
|
|
|
|
|
>
|
|
|
|
|
{link.label}
|
|
|
|
|
</Link>
|
|
|
|
|
</li>
|
|
|
|
|
))}
|
|
|
|
|
<li>
|
|
|
|
|
<span className="text-muted-foreground/60 text-sm">
|
|
|
|
|
Blog (bald)
|
|
|
|
|
</span>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* Bottom bar */}
|
|
|
|
|
<div className="mt-16 pt-8 border-t border-border flex flex-col sm:flex-row justify-between items-center gap-4">
|
|
|
|
|
<p className="text-sm text-muted-foreground">
|
|
|
|
|
© {currentYear} Jamulix. Alle Rechte vorbehalten.
|
|
|
|
|
</p>
|
|
|
|
|
<p className="font-mono text-xs text-muted-foreground/60">
|
|
|
|
|
Gebaut mit Next.js, Tailwind, und viel Kaffee.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</motion.div>
|
|
|
|
|
</div>
|
|
|
|
|
</footer>
|
|
|
|
|
)
|
|
|
|
|
}
|