85 lines
3.5 KiB
TypeScript
85 lines
3.5 KiB
TypeScript
import Link from "next/link";
|
|
import { contact } from "@/lib/portfolio";
|
|
|
|
const sectionLinks = [
|
|
{ label: "Work", href: "#work" },
|
|
{ label: "Capabilities", href: "#capabilities" },
|
|
{ label: "Operator", href: "#operator" },
|
|
{ label: "Contact", href: "#contact" },
|
|
];
|
|
|
|
const elsewhereLinks = [
|
|
{ label: "Git", href: contact.git },
|
|
{ label: "LinkedIn", href: contact.linkedIn },
|
|
];
|
|
|
|
export function ClosingCta() {
|
|
const year = new Date().getFullYear();
|
|
|
|
return (
|
|
<footer className="border-t border-blacksite-line bg-blacksite-bg px-6 py-20 text-blacksite-text sm:px-8 sm:py-24 lg:px-12">
|
|
<div className="mx-auto max-w-7xl">
|
|
<div className="grid gap-4 lg:grid-cols-2">
|
|
<a
|
|
href="#work"
|
|
className="group min-h-52 border border-blacksite-line bg-blacksite-surface p-6 transition-colors hover:border-signal-orange/70 focus-visible:outline-signal-orange sm:p-8"
|
|
>
|
|
<span className="font-display text-4xl font-semibold tracking-[-0.04em] text-blacksite-text transition-colors group-hover:text-signal-orange sm:text-6xl">
|
|
View Work →
|
|
</span>
|
|
</a>
|
|
|
|
<a
|
|
href={`mailto:${contact.email}`}
|
|
className="group min-h-52 border border-blacksite-line bg-blacksite-surface p-6 transition-colors hover:border-signal-orange/70 focus-visible:outline-signal-orange sm:p-8"
|
|
>
|
|
<span className="font-display text-4xl font-semibold tracking-[-0.04em] text-blacksite-text transition-colors group-hover:text-signal-orange sm:text-6xl">
|
|
Send Signal →
|
|
</span>
|
|
</a>
|
|
</div>
|
|
|
|
<div className="mt-8 grid gap-8 border border-blacksite-line bg-blacksite-surface2/35 p-6 sm:grid-cols-2 lg:grid-cols-3 lg:p-8">
|
|
<nav aria-label="Footer sections">
|
|
<p className="section-label mb-4">Sections</p>
|
|
<ul className="grid gap-3 font-mono text-xs uppercase tracking-[0.14em] text-blacksite-muted">
|
|
{sectionLinks.map((link) => (
|
|
<li key={link.href}>
|
|
<a href={link.href} className="transition-colors hover:text-signal-orange focus-visible:outline-signal-orange">
|
|
{link.label}
|
|
</a>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</nav>
|
|
|
|
<nav aria-label="Footer field notes">
|
|
<p className="section-label mb-4">Field Notes</p>
|
|
<Link href="/blog/" className="font-mono text-xs uppercase tracking-[0.14em] text-blacksite-muted transition-colors hover:text-signal-orange focus-visible:outline-signal-orange">
|
|
/blog/
|
|
</Link>
|
|
</nav>
|
|
|
|
<nav aria-label="Footer elsewhere">
|
|
<p className="section-label mb-4">Elsewhere</p>
|
|
<ul className="grid gap-3 font-mono text-xs uppercase tracking-[0.14em] text-blacksite-muted">
|
|
{elsewhereLinks.map((link) => (
|
|
<li key={link.href}>
|
|
<a href={link.href} target="_blank" rel="noreferrer" className="transition-colors hover:text-signal-orange focus-visible:outline-signal-orange">
|
|
{link.label} ↗
|
|
</a>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
|
|
<div className="mt-6 flex flex-wrap items-center justify-between gap-4 font-mono text-xs uppercase tracking-[0.14em] text-blacksite-muted">
|
|
<p>© {year}</p>
|
|
<p>⌘K</p>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
);
|
|
}
|