Spaces:
Running
Running
File size: 1,709 Bytes
2eb87e3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { Layout } from "./components/Layout";
import { ProductHomePage } from "./features/home/ProductHomePage";
import { SubmitPage } from "./features/submit/SubmitPage";
import { ProjectPage } from "./features/project/ProjectPage";
import { AboutPage } from "./features/about/AboutPage";
import { MyProjectsPage } from "./features/my/MyProjectsPage";
import { PopupCallbackPage } from "./features/auth/PopupCallbackPage";
const qc = new QueryClient({
defaultOptions: {
queries: {
retry: 1,
refetchOnWindowFocus: false,
},
},
});
/** 单着陆页:深色 deck(task-5ee34751 融合定稿)。 */
const Landing = ProductHomePage;
export function App() {
return (
<QueryClientProvider client={qc}>
<BrowserRouter future={{ v7_startTransition: true, v7_relativeSplatPath: true }}>
<Routes>
<Route element={<Layout />}>
<Route index element={<Landing />} />
<Route path="pulse" element={<Navigate to="/" replace />} />
<Route path="submit" element={<SubmitPage />} />
<Route path="p/:owner/:repo" element={<ProjectPage />} />
<Route path="my" element={<MyProjectsPage />} />
<Route path="about" element={<AboutPage />} />
<Route path="*" element={<Navigate to="/" replace />} />
</Route>
{/* Popup OAuth callback — standalone (no Layout) */}
<Route path="/auth/popup-callback" element={<PopupCallbackPage />} />
</Routes>
</BrowserRouter>
</QueryClientProvider>
);
}
|