SPB Git

spb/spboucher.ai Public

spboucher.ai — personal website of Simon-Pierre Boucher.

TypeScript 93.4% HTML 5.5% CSS 1%
3.9 KB · 97 lines tsx
Raw Blame History
1/*2  site-footer.tsx3  spboucher.ai Web4  Author: Simon-Pierre Boucher5  Mail: contact@spboucher.ai6*/78import Link from "next/link";9import { Github, Mail } from "lucide-react";1011const footerNav = [12  { href: "/research", label: "Research" },13  { href: "/teaching", label: "Teaching" },14  { href: "/apps", label: "Apps" },15  { href: "/blog", label: "Blog" },16  { href: "/cv", label: "CV" },17];1819export function SiteFooter() {20  return (21    <footer className="mt-16 border-t border-border/80">22      <div className="mx-auto max-w-5xl px-4 py-10 sm:px-6">23        <div className="flex flex-col gap-8 sm:flex-row sm:items-start sm:justify-between">24          <div className="max-w-sm">25            <p className="font-display text-lg font-semibold tracking-tight">26              Simon-Pierre Boucher27            </p>28            <p className="mt-1.5 text-sm leading-relaxed text-muted-foreground">29              Financial econometrics researcher &amp; macOS/AI developer.30              Professor, Département des sciences administratives, UQO.31            </p>32            <div className="mt-4 flex items-center gap-2">33              <a34                href="mailto:contact@spboucher.ai"35                aria-label="Email contact@spboucher.ai"36                className="inline-flex h-8 w-8 items-center justify-center border border-foreground/15 bg-card text-muted-foreground transition-all hover:-translate-y-px hover:border-foreground/50 hover:text-foreground"37              >38                <Mail className="h-3.5 w-3.5" aria-hidden="true" />39              </a>40              <a41                href="https://git.spboucher.ai"42                target="_blank"43                rel="noopener noreferrer"44                aria-label="Git profile"45                className="inline-flex h-8 w-8 items-center justify-center border border-foreground/15 bg-card text-muted-foreground transition-all hover:-translate-y-px hover:border-foreground/50 hover:text-foreground"46              >47                <Github className="h-3.5 w-3.5" aria-hidden="true" />48              </a>49            </div>50          </div>5152          <nav aria-label="Footer" className="grid gap-2">53            <p className="font-mono text-[0.66rem] font-medium uppercase tracking-[0.2em] text-muted-foreground/70">54              Index55            </p>56            {footerNav.map((item) => (57              <Link58                key={item.href}59                href={item.href}60                className="w-fit font-mono text-xs uppercase tracking-[0.12em] text-muted-foreground transition-colors hover:text-primary"61              >62                {item.label}63              </Link>64            ))}65          </nav>6667          <div className="grid gap-2">68            <p className="font-mono text-[0.66rem] font-medium uppercase tracking-[0.2em] text-muted-foreground/70">69              Contact70            </p>71            <a72              href="mailto:simon-pierre.boucher@uqo.ca"73              className="w-fit font-mono text-xs text-muted-foreground transition-colors hover:text-primary"74            >75              simon-pierre.boucher@uqo.ca76            </a>77            <a78              href="mailto:contact@spboucher.ai"79              className="w-fit font-mono text-xs text-muted-foreground transition-colors hover:text-primary"80            >81              contact@spboucher.ai82            </a>83            <p className="font-mono text-xs text-muted-foreground/80">84              UQO, Gatineau — Pavillon Alexandre-Taché85            </p>86          </div>87        </div>8889        <div className="mt-10 flex flex-col gap-2 border-t border-border/60 pt-5 font-mono text-[0.66rem] uppercase tracking-[0.14em] text-muted-foreground/70 sm:flex-row sm:items-center sm:justify-between">90          <p>© {new Date().getFullYear()} Simon-Pierre Boucher · www.spboucher.ai</p>91          <p>Set in Fraunces, Inter &amp; IBM Plex Mono</p>92        </div>93      </div>94    </footer>95  );96}97