Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Failing after 9m26s
81 lines
4.2 KiB
TypeScript
81 lines
4.2 KiB
TypeScript
"use client";
|
|
|
|
import React from "react";
|
|
import Link from "next/link";
|
|
import { useLocale, useTranslations } from "next-intl";
|
|
import { ArrowUp } from "lucide-react";
|
|
|
|
const Footer = () => {
|
|
const locale = useLocale();
|
|
const t = useTranslations("footer");
|
|
const year = new Date().getFullYear();
|
|
|
|
const scrollToTop = () => {
|
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
};
|
|
|
|
return (
|
|
<footer className="bg-[#fdfcf8] dark:bg-stone-950 pt-32 pb-12 px-6 overflow-hidden transition-colors duration-500">
|
|
<div className="max-w-7xl mx-auto">
|
|
|
|
<div className="grid grid-cols-1 md:grid-cols-12 gap-12 items-end">
|
|
{/* Copyright & Info */}
|
|
<div className="md:col-span-4 space-y-6">
|
|
<div className="w-12 h-12 rounded-2xl bg-stone-900 dark:bg-stone-50 flex items-center justify-center text-white dark:text-stone-900 font-black text-xs">
|
|
dk
|
|
</div>
|
|
<div className="space-y-2">
|
|
<p className="text-xl font-black text-stone-900 dark:text-stone-50 uppercase tracking-tighter">Software Engineer</p>
|
|
<p className="text-stone-500 text-sm font-medium">© {year} All rights reserved.</p>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Navigation Links */}
|
|
<div className="md:col-span-4 grid grid-cols-2 gap-8">
|
|
<div className="space-y-4">
|
|
<p className="text-[10px] font-black uppercase tracking-[0.2em] text-stone-400">Legal</p>
|
|
<div className="flex flex-col gap-2">
|
|
<Link href={`/${locale}/legal-notice`} className="text-sm font-bold text-stone-600 dark:text-stone-400 hover:text-stone-900 dark:hover:text-white transition-colors">{t("legalNotice")}</Link>
|
|
<Link href={`/${locale}/privacy-policy`} className="text-sm font-bold text-stone-600 dark:text-stone-400 hover:text-stone-900 dark:hover:text-white transition-colors">{t("privacyPolicy")}</Link>
|
|
</div>
|
|
</div>
|
|
<div className="space-y-4">
|
|
<p className="text-[10px] font-black uppercase tracking-[0.2em] text-stone-400">Social</p>
|
|
<div className="flex flex-col gap-2">
|
|
<a href="https://github.com/Denshooter" target="_blank" rel="noopener noreferrer" className="text-sm font-bold text-stone-600 dark:text-stone-400 hover:text-stone-900 dark:hover:text-white transition-colors">GitHub</a>
|
|
<a href="https://linkedin.com/in/dkonkol" target="_blank" rel="noopener noreferrer" className="text-sm font-bold text-stone-600 dark:text-stone-400 hover:text-stone-900 dark:hover:text-white transition-colors">LinkedIn</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Back to Top */}
|
|
<div className="md:col-span-4 flex justify-start md:justify-end">
|
|
<button
|
|
onClick={scrollToTop}
|
|
className="group flex flex-col items-center gap-4 text-stone-400 hover:text-stone-900 dark:hover:text-white transition-colors"
|
|
>
|
|
<span className="text-[10px] font-black uppercase tracking-[0.3em] vertical-text transform rotate-180" style={{ writingMode: 'vertical-rl' }}>Back to top</span>
|
|
<div className="w-12 h-12 rounded-full border border-stone-200 dark:border-stone-800 flex items-center justify-center group-hover:bg-stone-900 dark:group-hover:bg-stone-50 group-hover:text-white dark:group-hover:text-stone-900 transition-all shadow-sm">
|
|
<ArrowUp size={20} />
|
|
</div>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Bottom Bar */}
|
|
<div className="mt-20 pt-8 border-t border-stone-100 dark:border-stone-900 flex flex-col md:flex-row justify-between items-center gap-4">
|
|
<p className="text-[10px] font-bold text-stone-400 uppercase tracking-widest">
|
|
Built with Next.js, Directus & Passion.
|
|
</p>
|
|
<div className="flex items-center gap-2">
|
|
<div className="w-2 h-2 rounded-full bg-green-500 animate-pulse" />
|
|
<span className="text-[10px] font-bold text-stone-400 uppercase tracking-widest">Systems Online</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
);
|
|
};
|
|
|
|
export default Footer;
|