From 3474d75b56e751e3041856e9c898576968fee57d Mon Sep 17 00:00:00 2001 From: "Abdullah." <125115953+mabdullahabaid@users.noreply.github.com> Date: Thu, 2 Jul 2026 13:46:36 +0500 Subject: [PATCH] feat(website): add Product to menu + footer nav, move Why into Resources dropdown (#22429) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What Restores the **Product** link to the site nav (removed in #21794), reversing that commit's nav-structure change: - **Menu** — Product is the first top-level item (in place of Why); **Why** moves back into the **Resources** dropdown with its `why.webp` preview (`IconBulb`, "Why teams choose Twenty"). - **Footer** — Product added to the **Sitemap** group (after Home). The `/product` and `/why-twenty` routes already exist and are in the sitemap; only the nav data changed. The rest of #21794 (dropdown frame height, preview assets, current-page highlight) is untouched. ## Notes - New `msg` strings (`Product`, and Why's restored strings) are left to CI / the i18n bot to extract + translate — no catalog changes here. ## Testing - `nx lint twenty-website` ✓ (check-conventions + oxlint + oxfmt) - `nx typecheck twenty-website` ✓ --- .../src/sections/footer/footer.data.ts | 3 +-- .../src/sections/menu/data/menu.ts | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/twenty-website/src/sections/footer/footer.data.ts b/packages/twenty-website/src/sections/footer/footer.data.ts index 6ee0d7129b..2e5a5ade42 100644 --- a/packages/twenty-website/src/sections/footer/footer.data.ts +++ b/packages/twenty-website/src/sections/footer/footer.data.ts @@ -38,8 +38,6 @@ export type FooterSocialLink = { icon: IconComponent; }; -// Sitemap includes Customers — it exists in the nav but was missing from the -// old footer. export const FOOTER: { navGroups: readonly FooterNavGroup[]; socialLinks: readonly FooterSocialLink[]; @@ -50,6 +48,7 @@ export const FOOTER: { title: msg`Sitemap`, links: [ { label: msg`Home`, href: '/' }, + { label: msg`Product`, href: '/product' }, { label: msg`Pricing`, href: '/pricing' }, { label: msg`Customers`, href: '/customers' }, { label: msg`Partners`, href: '/partners' }, diff --git a/packages/twenty-website/src/sections/menu/data/menu.ts b/packages/twenty-website/src/sections/menu/data/menu.ts index 29e8d295f0..c27779be1d 100644 --- a/packages/twenty-website/src/sections/menu/data/menu.ts +++ b/packages/twenty-website/src/sections/menu/data/menu.ts @@ -3,6 +3,7 @@ import { IconBook, IconBrandLinkedin, IconBrandX, + IconBulb, IconCode, IconTag, IconUsers, @@ -22,10 +23,23 @@ export const MENU: { } = { appUrl: SITE_URLS.appWelcome, navItems: [ - { href: '/why-twenty', label: msg`Why` }, + { href: '/product', label: msg`Product` }, { label: msg`Resources`, children: [ + { + label: msg`Why`, + description: msg`The story behind Twenty`, + href: '/why-twenty', + icon: IconBulb, + preview: { + image: '/images/menu/why.webp', + imageAlt: msg`Why Twenty illustration`, + imagePosition: 'center', + title: msg`Why teams choose Twenty`, + description: msg`The principles and product philosophy behind the open source CRM.`, + }, + }, { label: msg`User Guide`, description: msg`Learn how to use Twenty`,