diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 53d18a9..5aaf8d2 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -31,6 +31,7 @@ const navItems = [ { path: '/teams', label: 'Team leaderboard' }, { path: '/battle-logs', label: 'Battle Logs' }, { path: '/viewers', label: 'Viewers' }, + { path: '/docs', label: 'Setup' }, ] const analyticsConsentKey = 'tssbot.analyticsConsent' @@ -75,6 +76,7 @@ function parseRoute(pathname = window.location.pathname) { if (pathname === '/uptime') return { page: 'uptime', teamName: '' } if (pathname === '/viewers') return { page: 'viewers', teamName: '' } if (pathname === '/privacy') return { page: 'privacy', teamName: '' } + if (pathname === '/docs') return { page: 'docs', teamName: '' } if (pathname.startsWith('/teams/')) { const teamName = decodeURIComponent(pathname.slice('/teams/'.length)) return { page: 'team', teamName } @@ -353,6 +355,7 @@ function routeLabel(route) { if (route.page === 'uptime') return 'Uptime' if (route.page === 'viewers') return 'viewers' if (route.page === 'privacy') return 'Privacy notice' + if (route.page === 'docs') return 'Docs' return 'Home' } @@ -367,6 +370,7 @@ function canonicalPathForRoute(route) { if (route.page === 'uptime') return '/uptime' if (route.page === 'viewers') return '/viewers' if (route.page === 'privacy') return '/privacy' + if (route.page === 'docs') return '/docs' return '/' } @@ -425,6 +429,12 @@ function seoForRoute(route, profileDetail = null) { robots: 'index, follow', path: '/privacy', }, + docs: { + title: "Docs | Toothless' TSS Bot", + description: 'Documentation and command reference for Toothless TSS Bot.', + robots: 'noindex, follow', + path: '/docs', + }, } return byPage[route.page] || { @@ -1591,6 +1601,7 @@ function AppContent() { {route.page === 'uptime' ? : null} {route.page === 'viewers' ? : null} {route.page === 'privacy' ? : null} + {route.page === 'docs' ? : null}