Skip to content
All Taste components

Footer

Footer — big call to action

A footer that opens with a large closing headline and button, then links, and ends on an oversized faded wordmark.

closing CTA · 3 link columns + contact · giant wordmark · legal row

import { ArrowRight, Mail } from "lucide-react";

const columns = [
  { title: "Product", links: [["Invoices", "/invoices"], ["Payments", "/payments"], ["Reminders", "/reminders"], ["Recurring billing", "/recurring"]] },
  { title: "Resources", links: [["Help centre", "/help"], ["Invoice templates", "/templates"], ["Guides", "/guides"], ["Blog", "/blog"]] },
  { title: "Company", links: [["About", "/about"], ["Careers", "/careers"], ["Customers", "/customers"], ["Press", "/press"]] },
];

const legal = [["Terms", "/terms"], ["Privacy", "/privacy"], ["Cookies", "/cookies"]];

export function FooterBigCta() {
  return (
    <footer className="overflow-hidden bg-surface px-5 pt-12 font-sans sm:px-10 sm:pt-16">
      <div className="mx-auto max-w-6xl">
        <div className="grid gap-6 border-b border-border pb-12 lg:grid-cols-[1fr_auto] lg:items-end">
          <h2 className="max-w-[14ch] text-4xl font-semibold leading-none tracking-tighter text-fg sm:text-6xl">Send your next invoice in two minutes.</h2>
          <div className="flex flex-wrap gap-2.5">
            <a href="/signup" className="inline-flex h-11 items-center gap-1.5 rounded bg-primary px-5 text-[15px] font-medium text-primary-fg transition hover:bg-primary-hover">
              Start free <ArrowRight className="size-4" aria-hidden />
            </a>
            <a href="/demo" className="inline-flex h-11 items-center rounded border border-border-strong bg-bg px-5 text-[15px] font-medium text-fg transition hover:bg-surface-2">Book a demo</a>
          </div>
        </div>

        <div className="mt-10 grid gap-8 lg:grid-cols-[1fr_1.4fr]">
          <div className="grid content-start gap-2.5">
            <a href="/" className="inline-flex items-center gap-2 text-base font-semibold tracking-tight text-fg">
              <span className="size-6 rounded-sm bg-primary" aria-hidden />Tallybook
            </a>
            <p className="max-w-[36ch] text-sm text-fg-muted">Made for small businesses by a small business.</p>
            <a href="mailto:hello@tallybook.example" className="inline-flex items-center gap-1.5 text-[13.5px] font-medium text-primary hover:underline">
              <Mail className="size-3.5" aria-hidden />hello@tallybook.example
            </a>
          </div>
          <nav aria-label="Footer" className="grid grid-cols-3 gap-5">
            {columns.map((col) => (
              <div key={col.title}>
                <h2 className="mb-3.5 text-[13px] font-semibold text-fg">{col.title}</h2>
                <ul className="grid gap-2.5">
                  {col.links.map(([label, href]) => (
                    <li key={label}><a href={href} className="text-[13.5px] text-fg-muted transition hover:text-fg">{label}</a></li>
                  ))}
                </ul>
              </div>
            ))}
          </nav>
        </div>

        <div className="mt-12 flex flex-wrap items-center justify-between gap-3 border-t border-border pt-6 text-[13px] text-fg-subtle">
          <p>© {new Date().getFullYear()} Tallybook Ltd.</p>
          <nav aria-label="Legal">
            <ul className="flex gap-5">{legal.map(([label, href]) => <li key={label}><a href={href} className="hover:text-fg">{label}</a></li>)}</ul>
          </nav>
        </div>

        <p aria-hidden className="mt-10 select-none whitespace-nowrap bg-gradient-to-b from-border-strong to-surface bg-clip-text text-center text-[19vw] font-bold leading-[0.78] tracking-tighter text-transparent lg:text-[236px]">
          tallybook
        </p>
      </div>
    </footer>
  );
}

The code uses the Taste Tailwind preset. Make yours on the Taste page with Export my system.