Build & Push Docker Image / build (push) Has been cancelled
Refresh the homepage around new hero/services/roadmap sections, shared design tokens, and updated brand assets. Co-authored-by: Cursor <cursoragent@cursor.com>
1.6 KiB
1.6 KiB
Footer
Canonical footer: components/footer.tsx (FooterSection).
Structure
- Newsletter band — headline + short copy + email form.
- Link columns — site maps (pages, services, contact, legal).
- Brand / social / legal meta — logo mark, social icon buttons, copyright.
Layout
<footer className={cn("section-shell bg-section-muted", layout.sectionY)}>
<div className="section-decor" aria-hidden>…</div>
<Container className="section-content">
{/* newsletter */}
{/* link grid */}
{/* bottom bar */}
</Container>
</footer>
| Region | Grid / spacing |
|---|---|
| Newsletter | grid-cols-1 lg:grid-cols-2 gap-10, bottom border, mb-14 pb-14 |
| Links | grid-cols-2 sm:grid-cols-4 gap-x-6 gap-y-10, py-10 lg:py-16 |
| Column titles | type.h4 + mb-5 |
| Links | type.link + space-y-4 |
Form
Inputheight aligned toButton size="lg"viah-[var(--btn-height-lg)].- Stack vertically on mobile (
flex-col), horizontal fromsm.
Social icons
- Use
Button variant="ghost" size="icon"with accessiblearia-label. - Icons from
lucide-react.
Visual
- Background:
bg-section-muted(not a hard gray box). - Optional top wash gradient in
.section-decorusing primary at ≤ 4% opacity. - Borders: semantic
border-border.
Rules
- Stay on the shared
Container—footer columns must align with header/content. - Do not introduce a second footer component for marketing pages.
- Keep link lists scannable; avoid paragraph walls.
- Dark mode comes from tokens automatically.