import { type Component, type ParentComponent, Show, lazy } from 'solid-js'; import { Router, Route, Navigate } from '@solidjs/router'; import { AuthProvider, useAuth } from '~/contexts/AuthContext'; import { I18nProvider } from '~/i18n'; import { ToastProvider } from '~/components/ui/Toast'; import AppErrorBoundary from '~/components/ErrorBoundary'; import Layout from '~/components/Layout'; import AdminLayout from '~/components/AdminLayout'; import LoadingSpinner from '~/components/ui/LoadingSpinner'; const Login = lazy(() => import('~/pages/Login')); const Register = lazy(() => import('~/pages/Register')); const AuthVerify = lazy(() => import('~/pages/AuthVerify')); const Home = lazy(() => import('~/pages/Home')); const Settings = lazy(() => import('~/pages/Settings')); const Sources = lazy(() => import('~/pages/Sources')); const GenerateSynthesis = lazy(() => import('~/pages/GenerateSynthesis')); const SynthesisDetail = lazy(() => import('~/pages/SynthesisDetail')); const AdminProviders = lazy(() => import('~/pages/admin/Providers')); const AdminRateLimits = lazy(() => import('~/pages/admin/RateLimits')); const AdminUsers = lazy(() => import('~/pages/admin/Users')); const ProtectedLayout: ParentComponent = (props) => { const { user, loading } = useAuth(); return ( }> }> {props.children} ); }; const ProtectedAdminLayout: ParentComponent = (props) => { const { user, loading, isAdmin } = useAuth(); return ( }> }> {props.children} ); }; const App: Component = () => { return ( {/* Public routes */} {/* Protected routes with layout wrapper */} {/* Admin routes with admin layout wrapper */} } /> {/* Catch-all redirect */} } /> ); }; export default App;