NavCard Grid
Sourcecomponents/blocks/NavCardGrid.astro
The block
The "we help you with" section — a heading with a serif accent over a row of clickable image tiles. Each tile is a Nav Card (tile variant): label top, "Explore →" bottom, image that scales on hover. The heading and cards reveal on scroll (staggered).
Scroll inside the preview — the title fades up, then the cards stagger in.
Built from
- Nav Card — each image tile (tile variant): label, "Explore →", hover-zoom.
- The shared reveal driver — the title is
.reveal, the grid is.reveal-stagger.
Behaviour
- Reveal on scroll — the title slides up, then the cards stagger in (0.12s apart) as the block enters the viewport. Fires once; respects
prefers-reduced-motion. - Responsive — two-up on tablet, one row of N (up to four) on desktop.
- Rounded top — laps over the section above it (negative top margin), so it reads as a light panel rising over the hero.
Props
| Prop | Type | Default | Notes |
|---|---|---|---|
cards | Card[] | — | 1–4 tiles — { label, href, image, cta? }. Required. |
titleHtml | string | the "we help you with" line | Section heading (inline HTML; wrap the accent in <em class="t-serif">). |
Usage
Pass up to four cards. It needs the shared reveal driver on the page (<Reveal />, already in the site layout) for the scroll animation.
<NavCardGrid
titleHtml='We don’t just give you a brandkit and fuck off – <em class="t-serif">we help you with:</em>'
cards={[
{ label: 'Branding', href: '/services', image: '/img/branding.jpg' },
{ label: 'Software Intelligence', href: '/solutions', image: '/img/software.jpg' },
{ label: 'Marketing', href: '/services', image: '/img/marketing.jpg' },
{ label: 'Security', href: '/work', image: '/img/security.jpg' },
]}
/> Rules
Do
Keep to four tiles or fewer — one clean row.
Use dark, high-contrast imagery so the white label reads.
Don't
Put a paragraph on a tile — it's a label plus a link.
Rebuild the card markup — use the Nav Card.