diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx new file mode 100644 index 0000000..abb2be5 --- /dev/null +++ b/frontend/src/components/Layout.tsx @@ -0,0 +1,64 @@ +import { Link, Outlet } from 'react-router-dom' +import { useAuthStore } from '../stores/auth' +import { useThemeStore } from '../stores/theme' + +export default function Layout() { + const { user, logout } = useAuthStore() + const { theme, toggleTheme } = useThemeStore() + + return ( + <> + +
+ +
+ + ) +} diff --git a/frontend/src/pages/GeneratePage.tsx b/frontend/src/pages/GeneratePage.tsx index 0fc55ce..868e553 100644 --- a/frontend/src/pages/GeneratePage.tsx +++ b/frontend/src/pages/GeneratePage.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react' -import { Link, useNavigate, useParams } from 'react-router-dom' +import { useNavigate, useParams } from 'react-router-dom' import { useTaskStore } from '../stores/task' import { useGenerationStore } from '../stores/generation' import GenerateForm from '../components/GenerateForm' @@ -46,28 +46,7 @@ export default function GeneratePage() { return (
- {/* 顶栏 */} -
-

新建生成

- - 返回工程 - -
+

新建生成

{/* 生成表单 */} {status === 'idle' || status === 'submitting' ? ( diff --git a/frontend/src/pages/ProjectPage.tsx b/frontend/src/pages/ProjectPage.tsx index 8dbefc8..df40981 100644 --- a/frontend/src/pages/ProjectPage.tsx +++ b/frontend/src/pages/ProjectPage.tsx @@ -1,7 +1,6 @@ import { useEffect, useState } from 'react' import { Link, useParams } from 'react-router-dom' import { useProjectStore } from '../stores/project' -import { useAuthStore } from '../stores/auth' import { getTasks } from '../api/project' import type { Task } from '../api/types' import StyleSelector from '../components/StyleSelector' @@ -15,7 +14,6 @@ const STATUS_LABELS: Record = { export default function ProjectPage() { const { projectId = 'proj-default' } = useParams() - const { user, logout } = useAuthStore() const { name, style, @@ -45,25 +43,7 @@ export default function ProjectPage() { return (
- {/* 顶栏 */} -
-

{loading ? '加载中...' : name}

-
- - {user?.username} - - -
-
+

{loading ? '加载中...' : name}

{/* 工程风格 */}
diff --git a/frontend/src/pages/ResultPage.tsx b/frontend/src/pages/ResultPage.tsx index 4a0bd62..83738b1 100644 --- a/frontend/src/pages/ResultPage.tsx +++ b/frontend/src/pages/ResultPage.tsx @@ -42,28 +42,7 @@ export default function ResultPage() { return (
- {/* 顶栏 */} -
-

生成结果

- - 返回工程 - -
+

生成结果

{/* 任务信息 */}
diff --git a/frontend/src/router/index.tsx b/frontend/src/router/index.tsx index f29091d..8c6f1c7 100644 --- a/frontend/src/router/index.tsx +++ b/frontend/src/router/index.tsx @@ -1,5 +1,6 @@ import { createBrowserRouter, Navigate, Outlet } from 'react-router-dom' import { useAuthStore } from '../stores/auth' +import Layout from '../components/Layout' import LoginPage from '../pages/LoginPage' import RegisterPage from '../pages/RegisterPage' import ProjectPage from '../pages/ProjectPage' @@ -25,20 +26,25 @@ export const router = createBrowserRouter([ element: , children: [ { - path: '/', - element: , - }, - { - path: '/projects/:projectId', - element: , - }, - { - path: '/projects/:projectId/generate', - element: , - }, - { - path: '/projects/:projectId/tasks/:taskId', - element: , + element: , + children: [ + { + path: '/', + element: , + }, + { + path: '/projects/:projectId', + element: , + }, + { + path: '/projects/:projectId/generate', + element: , + }, + { + path: '/projects/:projectId/tasks/:taskId', + element: , + }, + ], }, ], },