● Zion Boggan
repos/Docket/components/site-footer.tsx
zionboggan.com ↗
72 lines · tsx
History for this file →
1
import Link from "next/link";
2
import { CustodyMark } from "@/components/custody-mark";
3
import { OwlBust } from "@/components/owl";
4
 
5
export function SiteFooter() {
6
  const year = new Date().getFullYear();
7
  return (
8
    <footer className="mt-24 border-t border-line">
9
      <div className="mx-auto w-full max-w-register px-4 py-10 sm:px-6">
10
        <div className="flex flex-col gap-8 sm:flex-row sm:items-start sm:justify-between">
11
          <div className="max-w-sm">
12
            <div className="flex items-center gap-2.5">
13
              <CustodyMark size={26} showTick={false} />
14
              <span className="font-display text-[15px] font-800 tracking-tighter">
15
                Docket
16
              </span>
17
            </div>
18
            <p className="prose-lead mt-4 italic text-ash">
19
              Record the action, not the argument.
20
            </p>
21
            <div className="mt-6 flex items-center gap-3">
22
              <OwlBust size={40} className="shrink-0 opacity-90" title="Archie, the Docket archivist" />
23
              <span className="label text-ash-2">Docket - the public record</span>
24
            </div>
25
          </div>
26
 
27
          <nav aria-label="Footer" className="grid grid-cols-2 gap-x-10 gap-y-2 sm:grid-cols-3">
28
            <FooterLink href="/register">Register</FooterLink>
29
            <FooterLink href="/calendar">Calendar</FooterLink>
30
            <FooterLink href="/schedule">Schedule</FooterLink>
31
            <FooterLink href="/votes">Votes</FooterLink>
32
            <FooterLink href="/members">Members</FooterLink>
33
            <FooterLink href="/bills">Bills</FooterLink>
34
            <FooterLink href="/categories">Topics</FooterLink>
35
            <FooterLink href="/executive">Executive</FooterLink>
36
            <FooterLink href="/spending">Spending</FooterLink>
37
            <FooterLink href="/states">States</FooterLink>
38
            <FooterLink href="/search">Search</FooterLink>
39
            <FooterLink href="/how-we-pick">How we pick</FooterLink>
40
            <FooterLink href="/who-pays">Who pays</FooterLink>
41
          </nav>
42
        </div>
43
 
44
        <div className="mt-10 flex flex-col gap-2 border-t border-line pt-6 sm:flex-row sm:items-center sm:justify-between">
45
          <p className="label">
46
            Read API live · sourced from official records · {year}
47
          </p>
48
          <p className="label text-ash-2">
49
            Every fact below links to an official government record.
50
          </p>
51
        </div>
52
      </div>
53
    </footer>
54
  );
55
}
56
 
57
function FooterLink({
58
  href,
59
  children,
60
}: {
61
  href: string;
62
  children: React.ReactNode;
63
}) {
64
  return (
65
    <Link
66
      href={href}
67
      className="label w-fit text-ash transition-colors hover:text-paper"
68
    >
69
      {children}
70
    </Link>
71
  );
72
}