import { useEffect, useState } from 'react';
import { createRoot } from 'react-dom/client';
import App from './app/App';
import { AdminDashboardPage } from './app/admin/AdminDashboardPage';
import { AdminLoginPage } from './app/admin/AdminLoginPage';
import { isAdminAuthenticated } from './app/utils/auth';
import { Toaster } from './app/components/ui/sonner';
import './styles/index.css';
function getCurrentRoute() {
const hash = window.location.hash.replace(/^#/, '');
return hash || '/';
}
function navigate(path: string) {
window.location.hash = path;
}
function RouterApp() {
const [path, setPath] = useState(getCurrentRoute());
const [isAuthed, setIsAuthed] = useState(isAdminAuthenticated());
useEffect(() => {
const sync = () => {
setPath(getCurrentRoute());
setIsAuthed(isAdminAuthenticated());
};
window.addEventListener('hashchange', sync);
window.addEventListener('popstate', sync);
if (!window.location.hash) {
navigate('/');
}
return () => {
window.removeEventListener('hashchange', sync);
window.removeEventListener('popstate', sync);
};
}, []);
const onLoginSuccess = () => {
setIsAuthed(true);
navigate('/admin');
};
const onLogout = () => {
setIsAuthed(false);
navigate('/admin');
};
const isAdminRoute = path.startsWith('/admin');
return (
<>
{isAdminRoute ? (
isAuthed ? :
) : (
)}
>
);
}
createRoot(document.getElementById('root')!).render();