Footer
v1.0.18Updated 19 Oct 2026Site footer with link columns, newsletter, legal row and social icons. Copy-paste block; baked-in demo content (edit the JSX to customise).
Preview
Live · 13 stories▸Why this is recommendedfooterlinkssitemaplegal+4
Footer handling multiple items at once — column.
- ✓Landing pages
- ✓Marketing pages
- ✓Any public website
- ✓a real public site footer whose link columns, legal row and social links are passed in as data
- ✓a footer that shows our own logo image instead of a monogram tile
- ✓a site footer with logo, tagline, three link columns and a copyright and credit row
- Multi-column, minimal, with-newsletter and dark layouts
- Link columns + social MEDIA profile icons (Facebook, LINE, X) + copyright row — these are links OUT to your accounts, not social SIGN-IN buttons, which are Login providers
- Configured entirely by props, never by editing the vendored file: `columns` is the sitemap (each column becomes a labelled nav landmark), `legalLinks` the bottom row, `social` the icon row, `brand` your own logo node in place of the monogram lockup, `storeLinks` / `lineHref` the app-store and LINE OA destinations. `links` is the flat row the single-line layouts use and defaults to the columns flattened, so one configuration drives whichever layout you pick
- Destinations have NO default: with nothing passed a footer renders its brand, tagline and copyright and omits the blocks it has no data for, rather than showing a demo sitemap of href="#" rows. Strings keep their byte-identical English defaults; only links start empty. A badge or button with no destination renders inert instead of as a dead link. Requested by condo69 as fb_bc8045e2 / fb_f8fba1de
- Client-side routing: pass `linkComponent` (next/link, React Router Link) and every row that has an href renders through the host app link component instead of a plain anchor, which would reload the whole document (fb_bf7dc63a) — across the link columns, the legal row, the social icons and the app-store badges of every layout
- i18n: labels prop overrides every built-in display string (brand, taglines, copyright, newsletter and legal copy); merged over DEFAULT_FOOTER_LABELS. Link text is caller data and travels with `columns` / `legalLinks`, not through labels
- ✕In-app shells (use the app footer slot)
Install
Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.
Usage
Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.
Props
classNameOptional wrapper class override
—columnsThe site sitemap: [{ title, links: [{ label, href }] }]. Each column renders as a nav landmark named by its title. Defaults to [] — no columns rather than a demo sitemap, so a vendored copy cannot ship our links (fb_bc8045e2). Used by every multi-column layout; the lg grid track count follows the array length.
—linksThe flat link row used by FooterMinimal and FooterCentered. Defaults to columns.flatMap(c => c.links), so configuring `columns` alone is enough whichever layout you pick.
—legalLinksThe bottom legal row (privacy, terms, sitemap, PDPA). Defaults to [] — a legal link that goes nowhere is worse than no legal link.
—social[{ label, href, brand?, icon? }] — `label` is the accessible name, `brand` picks a built-in mark by key (github, linear, notion, figma…), `icon` supplies your own node and wins. Defaults to [] and the whole row is omitted, so no footer shows icons for accounts you do not have.
—brandYour own logo in place of the built-in monogram + wordmark lockup, e.g. brand={<img src="/logo.svg" alt="Condo69" />}. Omit it and the lockup renders from labels.brandMonogram / labels.brandWordmark exactly as before.
—storeLinksApp-store destinations for FooterAppDownload. A badge with no href renders as a plain, non-interactive badge rather than a dead link.
—lineHrefDestination for the FooterTwoTone LINE OA button. Without it the button is not rendered at all.
—labelsOverride every built-in display string (brand name, taglines, copyright, newsletter and legal copy) for i18n or white-labelling. Merged over DEFAULT_FOOTER_LABELS.
—linkComponentThe host app link component for EVERY anchor the footer renders — link columns, legal row, social icons and store badges (next/link, React Router Link). Defaults to a plain anchor, which in a routed app reloads the whole document. MCP feedback fb_bf7dc63a.
—