From 3e319a621a90acf57e4184ad9dd44d82df57e0a5 Mon Sep 17 00:00:00 2001 From: AramUchiha Date: Thu, 16 Jul 2026 01:44:58 -0700 Subject: [PATCH 1/5] feat(site): redesign marketing footer --- .../(marketing)/components/footer/footer.tsx | 114 +++++++----------- .../src/messages/cookiePreferences/en.json | 3 +- .../src/messages/cookiePreferences/es.json | 3 +- 3 files changed, 48 insertions(+), 72 deletions(-) diff --git a/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.tsx b/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.tsx index 35884c40..a0cf65d3 100644 --- a/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.tsx +++ b/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.tsx @@ -6,7 +6,6 @@ import CookiePreferencesModal from '@/components/common/cookie-preferences-modal import ToddHeader from '@/components/common/wordmark/todd-wordmark'; import { Link } from '@/i18n/config'; import { useLocale, useTranslations } from 'next-intl'; -import Image from 'next/image'; import { usePathname } from 'next/navigation'; import { useEffect, useState } from 'react'; import { @@ -72,11 +71,18 @@ const Footer = () => { }, ]; + const footerColumns = [ + [siteLinks[0], siteLinks[1], siteLinks[2], siteLinks[3]], + [siteLinks[4], legalLinks[0], legalLinks[1], legalLinks[2]], + [legalLinks[3], legalLinks[4]], + ]; + const currentYear = new Date().getFullYear(); const pathname = usePathname() || '/'; const [langOpen, setLangOpen] = useState(false); const [pendingLocale, setPendingLocale] = useState(null); + const currentLanguageLabel = locale === 'es' ? 'Español' : 'English'; const trimPath = (p: string) => p.replace(/\/+$/, '') || '/'; @@ -106,57 +112,53 @@ const Footer = () => {
-
- {siteLinks.slice(0, 4).map((val) => ( - - - {val.label} - - - ))} -
- -
- {siteLinks.slice(4, 8).map((val) => ( - - - {val.label} - - - ))} -
+ {footerColumns.map((column, index) => ( +
+ {column.map((val) => ( + + + {val.label} + + + ))} +
+ ))}
-
-
+
+
+

Todd Agriscience © 2018-{currentYear}

+ + {tCookiePreferences('manageCookies')} + + } + /> +
+
+ {socialMediaIcons.map((val) => ( + + {val.icon} + + ))}
{langOpen && ( @@ -169,7 +171,7 @@ const Footer = () => { />
-

© Todd Agriscience {currentYear}

-
- {legalLinks.map((val) => ( - - {val.label} - - ))} - - {tCookiePreferences('managePreferences')} - -
- } - /> -
-
- {socialMediaIcons.map((val) => ( - - {val.icon} - - ))} -
); diff --git a/apps/site/src/messages/cookiePreferences/en.json b/apps/site/src/messages/cookiePreferences/en.json index 479fea58..15b3eb4e 100644 --- a/apps/site/src/messages/cookiePreferences/en.json +++ b/apps/site/src/messages/cookiePreferences/en.json @@ -7,6 +7,7 @@ "toggleDescription": "These activities may be considered “sales” or “sharing” under applicable US state laws. You may opt-out of these non-essential activities by using the toggle below or by visiting our website with a legally-recognized opt-out preference signal enabled, such as the Global Privacy Control (GPC). Note that requests to opt-out of these activities are unique to the browser you are using. You will need to renew your opt-out choice if you visit with another browser or device, or if you clear your cookies.", "save": "Confirm", "cancel": "Cancel", - "managePreferences": "Your Privacy Choices" + "managePreferences": "Your Privacy Choices", + "manageCookies": "Manage Cookies" } } diff --git a/apps/site/src/messages/cookiePreferences/es.json b/apps/site/src/messages/cookiePreferences/es.json index 2fe7815f..0cb8905d 100644 --- a/apps/site/src/messages/cookiePreferences/es.json +++ b/apps/site/src/messages/cookiePreferences/es.json @@ -7,6 +7,7 @@ "toggleDescription": "Estas actividades pueden considerarse “ventas” o “compartición” según las leyes estatales aplicables de EE. UU. Puedes optar por no participar en estas actividades no esenciales usando el interruptor a continuación o visitando nuestro sitio web con una señal de preferencia de exclusión legalmente reconocida habilitada, como Global Privacy Control (GPC). Ten en cuenta que las solicitudes para excluirte de estas actividades son únicas para el navegador que estás utilizando. Deberás renovar tu elección de exclusión si visitas el sitio con otro navegador o dispositivo, o si borras tus cookies.", "save": "Confirmar", "cancel": "Cancelar", - "managePreferences": "Tus opciones de privacidad" + "managePreferences": "Tus opciones de privacidad", + "manageCookies": "Administrar cookies" } } From 47bb6041cd05c061b4ea496f0697ed8e9c930619 Mon Sep 17 00:00:00 2001 From: AramUchiha Date: Fri, 17 Jul 2026 13:25:36 -0700 Subject: [PATCH 2/5] fix: update footer link groups --- apps/sanity/package.json | 2 +- .../components/footer/footer.test.tsx | 36 +++++++++++ .../(marketing)/components/footer/footer.tsx | 60 +++++++++---------- apps/site/src/messages/footer/en.json | 9 ++- apps/site/src/messages/footer/es.json | 7 ++- 5 files changed, 75 insertions(+), 39 deletions(-) diff --git a/apps/sanity/package.json b/apps/sanity/package.json index 9a08e067..37ca55f0 100644 --- a/apps/sanity/package.json +++ b/apps/sanity/package.json @@ -7,7 +7,7 @@ "scripts": { "dev": "sanity dev", "preview": "sanity preview", - "build": "sanity build", + "build": "sanity build --yes", "type-check": "tsc --noEmit", "deploy": "sanity deploy", "deploy-graphql": "sanity graphql deploy" diff --git a/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.test.tsx b/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.test.tsx index 58dc2dd7..9b0be736 100644 --- a/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.test.tsx +++ b/apps/site/src/app/(unauthenticated)/[locale]/(marketing)/components/footer/footer.test.tsx @@ -30,6 +30,42 @@ describe('Footer', () => { expect(internalLinks.length).toBeGreaterThan(0); }); + it('renders footer link groups in the expected order', () => { + renderWithNextIntl(