122 lines
5 KiB
TypeScript
122 lines
5 KiB
TypeScript
|
|
import { Link } from 'react-router-dom'
|
||
|
|
import { Code, Github, Linkedin, Twitter, Mail, MapPin, Phone } from 'lucide-react'
|
||
|
|
|
||
|
|
const footerLinks = {
|
||
|
|
services: [
|
||
|
|
{ label: 'Web Development', href: '#services' },
|
||
|
|
{ label: 'Backend & APIs', href: '#services' },
|
||
|
|
{ label: 'Cloud & DevOps', href: '#services' },
|
||
|
|
{ label: 'Architecture', href: '#services' },
|
||
|
|
{ label: 'Modernization', href: '#services' },
|
||
|
|
{ label: 'Advisory', href: '#services' },
|
||
|
|
],
|
||
|
|
company: [
|
||
|
|
{ label: 'About', href: '#experience' },
|
||
|
|
{ label: 'Projects', href: '#projects' },
|
||
|
|
{ label: 'Skills', href: '#skills' },
|
||
|
|
{ label: 'Contact', href: '#contact' },
|
||
|
|
],
|
||
|
|
legal: [
|
||
|
|
{ label: 'Privacy Policy', href: '/privacy' },
|
||
|
|
{ label: 'Terms of Service', href: '/terms' },
|
||
|
|
{ label: 'Cookie Policy', href: '/cookies' },
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
const socialLinks = [
|
||
|
|
{ icon: Github, href: 'https://github.com/urpi', label: 'GitHub' },
|
||
|
|
{ icon: Linkedin, href: 'https://linkedin.com/company/urpi', label: 'LinkedIn' },
|
||
|
|
{ icon: Twitter, href: 'https://twitter.com/urpi_be', label: 'Twitter' },
|
||
|
|
{ icon: Mail, href: 'mailto:contact@urpi.be', label: 'Email' },
|
||
|
|
]
|
||
|
|
|
||
|
|
export function Footer() {
|
||
|
|
return (
|
||
|
|
<footer className="bg-dark-900 text-dark-300" role="contentinfo">
|
||
|
|
<div className="container py-16 lg:py-24">
|
||
|
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12">
|
||
|
|
<div className="lg:col-span-2">
|
||
|
|
<Link to="/" className="flex items-center gap-2 text-xl font-display font-bold text-white mb-4" aria-label="URPI Home">
|
||
|
|
<Code className="h-8 w-8 text-brand-500" />
|
||
|
|
<span>URPI</span>
|
||
|
|
</Link>
|
||
|
|
<p className="text-dark-400 mb-6 max-w-xs">
|
||
|
|
Web application & backend development experts. Building scalable, maintainable software solutions with Go, Java, React, and cloud-native technologies.
|
||
|
|
</p>
|
||
|
|
<div className="flex gap-4">
|
||
|
|
{socialLinks.map(({ icon: Icon, href, label }) => (
|
||
|
|
<a
|
||
|
|
key={label}
|
||
|
|
href={href}
|
||
|
|
target="_blank"
|
||
|
|
rel="noopener noreferrer"
|
||
|
|
className="p-2 rounded-lg bg-dark-800 text-dark-400 hover:bg-brand-500/20 hover:text-brand-400 transition-all duration-200"
|
||
|
|
aria-label={label}
|
||
|
|
>
|
||
|
|
<Icon className="h-5 w-5" />
|
||
|
|
</a>
|
||
|
|
))}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
<h3 className="text-sm font-semibold text-white uppercase tracking-wider mb-4">Services</h3>
|
||
|
|
<ul className="space-y-3">
|
||
|
|
{footerLinks.services.map((link) => (
|
||
|
|
<li key={link.label}>
|
||
|
|
<Link to={link.href} className="text-dark-400 hover:text-brand-400 transition-colors">
|
||
|
|
{link.label}
|
||
|
|
</Link>
|
||
|
|
</li>
|
||
|
|
))}
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
<h3 className="text-sm font-semibold text-white uppercase tracking-wider mb-4">Company</h3>
|
||
|
|
<ul className="space-y-3">
|
||
|
|
{footerLinks.company.map((link) => (
|
||
|
|
<li key={link.label}>
|
||
|
|
<a href={link.href} className="text-dark-400 hover:text-brand-400 transition-colors">
|
||
|
|
{link.label}
|
||
|
|
</a>
|
||
|
|
</li>
|
||
|
|
))}
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
<h3 className="text-sm font-semibold text-white uppercase tracking-wider mb-4">Contact</h3>
|
||
|
|
<address className="not-italic space-y-3 text-dark-400">
|
||
|
|
<div className="flex items-start gap-3">
|
||
|
|
<MapPin className="h-5 w-5 mt-0.5 text-brand-500 flex-shrink-0" />
|
||
|
|
<span>Belgium</span>
|
||
|
|
</div>
|
||
|
|
<div className="flex items-start gap-3">
|
||
|
|
<Mail className="h-5 w-5 mt-0.5 text-brand-500 flex-shrink-0" />
|
||
|
|
<a href="mailto:contact@urpi.be" className="hover:text-brand-400 transition-colors">contact@urpi.be</a>
|
||
|
|
</div>
|
||
|
|
<div className="flex items-start gap-3">
|
||
|
|
<Phone className="h-5 w-5 mt-0.5 text-brand-500 flex-shrink-0" />
|
||
|
|
<a href="tel:+32470000000" className="hover:text-brand-400 transition-colors">+32 470 00 00 00</a>
|
||
|
|
</div>
|
||
|
|
</address>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div className="mt-12 pt-8 border-t border-dark-800 flex flex-col md:flex-row items-center justify-between gap-4">
|
||
|
|
<p className="text-dark-500 text-sm">
|
||
|
|
© {new Date().getFullYear()} URPI. All rights reserved.
|
||
|
|
</p>
|
||
|
|
<div className="flex items-center gap-6">
|
||
|
|
{footerLinks.legal.map((link) => (
|
||
|
|
<Link key={link.label} to={link.href} className="text-sm text-dark-500 hover:text-brand-400 transition-colors">
|
||
|
|
{link.label}
|
||
|
|
</Link>
|
||
|
|
))}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</footer>
|
||
|
|
)
|
||
|
|
}
|