Components / Blocks
SiteFooter
A website footer with link columns and newsletter, a minimal layout, and a large fading brand wordmark.
Install
npx shadcn@latest add https://irisui.dev/r/site-footer.jsonimport { SiteFooter } from "@/components/iris/blocks/site-footer/site-footer";Preview
SiteFooter
A website footer in three layouts: link columns with a newsletter signup, a single quiet row, or a closing variant that ends in a large faded wordmark of the brand name.
When to use
- The bottom of every marketing or docs page, carrying navigation, legal links, social links and a status line.
columnsfor sites with many destinations;minimalfor small sites and app shells.- Not for a dedicated newsletter section: use
NewsletterSignup. - Not for an in-app status bar or toolbar.
Usage
import { SiteFooter } from "@/components/iris/blocks/site-footer/site-footer";
h(SiteFooter, {
variant: "columns",
brand: { name: "Iris UI", href: "/" },
tagline: "Interface pieces for products that think out loud.",
columns: [
{
title: "Library",
links: [
{ label: "Components", href: "/components" },
{ label: "Blocks", href: "/components#blocks" },
],
},
{
title: "Guides",
links: [
{ label: "Brand book", href: "/brand" },
{ label: "Install", href: "/components#install" },
],
},
],
legal: [{ label: "License", href: "/license" }],
socials: [{ label: "Releases", href: "/changelog", external: true }],
newsletter: { title: "Get the release notes", onSubscribe: (email) => api.subscribe(email) },
status: { label: "All systems normal", tone: "success", href: "/status" },
});
Props
| Prop | Type | Default | Description |
|---|---|---|---|
variant |
"columns" | "minimal" | "logo" |
"columns" |
columns pairs a newsletter with link columns, minimal is one quiet row, logo ends in a large, faded brand.name wordmark. |
brand |
{ name, href?, mark? } |
{ name: "Iris UI" } |
Brand link, copyright name and the logo variant's wordmark. Without mark the name is set in plain type; pass mark to put a logo before it. |
tagline |
string |
"Interface components that move with intent." |
One short line under the brand. |
columns |
{ title, links: SiteFooterLink[] }[] |
siteFooterExampleColumns (Library, Guides, Project) |
Link columns. A link is { label, href?, external? }; external opens a new tab and shows an arrow. |
links |
SiteFooterLink[] |
first link of each column plus 2 legal | Links for the minimal variant. |
legal |
SiteFooterLink[] |
License, Credits | Small links beside the copyright. |
socials |
SiteFooterLink[] |
Repository, Releases | Social links (text, no icons). |
newsletter |
{ title?, description?, placeholder?, onSubscribe? } | null |
Get the release notes | Signup in the columns variant. onSubscribe rejects to show an error. null hides it. |
status |
{ label, tone?: "success" | "warning" | "danger", href? } | null |
All systems normal | System status link with a dot. null hides it. |
year |
number |
current year | Year in the copyright line. |
onNavigate |
(link) => void |
none | Called for every link pressed; links without href render as buttons. |
className |
string |
none | Extra classes on the footer. |
Notes
- The default brand is "Iris UI" in plain type. The
logovariant repeatsbrand.nameas an oversized display wordmark (about 9% foreground, sitting low against the bottom edge) that rises in once when scrolled into view; keep the name short so it fits. logoshows no newsletter; usecolumnswhen you need the signup.- Footer columns are a
navlabelled "Footer"; legal and social lists are labelled lists. - The newsletter validates the address, shows a sending state and a subscribed confirmation; reduced motion removes the transitions and the logo rise.
- Colours are theme tokens (
page,ink,ink-2,ink-3,line,line-soft); the status dot usesgreen,orangeorredby tone.