import { useEffect, useState } from 'react'; import {Navigate, Route, Routes} from 'react-router-dom'; import { UserLayout } from './user/UserLayout'; import { UserListPage } from './user/UserListPage'; import {AdminRoute} from "./admin/route/AdminRoute.tsx"; import {ToastContainer} from "react-toastify"; import {UserContentPreviewPage} from "./user/UserContentPreviewPage.tsx"; type Skin = 'admin' | 'user'; function getInitialSkin(): Skin { const params = new URLSearchParams(window.location.search); return params.get('skin') === 'user' ? 'user' : 'admin'; } function switchSkin(nextSkin: Skin) { const url = new URL(window.location.href); url.searchParams.set('skin', nextSkin); window.location.href = url.toString(); } export default function App() { const [skin] = useState(getInitialSkin); const [styleReady, setStyleReady] = useState(false); useEffect(() => { let mounted = true; document.body.dataset.skin = skin; const loadStyles = skin === 'admin' ? import('./admin') : import('./user'); loadStyles.finally(() => { if (mounted) { setStyleReady(true); } }); return () => { mounted = false; }; }, [skin]); if (!styleReady) { return
Loading publishing styles...
; } return ( <>
{skin === 'admin' ? ( ) : ( )} /> )} /> } /> )} ); }