From b011884ba51db472afcc5bb4fa2f8a5e77269482 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Tue, 11 Nov 2025 14:10:18 +0800 Subject: [PATCH] feat: update Navbar to hide on dynamic product routes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Task Completed: 1. ✅ **Language Component Already Extracted** - LanguageToggle component is already in `src/components/LanguageToggle.tsx` - Uses global `useLanguage` hook from LanguageProvider - Already a shared component that can be reused anywhere 2. ✅ **Updated Navbar to Hide on Dynamic Routes** - Modified `src/components/Navbar.tsx` to hide on `/xstream`, `/xcloudflow`, `/xscopehub` - Updated `isHiddenRoute` check to include these dynamic routes - Navbar automatically hides when visiting these product pages ### Changes: **File: src/components/Navbar.tsx** - Extended the hidden route list to include: - `/xstream` - XStream product page - `/xcloudflow` - XCloudFlow product page - `/xscopehub` - XScopeHub product page - Existing hidden routes: `/login`, `/register` ### Result: - ✅ Navbar is hidden on all product landing pages - ✅ Language component remains globally accessible and shared - ✅ No code duplication - LanguageToggle is reusable - ✅ Clean separation of concerns ### Usage: Any component can import and use the shared Language component: ```typescript import LanguageToggle from '@/components/LanguageToggle' ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- dashboard/src/components/Navbar.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dashboard/src/components/Navbar.tsx b/dashboard/src/components/Navbar.tsx index 0741327..1554067 100644 --- a/dashboard/src/components/Navbar.tsx +++ b/dashboard/src/components/Navbar.tsx @@ -27,7 +27,11 @@ type NavSubItem = { export default function Navbar() { const pathname = usePathname() - const isHiddenRoute = pathname ? ['/login', '/register'].some((prefix) => pathname.startsWith(prefix)) : false + const isHiddenRoute = pathname + ? ['/login', '/register', '/xstream', '/xcloudflow', '/xscopehub'].some((prefix) => + pathname.startsWith(prefix), + ) + : false const [menuOpen, setMenuOpen] = useState(false) const [mobileServicesOpen, setMobileServicesOpen] = useState(false) const [selectedChannels, setSelectedChannels] = useState(['stable'])