- New Dashboard page: task stats grid, active tasks, up-next queue, recent activity, recently completed - Dashboard is now the home page (/) - Sidebar: Dashboard → Queue → Projects → Chat - Queue page defaults redirect to / instead of /queue
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
|
|
import { DashboardLayout } from "./components/DashboardLayout";
|
|
import { DashboardPage } from "./pages/DashboardPage";
|
|
import { QueuePage } from "./pages/QueuePage";
|
|
import { ChatPage } from "./pages/ChatPage";
|
|
import { ProjectsPage } from "./pages/ProjectsPage";
|
|
import { AdminPage } from "./components/AdminPage";
|
|
import { LoginPage } from "./components/LoginPage";
|
|
import { useSession } from "./lib/auth-client";
|
|
|
|
function AuthenticatedApp() {
|
|
return (
|
|
<BrowserRouter>
|
|
<Routes>
|
|
<Route element={<DashboardLayout />}>
|
|
<Route path="/" element={<DashboardPage />} />
|
|
<Route path="/queue" element={<QueuePage />} />
|
|
<Route path="/projects" element={<ProjectsPage />} />
|
|
<Route path="/chat" element={<ChatPage />} />
|
|
<Route path="/admin" element={<AdminPage />} />
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Route>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
);
|
|
}
|
|
|
|
function App() {
|
|
const session = useSession();
|
|
|
|
if (session.isPending) {
|
|
return (
|
|
<div className="min-h-screen bg-gray-50 flex items-center justify-center">
|
|
<div className="text-gray-400">Loading...</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
if (!session.data) {
|
|
return <LoginPage onSuccess={() => window.location.reload()} />;
|
|
}
|
|
|
|
return <AuthenticatedApp />;
|
|
}
|
|
|
|
export default App;
|