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 ArticleHistory = lazy(() => import('~/pages/ArticleHistory'));
const LlmLogs = lazy(() => import('~/pages/LlmLogs'));
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;