registry
@automindzsheets 01–77shadcn 4.x
SHEET 30

Footer Columns

block / marketing

Site footer with a nav landmark per column, external and disabled link states, a legal row and slots for the logo and a signup form.

type
block
files
2
registry deps
badge, @automindz/render-link
npm deps
lucide-react

installs

  • lib/automindz/footer-nav.ts
  • components/automindz/footer-columns.tsx
  • One nav landmark per column, named by its label.
  • A disabled link is text with a reason, not a dead anchor.
  • No form here — the newsletter is a slot.

Columns are data: edit lib/automindz/footer-nav.ts or pass columns. A column with no links is dropped, not left as a gap. Each column is its own nav named by its label. A disabled link renders as text with its reason — never a dead anchor; an external link gets an icon, rel and "opens in a new tab", and skips renderLink because a router has no use off-site. newsletter is a slot: the footer refuses to own a form, that is @automindz/cta-band. Bring your own page container.

Variations

one state per section

01

Four columns with brand

The full shape: logo slot, description, four named nav landmarks, social row, and a legal row behind a one-pixel hairline. Collapses to two-up and then a single stack with the labels intact.

fluid
03

Fifteen links in one column

A deep docs column next to a short one. Cells align to the top, so the tall column stretches the row rather than dragging its neighbour down or overflowing sideways.

fluid
04

No social, no brand

The common case. No social row, no logo slot, and an empty Partners column omitted entirely instead of leaving a hole in the grid.

fluid
05

Newsletter slot filled

The slot takes whatever you pass — here a placeholder, not a working form. The footer refuses to own the signup because a form owns pending, invalid and failure states, and those belong to @automindz/cta-band.

fluid