From afb4195acb7dcfaf6c4d608d0804b91caa61533d Mon Sep 17 00:00:00 2001 From: Isaackps Date: Fri, 31 Jul 2026 17:01:25 +0800 Subject: [PATCH 1/3] feat: replace Partners tab with Verticals dropdown and remove partners page - Navbar Partners tab is now a Verticals dropdown (desktop + mobile) linking to TradeTrust, OpenCerts, and SAL, opening in new tabs - Remove /partners route and PartnersSection from Home - Pin @trustvc/trustvc to 2.15.0-beta.2 in lockfile Co-Authored-By: Claude Fable 5 --- src/components/common/Navbar/Navbar.tsx | 158 +++++++++++++++++++++--- src/pages/Home/index.tsx | 2 - src/routes.tsx | 2 - 3 files changed, 143 insertions(+), 19 deletions(-) diff --git a/src/components/common/Navbar/Navbar.tsx b/src/components/common/Navbar/Navbar.tsx index dafc516..2b1dd06 100644 --- a/src/components/common/Navbar/Navbar.tsx +++ b/src/components/common/Navbar/Navbar.tsx @@ -7,14 +7,21 @@ interface NavbarProps { setIsDarkMode: Dispatch> } +const VERTICAL_LINKS = [ + { label: 'TradeTrust', href: 'https://tradetrust.io/' }, + { label: 'OpenCerts', href: 'https://opencerts.io/' }, + { label: 'SAL', href: 'https://legalisation.sal.sg/' }, +] + const Navbar = ({ isDarkMode, setIsDarkMode: _setIsDarkMode }: NavbarProps) => { const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false) const [_isEcosystemOpen, setIsEcosystemOpen] = useState(false) + const [isVerticalsOpen, setIsVerticalsOpen] = useState(false) const navRef = useRef(null) + const verticalsRef = useRef(null) const location = useLocation() const isSettingsActive = location.pathname.startsWith('/settings') const isNewsActive = location.pathname.startsWith('/news-updates') - const isPartnersActive = location.pathname.startsWith('/partners') const isAboutActive = location.pathname.startsWith('/about') useEffect(() => { @@ -26,11 +33,19 @@ const Navbar = ({ isDarkMode, setIsDarkMode: _setIsDarkMode }: NavbarProps) => { ) { setIsMobileMenuOpen(false) setIsEcosystemOpen(false) + setIsVerticalsOpen(false) + } + if ( + isVerticalsOpen && + verticalsRef.current && + !verticalsRef.current.contains(e.target as Node) + ) { + setIsVerticalsOpen(false) } } document.addEventListener('mousedown', handleClickOutside) return () => document.removeEventListener('mousedown', handleClickOutside) - }, [isMobileMenuOpen]) + }, [isMobileMenuOpen, isVerticalsOpen]) return (