Files
hammer-queue/frontend/src/App.tsx
Hammer c4368072bf feat: dashboard overview page with stats, activity, and up-next (HQ-21)
- 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
2026-01-29 06:07:21 +00:00

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;