Footer
A landing page footer with brand, column links, and legal sections.
Basic Usage
With Columns
The link columns use gap="sm" rather than xs, and the reason is a measurement worth
carrying: these are tap targets stacked in a column, and at xs their centers sit 23.4 px
apart — six tenths of a pixel under the 24 px WCAG 2.5.8 spacing exception, which is a miss
all the same.
With Legal
Help in the same place on every page
A footer comes back on every page, so it is a natural home for help: contact details, a link to your help center or your support form. Help that your pages repeat has to stand in the same place on each of them (WCAG 3.2.6), and a footer every page shares gives it that place. Keep the help links in the same column, in the same order, rather than in the content of some pages and the footer of others.
Entrance Animation
Wire a viewport-triggered reveal directly on the footer without an extra wrapper:
<x-wirekit::footer animateIn="fade">
<x-slot:brand>© 2026 Built with WireKit.</x-slot:brand>
</x-wirekit::footer>
The animateIn prop accepts any of the 11 base presets. Equivalent to wrapping in <x-wirekit:: but skips the wrapper element. Respects prefers-reduced-motion: reduce. The default duration is normal (300ms) — fast enough to feel snappy in a real page-load context.
For docs.wirekit.app preview frame the default 300ms is too quick to read clearly, so the live demo below uses an explicit <x-wirekit:: wrapper with preset="slide-up" and an inline animation-duration: 1200ms so the entrance motion is unambiguously visible. Hit the replay icon in the top-right corner to re-fire it:
Props
| Prop | Type | Default | Description |
|---|---|---|---|
animateIn |
string|null | null |
Entrance-reveal preset (e.g. 'fade', 'slide-up'). Wires reveal semantics inline. |
max |
sm | md | lg | xl | 2xl | full |
xl |
Inner-content max-width tier. Reads --size-wk-container-* tokens. Controls the column-grid, brand+legal row, and default slot wrapper widths — they all share the same value. Set to match your page's container width so the footer aligns on the same content-edge spine. |
scope |
string|null | null |
Scoped personalization name |
The same footer at three max tiers — the chrome (background, border) always stays edge-to-edge while the inner content tracks the named tier:
Slots
| Slot | Description |
|---|---|
columns |
Grid of link columns |
brand |
Brand/copyright text |
legal |
Legal links (privacy, terms) |
| default | Additional footer content |
Keyboard Interaction
This component is a layout wrapper. Keyboard interaction is delegated to its children.
Design Tokens
| Token | Used for |
|---|---|
--color-wk-bg-elevated |
Footer background |
--color-wk-border |
Top border |
--color-wk-text-muted |
Text color |
--space-wk-section-sm |
Vertical padding |