source-code/
portofolio-neo-gruv
Public
typescript27 lines1.5 KB
"use client";
import React from 'react';
import { useData } from '../context/DataContext';
export const Footer: React.FC = () => {
const { footerData } = useData();
const { brandName, socials, copyright } = footerData;
return (
<footer className="bg-on-surface text-surface w-full px-4 md:px-gutter py-8 md:py-12">
<div className="flex flex-col md:flex-row justify-between items-center w-full gap-8 reveal-section">
<div className="font-display-2xl text-[36px] sm:text-[48px] md:text-display-2xl text-theme-yellow leading-none tracking-tighter uppercase hover:scale-105 transition-transform duration-300 cursor-pointer">
{brandName}
</div>
<div className="flex flex-wrap justify-center gap-3 sm:gap-6">
{socials.map((social) => (
<a key={social.label} className={`text-surface font-label-bold text-label-bold uppercase ${social.hoverColor} hover:-translate-y-1 transition-all px-3 py-1 border-2 border-transparent ${social.hoverBorder}`} href={social.href}>{social.label}</a>
))}
</div>
<div className="font-label-bold text-label-bold uppercase text-surface-variant text-center md:text-right bg-on-surface-variant px-4 py-2 neo-border border-surface hover:bg-surface hover:text-on-surface transition-colors cursor-pointer">
{copyright}
</div>
</div>
</footer>
);
};About
Custom portfolio frontend designed using retro Neo-Brutalist styling. Features server-rendered pages, persistent codebase layout, interactive file explorer tree, and Shiki code syntax highlighting.
TypeScriptNext.jsReact 19Tailwind CSSShiki