spb/spboucher.ai Public
spboucher.ai — personal website of Simon-Pierre Boucher.
TypeScript 93.4%
HTML 5.5%
CSS 1%
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 & 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 & IBM Plex Mono</p>92 </div>93 </div>94 </footer>95 );96}97