Skip to content

Footer

Footer Newsletter

A call-to-action photo card over the edge of an inverted footer; contact, two link columns and a newsletter sign-up.

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

Installation

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

Usage

import { FooterNewsletter } from "@/components/footer-newsletter";

<FooterNewsletter
  cta={{
    title: "Ready to find your next home?",
    action: { label: "Get in touch", href: "/contact" },
    image: "/footer/house.jpg",
  }}
  onSubscribe={async (email) => {
    await fetch("/api/subscribe", { method: "POST", body: JSON.stringify({ email }) });
  }}
/>

Props

PropTypeDefaultDescription
cta{ title, text?, action?, image }—The photo card over the edge (decorative photo, dark gradient, white text); omit to drop it.
contact{ title, address?, phones?, email? }—First column; phones and email become links.
columns{ title, links }[]Explore, CompanyLink columns.
newsletter{ title, text?, placeholder?, submitLabel?, consent? }—Sign-up column; consent is small print with a link to your privacy policy.
onSubscribe(email) => Promise<void> | void—Sends the address; throw to show the error state. Without it the form pretends to send.
copyrightstring© {year} Harbor Homes…"{year}" becomes the current year.
socialLabel / socialsstring / { label, href }[]—Beside the copyright (above it on phones); open in a new tab.
classNamestring—Classes for the <footer>.
  • The page background runs to the middle of the 467px card; the inverted footer (bg-foreground) starts there, so the card straddles the edge.
  • Columns: two on phones, three from 768px with the newsletter across two, one row from 1024px with the newsletter 350px wide. Group titles are h2 inside the footer landmark.
  • The card's button rolls its label (flip-button); the newsletter button shows a spinner, then a check, and the result is announced (subscribe-input). Links go from 80% to full with an underline on hover.

AI prompt

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

Create a React + Tailwind CSS block called FooterNewsletter (Next.js, client component).
- <footer className="bg-foreground text-background pb-5">. First a wrapper pt-(--section-y) whose top part (the padding plus half the card) is
  bg-background, so a 467px card (rounded-xl, overflow-hidden) straddles the edge: a decorative photo, a gradient from black/10 via black/50 (40%)
  to black, and at the bottom, centered and white: an h2 (font-heading text-h2), a paragraph (max 600px) and a white button whose label rolls.
- Then the container (pt-16 / md:pt-20 / lg:pt-24, gap-12): a grid of 2 columns (3 from 768px, a flex row from 1024px, gap-12): Contact (address,
  phones, email), two link columns, and a newsletter column spanning 2 (lg: 350px): h2 (text-lg), text, an e-mail pill with a round submit
  button (spinner while sending, check on success), small print with a privacy link. Titles are h2 (font-heading text-lg); links text-background/80,
  full with an underline on hover.
- A border-t (background/15) row: the copyright (current year) and "Follow us:" social links (above the copyright on phones).
- Only shadcn variables and block tokens (white text on the photo card); plain <img>.

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