import React, { useState } from 'react'; import { Plus, RefreshCw, Menu, Loader } from 'lucide-react'; import { useAuth } from './contexts/AuthContext'; import LoginForm from './components/LoginForm'; import UserMenu from './components/UserMenu'; import UserManagement from './components/UserManagement'; import AuditLog from './components/AuditLog'; import NvdSyncModal from './components/NvdSyncModal'; import NavDrawer from './components/NavDrawer'; import AdminScopeToggle from './components/AdminScopeToggle'; import VulnerabilityTriagePage from './components/pages/ReportingPage'; import KnowledgeBasePage from './components/pages/KnowledgeBasePage'; import ExportsPage from './components/pages/ExportsPage'; import CompliancePage from './components/pages/CompliancePage'; import CCPMetricsPage from './components/pages/CCPMetricsPage'; import JiraPage from './components/pages/JiraPage'; import AdminPage from './components/pages/AdminPage'; import ArcherTemplatePage from './components/pages/ArcherTemplatePage'; import HomePage from './components/pages/HomePage'; import FeedbackModal from './components/FeedbackModal'; import NotificationBell from './components/NotificationBell'; import './App.css'; const VALID_PAGES = new Set(['home', 'triage', 'compliance', 'knowledge-base', 'exports', 'jira', 'admin', 'archer-templates']); export default function App() { const { isAuthenticated, loading: authLoading, canWrite, isAdmin, isInGroup } = useAuth(); const [currentPage, setCurrentPageRaw] = useState(() => { try { const saved = localStorage.getItem('cve-dashboard-page'); return saved && VALID_PAGES.has(saved) ? saved : 'home'; } catch { return 'home'; } }); const setCurrentPage = (page) => { setCurrentPageRaw(page); try { localStorage.setItem('cve-dashboard-page', page); } catch {} }; const [navOpen, setNavOpen] = useState(false); const [calendarFilter, setCalendarFilter] = useState(null); const [reportingExcFilter, setReportingExcFilter] = useState(null); const [showAddCVE, setShowAddCVE] = useState(false); const [showUserManagement, setShowUserManagement] = useState(false); const [showAuditLog, setShowAuditLog] = useState(false); const [showFeedback, setShowFeedback] = useState(false); const [feedbackType, setFeedbackType] = useState('bug'); const [showNvdSync, setShowNvdSync] = useState(false); // Navigation handler that accepts optional context (filters) const handleNavigate = (page, context) => { if (page === 'triage') { setCalendarFilter(context?.calendarFilter || null); setReportingExcFilter(context?.reportingExcFilter || null); } setCurrentPage(page); }; // Show loading while checking auth if (authLoading) { return (
Loading...
Advanced Engineering Group Intelligence System