Skip to content

Footer

Footer Columns

Brand and contact, large page links, social rows that fill on hover, a very large closing link and the copyright.

Layout and motion from the Nitip template — see it in context

Installation

$ npx shadcn@latest add https://framebrick.co/r/blocks/footer-columns.json

Usage

import { FooterColumns } from "@/components/footer-columns";

<FooterColumns
  brand={{ name: "Northstar", href: "/" }}
  links={[{ label: "Home", href: "/" }, { label: "Services", href: "/services" }]}
  socials={[{ label: "Instagram", href: "https://instagram.com/northstar" }]}
  closing={{ note: "We would love to hear from you.", label: "Let's work together.", href: "/contact" }}
  copyright="Northstar. All rights reserved."
/>

Props

PropTypeDefaultDescription
brand{ name, href, logo? }—Brand at the top left; logo (any node) replaces the name.
descriptionstring—Short text under the brand.
email / phonestring—mailto and tel links under Contact.
links{ label, href }[]6 linksLarge page links in the footer navigation.
socials{ label, href, meta? }[]4 networksRows under Follow us; external links open in a new tab.
closing{ note, label, href }—Small note above a very large link.
copyrightstring—Printed after "© {current year} ".
labels{ contact, social }—Group titles (h2).
classNamestring—Classes for the <footer>.
  • Brand + contact stack on phones, sit side by side from 768px and become a 300px column at the left from 1024px; the links area (up to 720px) puts the page links beside the social rows from 768px.
  • Page links grow an underline and turn their arrow on hover (underline-link); social rows fill and invert with their content nudging inward (fill-link); the closing link grows a 2px underline.
  • The group titles are h2 inside the footer landmark; the navigation is labelled Footer.

AI prompt

Paste into v0, Lovable, Bolt or Claude to rebuild this block in your own project.

Create a React + Tailwind CSS + Motion block called FooterColumns (Next.js).
- <footer className="border-t border-border pt-(--section-y) pb-6 md:pb-8">, container mx-auto max-w-(--container) px-(--gutter), column gap-12.
- Top: stacked; from 1024px a row. Left (300px from 1024px): brand (font-heading text-xl semibold) and a muted description; "Contact" (h2,
  font-medium) with mailto and tel links — beside the brand from 768px (items-end), under it from 1024px.
- Right (max 720px, flex-1 from 1024px): a <nav aria-label="Footer"> of large links (font-heading text-h3 semibold) whose 1px underline grows
  from the left on hover and whose arrow turns to point right (spring bounce 0.2, 0.4s); beside it from 768px a 300px "Follow us" (h2) list
  of full-width rows (border-b, py-3) that fill with the foreground color and invert on hover, label and arrow nudging 12px inward.
  Under both: a muted note and a very large link (font-heading text-display) with a 2px underline that grows on hover.
- An <hr> and "© {year} …" in text-sm muted.
- Only shadcn variables and block tokens.

Be the first to know

Get new templates and components first

One short email when we release a template or a free component. No spam — unsubscribe anytime.

We use your email only for Framebrick updates. Privacy policy