import { StrictMode, Suspense, lazy, useEffect } from 'react'; import { createRoot } from 'react-dom/client'; import { BrowserRouter, Route, Routes, useLocation, useNavigate } from 'react-router'; import 'pretendard/dist/web/variable/pretendardvariable-dynamic-subset.css'; import './styles/global.css'; import { ConnectionBanner, Toasts } from './components/ui'; import { useSession } from './store/session'; import { toast } from './store/toast'; import { Home } from './pages/Home'; import { SiteHeader } from './components/SiteHeader'; import { initPwa } from './lib/pwa'; const JoinPage = lazy(() => import('./pages/JoinPage')); const RoomPage = lazy(() => import('./pages/RoomPage')); const GamePage = lazy(() => import('./pages/GamePage')); const MePage = lazy(() => import('./pages/MePage')); const LoginPage = lazy(() => import('./pages/LoginPage')); const ReplayPage = lazy(() => import('./pages/ReplayPage')); const RulesPage = lazy(() => import('./pages/RulesPage')); const NotFound = lazy(() => import('./pages/NotFound')); const AdminApp = lazy(() => import('./pages/admin/AdminApp')); const GamesPage = lazy(() => import('./pages/GamesPage')); function Announcement() { const text = useSession((s) => s.announcement); const maintenance = useSession((s) => s.maintenance); if (!text && !maintenance) return null; return (