import { useEffect, useState } from "react"; import { Navigate, Route, Routes } from "react-router-dom"; import { Toaster } from "sonner"; import { AuthProvider } from "./contexts/AuthContext"; import { LandingPage } from "./pages/LandingPage"; import { DashboardPage } from "./pages/DashboardPage"; import { GroupResultsPage } from "./pages/GroupResultsPage"; import { AuthCallbackPage } from "./pages/AuthCallbackPage"; /** * App shell. Declares the top-level routes and mounts the global * notification portal (sonner). Router itself lives in `main.jsx` so tests * can wrap `` with a `MemoryRouter` if needed. */ export default function App() { const [isMobile, setIsMobile] = useState(false); useEffect(() => { const mediaQuery = window.matchMedia("(max-width: 640px)"); const updateViewport = () => { setIsMobile(mediaQuery.matches); }; updateViewport(); mediaQuery.addEventListener("change", updateViewport); return () => { mediaQuery.removeEventListener("change", updateViewport); }; }, []); return ( } /> } /> } /> } /> } /> ); }