diff --git a/client/package-lock.json b/client/package-lock.json index 6659806..0b31c7b 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -15,6 +15,7 @@ "antd": "^5.15.0", "axios": "^1.6.8", "clsx": "^2.0.0", + "framer-motion": "^11.0.0", "jsonwebtoken": "^9.0.2", "lucide-react": "^0.363.0", "monaco-editor": "^0.47.0", @@ -3213,6 +3214,33 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", + "license": "MIT", + "dependencies": { + "motion-dom": "^11.18.1", + "motion-utils": "^11.18.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3970,6 +3998,21 @@ "integrity": "sha512-VabVvHvQ9QmMwXu4du008ZDuyLnHs9j7ThVFsiJoXSOQk18+LF89N4ADzPbFenm0W4V2bGHnFBztIRQTgBfxzw==", "license": "MIT" }, + "node_modules/motion-dom": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", + "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^11.18.1" + } + }, + "node_modules/motion-utils": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", + "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -5788,6 +5831,12 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/client/package.json b/client/package.json index 46a02ae..8d61bf3 100644 --- a/client/package.json +++ b/client/package.json @@ -14,6 +14,7 @@ "antd": "^5.15.0", "axios": "^1.6.8", "clsx": "^2.0.0", + "framer-motion": "^11.0.0", "jsonwebtoken": "^9.0.2", "lucide-react": "^0.363.0", "monaco-editor": "^0.47.0", diff --git a/client/src/App.tsx b/client/src/App.tsx index f45a805..9123869 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -4,6 +4,7 @@ import { ConfigProvider, theme } from 'antd' import { useAuthStore } from '@/stores/authStore' import { useThemeStore } from '@/stores/themeStore' import Layout from '@/components/Layout' +import PageTransition from '@/components/PageTransition' import LoginPage from '@/pages/LoginPage' import HomePage from '@/pages/HomePage' import TerminalPage from '@/pages/TerminalPage' @@ -97,14 +98,14 @@ function App() { - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> } /> diff --git a/client/src/components/Layout.tsx b/client/src/components/Layout.tsx index 1e7e75e..7bb8549 100644 --- a/client/src/components/Layout.tsx +++ b/client/src/components/Layout.tsx @@ -78,7 +78,7 @@ const Layout: React.FC = ({ children }) => { {/* 导航菜单 */} -