feat: add Roadmap nav link for admins

- Added Roadmap link in dropdown menu (below About), admin-only
- Added Roadmap in admin sidebar nav
- Added /admin/roadmap route pointing to AboutPage with admin prop
- Uses Map icon from lucide-react
This commit is contained in:
null 2026-05-09 21:26:39 -05:00
parent 852da29b4d
commit d8888af845
2 changed files with 20 additions and 1 deletions

View File

@ -101,6 +101,18 @@ export default function App() {
</RequireAuth> </RequireAuth>
} }
/> />
<Route
path="/admin/roadmap"
element={
<RequireAuth role="admin">
<ErrorBoundary>
<AdminShell>
<AboutPage admin />
</AdminShell>
</ErrorBoundary>
</RequireAuth>
}
/>
<Route <Route
path="/admin/status" path="/admin/status"
element={ element={

View File

@ -1,7 +1,7 @@
import { useState, useMemo } from 'react'; import { useState, useMemo } from 'react';
import { NavLink, useLocation, useNavigate } from 'react-router-dom'; import { NavLink, useLocation, useNavigate } from 'react-router-dom';
import { import {
Activity, BarChart3, CalendarDays, ChevronDown, ClipboardList, Database, Info, LayoutGrid, LogOut, Menu, Receipt, Activity, BarChart3, CalendarDays, ChevronDown, ClipboardList, Database, Info, LayoutGrid, LogOut, Map, Menu, Receipt,
Settings, ShieldCheck, Tag, User, X, Settings, ShieldCheck, Tag, User, X,
} from 'lucide-react'; } from 'lucide-react';
import { cn } from '@/lib/utils'; import { cn } from '@/lib/utils';
@ -27,6 +27,7 @@ const userNavItems = [
const adminNavItems = [ const adminNavItems = [
{ to: '/admin', icon: ShieldCheck, label: 'Admin Panel', end: true }, { to: '/admin', icon: ShieldCheck, label: 'Admin Panel', end: true },
{ to: '/admin/status', icon: Activity, label: 'System Status' }, { to: '/admin/status', icon: Activity, label: 'System Status' },
{ to: '/admin/roadmap', icon: Map, label: 'Roadmap' },
]; ];
const trackerItems = [ const trackerItems = [
@ -141,6 +142,12 @@ function UserMenu({ adminMode = false }) {
<Info className="h-4 w-4" /> <Info className="h-4 w-4" />
About About
</DropdownMenuItem> </DropdownMenuItem>
{user?.role === 'admin' && (
<DropdownMenuItem onSelect={() => navigate('/admin/roadmap')}>
<Map className="h-4 w-4" />
Roadmap
</DropdownMenuItem>
)}
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem destructive onSelect={handleLogout}> <DropdownMenuItem destructive onSelect={handleLogout}>
<LogOut className="h-4 w-4" /> <LogOut className="h-4 w-4" />