import React, { useState } from 'react'; import { HashRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { Navbar } from './components/Navbar'; import { Hero } from './components/Hero'; import { CourseGrid } from './components/CourseGrid'; import { ManageCourses } from './pages/ManageCourses'; import { MaterialsPage } from './pages/MaterialsPage'; import { CoursePlayerModal } from './components/CoursePlayerModal'; import { AuthProvider, useAuth } from './context/AuthContext'; import { ToastProvider } from './context/ToastContext'; import { Course, UserRole } from './types'; import { SuperAdmin } from './pages/SuperAdmin'; import { AccessTokenPage } from './pages/AccessTokenPage'; import { MyLearning } from './pages/MyLearning'; import { ProfilePage } from './pages/ProfilePage'; import { InstructorProfile } from './pages/InstructorProfile'; import { TrailDetail } from './pages/TrailDetail'; import { TrailPage } from './pages/TrailPage'; // Protected Route Component const ProtectedRoute: React.FC<{ children: React.ReactNode; allowedRoles?: UserRole[] }> = ({ children, allowedRoles }) => { const { user, isLoading } = useAuth(); if (isLoading) return null; if (!user) { return ; } if (allowedRoles && !allowedRoles.includes(user.role)) { return ; } return <>{children}>; }; // Home component interface HomeProps { onPlay: (course: Course) => void; } const Home: React.FC = ({ onPlay }) => { return ( ); }; function AppContent() { const [selectedCourse, setSelectedCourse] = useState(null); return ( {/* Navbar with Direct Materials Hub Trigger */} } /> {/* Full Dedicated Materials & Downloads Page */} } /> {/* Professor Route - Protected */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Catch all redirect */} } /> {/* Global Player Modal */} setSelectedCourse(null)} /> {/* Footer */} ); } function App() { return ( ); } export default App;