feat(website): add Product to menu + footer nav, move Why into Resources dropdown (#22429)

## 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` ✓
This commit is contained in:
Abdullah.
2026-07-02 13:46:36 +05:00
committed by GitHub
parent 1b06532cb1
commit 3474d75b56
2 changed files with 16 additions and 3 deletions
@@ -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' },
@@ -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`,