From e0553913457298c0b567fb991e7b59cd60189bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20De=20Le=C3=B3n?= Date: Tue, 16 Jun 2026 17:05:05 -0600 Subject: [PATCH] feat: redesign footer with brand columns and oversized wordmark --- src/app/[lang]/page.tsx | 2 + src/components/layout/Footer.tsx | 125 ++++++++++++++++++++++--------- src/i18n/dictionaries/en.json | 2 + src/i18n/dictionaries/es.json | 2 + 4 files changed, 95 insertions(+), 36 deletions(-) diff --git a/src/app/[lang]/page.tsx b/src/app/[lang]/page.tsx index 4986929..4023edd 100644 --- a/src/app/[lang]/page.tsx +++ b/src/app/[lang]/page.tsx @@ -41,6 +41,8 @@ export default async function Home({ tagline={t.tagline} license={t.license} contribute={t.contribute} + product={t.footerProduct} + resources={t.footerResources} footerNote={t.footerNote} /> diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx index 5a4fe33..52e2196 100644 --- a/src/components/layout/Footer.tsx +++ b/src/components/layout/Footer.tsx @@ -9,19 +9,47 @@ type Props = { tagline: string; license: string; contribute: string; + product: string; + resources: string; footerNote: string; }; -function ExternalLink({ href, children }: { href: string; children: string }) { +function ColHeading({ children }: { children: string }) { return ( - +

{children} - +

+ ); +} + +function FooterLink({ + href, + external, + children, +}: { + href: string; + external?: boolean; + children: string; +}) { + const className = + "group/link w-fit inline-flex items-center gap-1.5 text-sm text-muted hover:text-fg transition-colors"; + const inner = ( + <> + + {children} + + ); + if (external) { + return ( + + {inner} + + ); + } + return ( + + {inner} + ); } @@ -30,54 +58,79 @@ export default function Footer({ tagline, license, contribute, + product, + resources, footerNote, }: Props) { return ( -