ComponentsSite blocks

Footer

Site footer: navigation, contact, socials, legal links and the company details e-commerce law requires in many countries (legal name, tax office and number, MERSİS, trade registry — labels are free text so any country's identifiers fit). A footer landmark with labelled inner navs, social links named by network, and “Cookie settings” as a button that reopens the consent preferences. Dark mode is the recommended default, not enforced.

blocks/site/footer.tsx, blocks/site/shared/brand-icons.tsx, blocks/site/registry-2.ts, styles/blocks.csstheme · material · accent · density · font
Vamos

A small studio in Maltepe building websites, booking systems and ad campaigns for restaurants, spas and clinics.

Rıhtım Caddesi 1434716 Rasimpaşa/Kadıköy
+90 216 000 00 00hello@vamos.ist

© 2026 Vamos

Installation

$ pnpm add @vamos-ui/react

The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";

Usage

import { Footer } from "@vamos-ui/react/blocks";

<Footer
  theme={{ mode: "dark" }}
  brand={{ name: "Vamos", href: "/" }}
  columns={[{ title: "Studio", links: [{ href: "/work", label: "Work" }] }]}
  social={[{ network: "instagram", href: "https://instagram.com/vamos.ist" }]}
  legalLinks={[{ href: "/kvkk", label: "KVKK notice" }]}
  company={{ legalName: "Vamos Dijital Ajans Ltd. Şti.", registry: [{ label: "Tax no.", value: "923 145 6780" }] }}
/>

footerBlock emits an Organization node; its lint warns when company details are missing (needed when the site sells online).

Examples

Wordmark (restaurant)

Details across the top; the brand at container width at the very bottom, clipped by the edge.

Minimal (landing page)

One row: logo, a few links, socials, ©.

API

Footer

PropTypeDefault
variant
Layout.
"columns" | "wordmark" | "minimal""columns"
brand
Logo or a display-type name.
{ name; logo?: ReactNode | Image; href? }—
about
≤ 200 characters.
ReactNode—
columns
Up to 4 columns of up to 8 links, each a labelled nav.
{ title; links: { href; label; newTab? }[] }[]—
contact
Address (AddressValue or text), E.164 phone, email.
{ address?; phone?; email? }—
social
Up to 6 brand icons named by network.
{ network; href }[]—
legalLinks
Privacy, terms, KVKK… in the bottom line.
Link[]—
company
Legal name and registry numbers.
{ legalName; registry?: { label; value }[] }—
cookieSettings
“Cookie settings” button.
booleantrue
newsletter
Email sign-up through the form island.
{ action?; title?; hint? }—
credit
“Site by …”.
Link—
year
© year.
numberrender year
labels / locale
Footer, Legal, Social media, © {year} {name}…
Partial<Site2Labels> / string—
theme / anchor / id / className / components / editMode
Shared block props.
BlockBaseProps—