From 1e7b195f9f16098aaa35f6f03ba7c87d2bd5c1f7 Mon Sep 17 00:00:00 2001 From: v-zhangjc9 Date: Mon, 12 May 2025 10:42:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20=E6=9B=B4=E6=8D=A2=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=A1=86=E6=9E=B6=E4=B8=BApro-layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service-web/client/package.json | 6 +- service-web/client/pnpm-lock.yaml | 541 ++++++++++++++++++ service-web/client/src/index.tsx | 69 +-- service-web/client/src/pages/Ai.tsx | 18 + service-web/client/src/pages/App.tsx | 84 ++- service-web/client/src/pages/Home.tsx | 83 --- .../src/pages/{ => ai}/Conversation.tsx | 2 +- .../client/src/pages/{ => overview}/Cloud.tsx | 2 +- .../client/src/pages/{ => overview}/Queue.tsx | 2 +- .../client/src/pages/{ => overview}/Table.tsx | 2 +- .../client/src/pages/{ => overview}/Task.tsx | 2 +- .../client/src/pages/{ => overview}/Tool.tsx | 2 +- .../src/pages/{ => overview}/Version.tsx | 2 +- .../client/src/pages/{ => overview}/Yarn.tsx | 2 +- .../src/pages/{ => overview}/YarnCluster.tsx | 2 +- service-web/client/src/route.tsx | 157 +++++ .../src/main/resources/logback-spring.xml | 18 - 17 files changed, 772 insertions(+), 222 deletions(-) create mode 100644 service-web/client/src/pages/Ai.tsx delete mode 100644 service-web/client/src/pages/Home.tsx rename service-web/client/src/pages/{ => ai}/Conversation.tsx (85%) rename service-web/client/src/pages/{ => overview}/Cloud.tsx (98%) rename service-web/client/src/pages/{ => overview}/Queue.tsx (98%) rename service-web/client/src/pages/{ => overview}/Table.tsx (99%) rename service-web/client/src/pages/{ => overview}/Task.tsx (99%) rename service-web/client/src/pages/{ => overview}/Tool.tsx (99%) rename service-web/client/src/pages/{ => overview}/Version.tsx (99%) rename service-web/client/src/pages/{ => overview}/Yarn.tsx (99%) rename service-web/client/src/pages/{ => overview}/YarnCluster.tsx (83%) create mode 100644 service-web/client/src/route.tsx diff --git a/service-web/client/package.json b/service-web/client/package.json index 44753d3..d07a6fd 100644 --- a/service-web/client/package.json +++ b/service-web/client/package.json @@ -10,6 +10,9 @@ }, "dependencies": { "@ant-design/icons": "^6.0.0", + "@ant-design/pro-components": "^2.8.7", + "@ant-design/pro-layout": "^7.22.4", + "@ant-design/x": "^1.2.0", "@fortawesome/fontawesome-free": "^6.7.2", "@tinyflow-ai/react": "^0.1.6", "amis": "^6.12.0", @@ -18,7 +21,8 @@ "licia": "^1.48.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router": "^7.5.3" + "react-router": "^7.5.3", + "styled-components": "^6.1.18" }, "devDependencies": { "@types/react": "^18.2.0", diff --git a/service-web/client/pnpm-lock.yaml b/service-web/client/pnpm-lock.yaml index bae2bb0..5c83b20 100644 --- a/service-web/client/pnpm-lock.yaml +++ b/service-web/client/pnpm-lock.yaml @@ -11,6 +11,15 @@ importers: '@ant-design/icons': specifier: ^6.0.0 version: 6.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-components': + specifier: ^2.8.7 + version: 2.8.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-layout': + specifier: ^7.22.4 + version: 7.22.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/x': + specifier: ^1.2.0 + version: 1.2.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@fortawesome/fontawesome-free': specifier: ^6.7.2 version: 6.7.2 @@ -38,6 +47,9 @@ importers: react-router: specifier: ^7.5.3 version: 7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: + specifier: ^6.1.18 + version: 6.1.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@types/react': specifier: ^18.2.0 @@ -113,21 +125,150 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' + '@ant-design/pro-card@2.9.7': + resolution: {integrity: sha512-uDDYowmYH1ldRfG8Mb4QOwcEEz6ptRBQDLO1tkVADCRkdOMwz82xlZneR4uVuFyKcuNmgHzarYNncozBKhFuaA==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + + '@ant-design/pro-components@2.8.7': + resolution: {integrity: sha512-QhibkPsUJryEjI1QmwUn+XCngGHidu0ekvricL6TIEvPgP+AUAca29XutN5+Mmn8Xfja1ca9HFTHTgFoV74Z7Q==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-descriptions@2.6.7': + resolution: {integrity: sha512-fgn2d0kDWUODGDWKpgziZuuqPlmIoKxQFJY9Yg4nbaRp8GDDKZeSSqgvW+OxjpYM8dxq31fiz1dZlZnOPoYKpg==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + + '@ant-design/pro-field@3.0.4': + resolution: {integrity: sha512-nJSng/6/pPZFdiFeTtZcBQLNrHg9tIeiKFR1+zzbnQbI3qBOFP9aBZS/+LwkQZcI2G71vrRgz2x5OhHb7AX0wQ==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + + '@ant-design/pro-form@2.31.7': + resolution: {integrity: sha512-0TCtIC/ynbLPoes8sLBFwFbi0tkeNmSU6the2EcyKIKDLfWHDbfkLM1OSFrzv3QD+H8OgFWMkTSOjhMOKSsOBg==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + rc-field-form: '>=1.22.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-layout@7.22.4': + resolution: {integrity: sha512-X2WO4L2itXemX4zhS+0NG+8kXQD5SX9sG+zjx/15BmIO3FvsUGqOHgoCg0vhd424EiyPj7WtdMZJ39G1xdgDwA==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-list@2.6.7': + resolution: {integrity: sha512-6k/En7pioMgepho/1HMf2DAnkSTZiat1lDg2ggCok2lhSgqXzir7x22ewJQRgPvEiVb6/qqaFQNd7a8dnrFj1w==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-provider@2.15.4': + resolution: {integrity: sha512-DBX0JNUNOYXAucVqd/zTdqtXckCDqr2Lo85KIku2YzWdhptDPDZRTNqL04JShjGejDl8fzwQ8yREHgVUfzn6Gg==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-skeleton@2.2.1': + resolution: {integrity: sha512-3M2jNOZQZWEDR8pheY00OkHREfb0rquvFZLCa6DypGmiksiuuYuR9Y4iA82ZF+mva2FmpHekdwbje/GpbxqBeg==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-table@3.19.0': + resolution: {integrity: sha512-nL25734d5q5oqtmG7Apn2TNJUnJE8m9dkopXMQdoNZnv8qeRQLBH+i5cZT1yh7FIO8z6QLXleg+KnR/cI7VRRw==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + rc-field-form: '>=1.22.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@ant-design/pro-utils@2.17.0': + resolution: {integrity: sha512-hHKUISjMEoS+E5ltJWyvNTrlEA3IimZNxtDrEhorRIbgVYAlmEN5Mj/ESSofzDM3+UlxiI5+A/Y6IHkByTfDEA==} + peerDependencies: + antd: ^4.24.15 || ^5.11.2 + react: '>=17.0.0' + react-dom: '>=17.0.0' + '@ant-design/react-slick@1.1.2': resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} peerDependencies: react: '>=16.9.0' + '@ant-design/x@1.2.0': + resolution: {integrity: sha512-sV+C6ER+xn6XQF3gYN3Ma9MnK8Bcfj+5C4cRvtKNvzExHwC6laBD1g6TWHH7vFPDOQUhYlJT4tw+NdcvZJx/ZA==} + peerDependencies: + antd: ^5.20.3 + react: '>=18.0.0' + react-dom: '>=18.0.0' + '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} + '@chenshuai2144/sketch-color@1.0.9': + resolution: {integrity: sha512-obzSy26cb7Pm7OprWyVpgMpIlrZpZ0B7vbrU0RMbvRg0YAI890S5Xy02Aj1Nhl4+KTbi1lVYHt6HQP8Hm9s+1w==} + peerDependencies: + react: '>=16.12.0' + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@dnd-kit/accessibility@3.1.1': + resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.3.1': + resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/modifiers@6.0.1': + resolution: {integrity: sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==} + peerDependencies: + '@dnd-kit/core': ^6.0.6 + react: '>=16.8.0' + + '@dnd-kit/sortable@7.0.2': + resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} + peerDependencies: + '@dnd-kit/core': ^6.0.7 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + '@emotion/hash@0.8.0': resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + '@emotion/unitless@0.7.5': resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + '@esbuild/aix-ppc64@0.25.4': resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} engines: {node: '>=18'} @@ -802,6 +943,9 @@ packages: '@types/react@18.3.21': resolution: {integrity: sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw==} + '@types/stylis@4.2.5': + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + '@types/warning@3.0.3': resolution: {integrity: sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==} @@ -852,6 +996,14 @@ packages: resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@umijs/route-utils@4.0.1': + resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} + + '@umijs/use-params@1.0.9': + resolution: {integrity: sha512-QlN0RJSBVQBwLRNxbxjQ5qzqYIGn+K7USppMoIOVlf7fxXHsnQZ2bEsa6Pm74bt6DVQxpUE8HqvdStn6Y9FV1w==} + peerDependencies: + react: '*' + '@vitejs/plugin-react-swc@3.9.0': resolution: {integrity: sha512-jYFUSXhwMCYsh/aQTgSGLIN3Foz5wMbH9ahb0Zva//UzwZYbMiZd7oT3AU9jHT9DLswYDswsRwPU9jVF3yA48Q==} peerDependencies: @@ -882,6 +1034,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + add-dom-event-listener@1.1.0: + resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} + adler-32@1.3.1: resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} engines: {node: '>=0.8'} @@ -1054,6 +1209,9 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} engines: {node: '>=6'} @@ -1186,6 +1344,13 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -2099,6 +2264,13 @@ packages: resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} engines: {node: '>=16.20.0'} + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} @@ -2297,6 +2469,12 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' + rc-resize-observer@0.2.6: + resolution: {integrity: sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + rc-resize-observer@1.4.3: resolution: {integrity: sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==} peerDependencies: @@ -2381,6 +2559,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' + rc-util@4.21.1: + resolution: {integrity: sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==} + rc-util@5.44.4: resolution: {integrity: sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==} peerDependencies: @@ -2571,6 +2752,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -2618,6 +2803,9 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2690,6 +2878,16 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + styled-components@6.1.18: + resolution: {integrity: sha512-Mvf3gJFzZCkhjY2Y/Fx9z1m3dxbza0uI9H1CbNZm/jSHCojzJhQ0R7bByrlFJINnMzz/gPulpoFFGymNwrsMcw==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + + stylis@4.3.2: + resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} + stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} @@ -2701,6 +2899,11 @@ packages: resolution: {integrity: sha512-FbWBxgWOpQfhKvoGJv/TFwzqb4EhJbwCD17dB0tEpQiw1XyUEKZJtgm4nA4xq3LLsMo7hu5UY/BOFmroAxKTMg==} engines: {node: '>=18'} + swr@2.3.3: + resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -2756,6 +2959,9 @@ packages: tslib@2.3.0: resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2831,6 +3037,11 @@ packages: '@types/react': optional: true + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3019,6 +3230,194 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + '@ant-design/pro-card@2.9.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - react-dom + + '@ant-design/pro-components@2.8.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/pro-card': 2.9.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-descriptions': 2.6.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-field': 3.0.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-form': 2.31.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-layout': 7.22.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-list': 2.6.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-skeleton': 2.2.1(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-table': 3.19.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - rc-field-form + + '@ant-design/pro-descriptions@2.6.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/pro-field': 3.0.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-form': 2.31.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-skeleton': 2.2.1(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 0.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - rc-field-form + - react-dom + + '@ant-design/pro-field@3.0.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + '@chenshuai2144/sketch-color': 1.0.9(react@18.3.1) + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + dayjs: 1.11.13 + lodash: 4.17.21 + lodash-es: 4.17.21 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + swr: 2.3.3(react@18.3.1) + transitivePeerDependencies: + - react-dom + + '@ant-design/pro-form@2.31.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-field': 3.0.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + '@chenshuai2144/sketch-color': 1.0.9(react@18.3.1) + '@umijs/use-params': 1.0.9(react@18.3.1) + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + dayjs: 1.11.13 + lodash: 4.17.21 + lodash-es: 4.17.21 + rc-field-form: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/pro-layout@7.22.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + '@umijs/route-utils': 4.0.1 + '@umijs/use-params': 1.0.9(react@18.3.1) + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + lodash: 4.17.21 + lodash-es: 4.17.21 + path-to-regexp: 8.2.0 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + swr: 2.3.3(react@18.3.1) + warning: 4.0.3 + + '@ant-design/pro-list@2.6.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-card': 2.9.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-field': 3.0.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-table': 3.19.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + dayjs: 1.11.13 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 4.21.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - rc-field-form + + '@ant-design/pro-provider@2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + '@ctrl/tinycolor': 3.6.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + dayjs: 1.11.13 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + swr: 2.3.3(react@18.3.1) + + '@ant-design/pro-skeleton@2.2.1(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/pro-table@3.19.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-card': 2.9.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-field': 3.0.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-form': 2.31.7(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-utils': 2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + dayjs: 1.11.13 + lodash: 4.17.21 + lodash-es: 4.17.21 + rc-field-form: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/pro-utils@2.17.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/pro-provider': 2.15.4(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + dayjs: 1.11.13 + lodash: 4.17.21 + lodash-es: 4.17.21 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + safe-stable-stringify: 2.5.0 + swr: 2.3.3(react@18.3.1) + '@ant-design/react-slick@1.1.2(react@18.3.1)': dependencies: '@babel/runtime': 7.27.1 @@ -3028,12 +3427,75 @@ snapshots: resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 + '@ant-design/x@1.2.0(antd@5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/colors': 7.2.0 + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/fast-color': 2.0.6 + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.1 + antd: 5.25.0(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + '@babel/runtime@7.27.1': {} + '@chenshuai2144/sketch-color@1.0.9(react@18.3.1)': + dependencies: + react: 18.3.1 + reactcss: 1.2.3(react@18.3.1) + tinycolor2: 1.6.0 + + '@ctrl/tinycolor@3.6.1': {} + + '@dnd-kit/accessibility@3.1.1(react@18.3.1)': + dependencies: + react: 18.3.1 + tslib: 2.8.1 + + '@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/accessibility': 3.1.1(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + + '@dnd-kit/modifiers@6.0.1(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.8.1 + + '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.8.1 + + '@dnd-kit/utilities@3.2.2(react@18.3.1)': + dependencies: + react: 18.3.1 + tslib: 2.8.1 + '@emotion/hash@0.8.0': {} + '@emotion/is-prop-valid@1.2.2': + dependencies: + '@emotion/memoize': 0.8.1 + + '@emotion/memoize@0.8.1': {} + '@emotion/unitless@0.7.5': {} + '@emotion/unitless@0.8.1': {} + '@esbuild/aix-ppc64@0.25.4': optional: true @@ -3578,6 +4040,8 @@ snapshots: '@types/prop-types': 15.7.14 csstype: 3.1.3 + '@types/stylis@4.2.5': {} + '@types/warning@3.0.3': {} '@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)': @@ -3657,6 +4121,12 @@ snapshots: '@typescript-eslint/types': 8.32.0 eslint-visitor-keys: 4.2.0 + '@umijs/route-utils@4.0.1': {} + + '@umijs/use-params@1.0.9(react@18.3.1)': + dependencies: + react: 18.3.1 + '@vitejs/plugin-react-swc@3.9.0(vite@6.3.5(sass@1.87.0))': dependencies: '@swc/core': 1.11.24 @@ -3695,6 +4165,10 @@ snapshots: acorn@8.14.1: {} + add-dom-event-listener@1.1.0: + dependencies: + object-assign: 4.1.1 + adler-32@1.3.1: {} agent-base@6.0.2: @@ -4054,6 +4528,8 @@ snapshots: callsites@3.1.0: {} + camelize@1.0.1: {} + canvas@2.11.2: dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -4176,6 +4652,14 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-color-keywords@1.0.0: {} + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + csstype@3.1.3: {} d3-color@3.1.0: {} @@ -5100,6 +5584,14 @@ snapshots: pkce-challenge@5.0.0: {} + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.3: dependencies: nanoid: 3.3.11 @@ -5349,6 +5841,15 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + rc-resize-observer@0.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.1 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + resize-observer-polyfill: 1.5.1 + rc-resize-observer@1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.27.1 @@ -5473,6 +5974,14 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + rc-util@4.21.1: + dependencies: + add-dom-event-listener: 1.1.0 + prop-types: 15.8.1 + react-is: 16.13.1 + react-lifecycles-compat: 3.0.4 + shallowequal: 1.1.0 + rc-util@5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.27.1 @@ -5729,6 +6238,8 @@ snapshots: safe-buffer@5.2.1: {} + safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} sass@1.87.0: @@ -5790,6 +6301,8 @@ snapshots: setprototypeof@1.2.0: {} + shallowequal@1.1.0: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -5873,6 +6386,22 @@ snapshots: strip-json-comments@3.1.1: {} + styled-components@6.1.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@emotion/is-prop-valid': 1.2.2 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.5 + css-to-react-native: 3.2.0 + csstype: 3.1.3 + postcss: 8.4.49 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + shallowequal: 1.1.0 + stylis: 4.3.2 + tslib: 2.6.2 + + stylis@4.3.2: {} + stylis@4.3.6: {} supports-color@7.2.0: @@ -5896,6 +6425,12 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + swr@2.3.3(react@18.3.1): + dependencies: + dequal: 2.0.3 + react: 18.3.1 + use-sync-external-store: 1.5.0(react@18.3.1) + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -5947,6 +6482,8 @@ snapshots: tslib@2.3.0: {} + tslib@2.6.2: {} + tslib@2.8.1: {} turbo-stream@2.4.0: {} @@ -6023,6 +6560,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.21 + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} uuid@8.3.2: {} diff --git a/service-web/client/src/index.tsx b/service-web/client/src/index.tsx index 363ba8c..5ec21f3 100644 --- a/service-web/client/src/index.tsx +++ b/service-web/client/src/index.tsx @@ -3,73 +3,8 @@ import {createHashRouter, RouterProvider} from 'react-router' import './components/Registry.ts' -import App from './pages/App.tsx' -import Cloud from './pages/Cloud.tsx' -import Conversation from './pages/Conversation.tsx' -import Home from './pages/Home.tsx' -import Overview from './pages/Overview.tsx' -import Queue from './pages/Queue.tsx' -import Table from './pages/Table.tsx' -import Task from './pages/Task.tsx' -import Tool from './pages/Tool.tsx' -import Version from './pages/Version.tsx' -import Yarn from './pages/Yarn.tsx' -import YarnCluster from './pages/YarnCluster.tsx' - -const routes = createHashRouter([ - { - path: '/', - Component: App, - children: [ - { - Component: Home, - children: [ - { - index: true, - Component: Overview, - }, - { - path: '/home/table', - Component: Table, - }, - { - path: '/home/queue', - Component: Queue, - }, - { - path: '/home/version', - Component: Version, - }, - { - path: '/home/yarn/:clusters/:queue/:search?', - Component: Yarn, - }, - { - path: '/home/cloud', - Component: Cloud, - }, - { - path: '/home/yarn_cluster', - Component: YarnCluster, - }, - { - path: '/home/tool', - Component: Tool, - }, - { - path: '/home/task', - Component: Task, - }, - ], - }, - { - path: 'conversation', - Component: Conversation, - }, - ], - }, -]) +import {routes} from './route.tsx' createRoot(document.getElementById('root')!).render( - , + , ) diff --git a/service-web/client/src/pages/Ai.tsx b/service-web/client/src/pages/Ai.tsx new file mode 100644 index 0000000..897ed8b --- /dev/null +++ b/service-web/client/src/pages/Ai.tsx @@ -0,0 +1,18 @@ +import {amisRender} from '../util/amis.ts' + +function Ai() { + return ( +
+ {amisRender( + { + type: 'wrapper', + body: [ + '逗你的,什么都没做,哎嘿!', + ], + }, + )} +
+ ) +} + +export default Ai \ No newline at end of file diff --git a/service-web/client/src/pages/App.tsx b/service-web/client/src/pages/App.tsx index 97b7dfe..d7ceb0f 100644 --- a/service-web/client/src/pages/App.tsx +++ b/service-web/client/src/pages/App.tsx @@ -1,54 +1,50 @@ -import {Layout, Menu} from 'antd' -import type {ItemType, MenuItemType} from 'antd/es/menu/interface' -import {contain, isEqual} from 'licia' -import React, {useEffect, useState} from 'react' -import {NavLink, Outlet, useLocation} from 'react-router' - -const {Header, Content} = Layout - -const headerNav: Array = [ - {key: '/', label: '首页'}, - {key: '/conversation', label: 'AI'}, -] +import {ProLayout} from '@ant-design/pro-components' +import React, {useEffect} from 'react' +import {Outlet, useLocation, useNavigate} from 'react-router' +import {menus} from '../route.tsx' const App: React.FC = () => { - const [_, setCurrentMenu] = useState() - const [selectedKeys, setSelectedKeys] = useState>([]) + const navigate = useNavigate() const location = useLocation() useEffect(() => { - if (isEqual('/', location.pathname)) { - setSelectedKeys([location.pathname]) - } else { - setSelectedKeys([headerNav.filter(nav => !isEqual(nav?.key, '/')).find(nav => contain(location.pathname, nav?.key))?.key as string ?? '/']) - } - setCurrentMenu(headerNav.find(nav => isEqual(nav?.key, location.pathname))) + console.log(location.pathname) }, [location]) - return ( - -
-
-
Hudi 服务总台
-
Hudi 全链路服务监控和控制台
+ } + title="Hudi 服务总台" + route={menus} + location={{pathname: location.pathname}} + menu={{type: 'sub'}} + menuItemRender={(item, dom) => ( +
{ + navigate(item.path ?? '/') + }} + > + {dom}
- ({ - key: nav.key, - label: {nav.label}, - }))} - style={{minWidth: 0, flex: 'auto'}} - /> -
- - - - - -
+ )} + fixSiderbar={true} + layout="mix" + splitMenus={true} + style={{height: '100vh'}} + contentStyle={{backgroundColor: 'white', padding: '10px 10px 10px 20px'}} + > + + ) } diff --git a/service-web/client/src/pages/Home.tsx b/service-web/client/src/pages/Home.tsx deleted file mode 100644 index b8d2411..0000000 --- a/service-web/client/src/pages/Home.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { - CheckSquareOutlined, - CloudOutlined, - ClusterOutlined, - CompressOutlined, - InfoCircleOutlined, - SunOutlined, - SyncOutlined, - TableOutlined, - ToolOutlined, -} from '@ant-design/icons' -import {Layout, Menu, theme} from 'antd' -import type {ItemType} from 'antd/es/menu/interface' -import {isNil} from 'licia' -import React from 'react' -import {NavLink, Outlet} from 'react-router' -import {commonInfo} from '../util/amis.ts' - -const {Sider, Content} = Layout - -const generateNavItem: any = (key: string, label: string, icon?: any) => { - let nav: any = { - key: key, - label: {label}, - } - if (!isNil(icon)) { - nav['icon'] = icon - } - return nav -} -const siderNav: ItemType[] = [ - generateNavItem('/', '概览', ), - generateNavItem('/home/table', '表任务', ), - generateNavItem('/home/queue', '压缩队列', ), - generateNavItem('/home/version', '跨天', ), - generateNavItem(`/home/yarn/${commonInfo.clusters.sync_names()}/root/Sync`, '同步集群', ), - generateNavItem( - `/home/yarn/${commonInfo.clusters.compaction_names()}/default/Compaction`, - '压缩集群', - , - ), - generateNavItem('/home/cloud', '服务', ), - { - label: '集群', - icon: , - children: [ - generateNavItem('/home/yarn_cluster', '总览', ), - ...Object.keys(commonInfo.clusters.compaction).map(name => generateNavItem( - // @ts-ignore - `/home/yarn/${name}/${commonInfo.clusters.compaction[name]}`, - `${name} 集群`, - , - )), - ], - }, - generateNavItem('/home/tool', '工具', ), - generateNavItem('/home/task', '任务', ), -] - -const Home: React.FC = () => { - const { - token: { - colorBgContainer, - }, - } = theme.useToken() - - return ( - - - - - - - - - ) -} - -export default Home \ No newline at end of file diff --git a/service-web/client/src/pages/Conversation.tsx b/service-web/client/src/pages/ai/Conversation.tsx similarity index 85% rename from service-web/client/src/pages/Conversation.tsx rename to service-web/client/src/pages/ai/Conversation.tsx index 39ea4c3..82da636 100644 --- a/service-web/client/src/pages/Conversation.tsx +++ b/service-web/client/src/pages/ai/Conversation.tsx @@ -1,4 +1,4 @@ -import {amisRender} from '../util/amis.ts' +import {amisRender} from '../../util/amis.ts' function Conversation() { return ( diff --git a/service-web/client/src/pages/Cloud.tsx b/service-web/client/src/pages/overview/Cloud.tsx similarity index 98% rename from service-web/client/src/pages/Cloud.tsx rename to service-web/client/src/pages/overview/Cloud.tsx index 1d6ed27..76525f6 100644 --- a/service-web/client/src/pages/Cloud.tsx +++ b/service-web/client/src/pages/overview/Cloud.tsx @@ -6,7 +6,7 @@ import { serviceLogByAppName, serviceLogByAppNameAndHost, time, -} from '../util/amis.ts' +} from '../../util/amis.ts' const cloudCrud = (title: string, path: string) => { return { diff --git a/service-web/client/src/pages/Queue.tsx b/service-web/client/src/pages/overview/Queue.tsx similarity index 98% rename from service-web/client/src/pages/Queue.tsx rename to service-web/client/src/pages/overview/Queue.tsx index f6a48ba..6bc6a5a 100644 --- a/service-web/client/src/pages/Queue.tsx +++ b/service-web/client/src/pages/overview/Queue.tsx @@ -6,7 +6,7 @@ import { paginationCommonOptions, time, yarnQueueCrud, -} from '../util/amis.ts' +} from '../../util/amis.ts' const queueCrud = (name: string) => { return { diff --git a/service-web/client/src/pages/Table.tsx b/service-web/client/src/pages/overview/Table.tsx similarity index 99% rename from service-web/client/src/pages/Table.tsx rename to service-web/client/src/pages/overview/Table.tsx index fa78933..8df4912 100644 --- a/service-web/client/src/pages/Table.tsx +++ b/service-web/client/src/pages/overview/Table.tsx @@ -14,7 +14,7 @@ import { tableMetaDialog, tableRunningStateMapping, timeAndFrom, -} from '../util/amis.ts' +} from '../../util/amis.ts' function Table() { return ( diff --git a/service-web/client/src/pages/Task.tsx b/service-web/client/src/pages/overview/Task.tsx similarity index 99% rename from service-web/client/src/pages/Task.tsx rename to service-web/client/src/pages/overview/Task.tsx index 1a9a973..01e0b6c 100644 --- a/service-web/client/src/pages/Task.tsx +++ b/service-web/client/src/pages/overview/Task.tsx @@ -1,5 +1,5 @@ import React from 'react' -import {amisRender, commonInfo, paginationCommonOptions, serviceLogByAppName, yarnCrudColumns} from '../util/amis.ts' +import {amisRender, commonInfo, paginationCommonOptions, serviceLogByAppName, yarnCrudColumns} from '../../util/amis.ts' const Task: React.FC = () => { return ( diff --git a/service-web/client/src/pages/Tool.tsx b/service-web/client/src/pages/overview/Tool.tsx similarity index 99% rename from service-web/client/src/pages/Tool.tsx rename to service-web/client/src/pages/overview/Tool.tsx index 60be7fe..506892b 100644 --- a/service-web/client/src/pages/Tool.tsx +++ b/service-web/client/src/pages/overview/Tool.tsx @@ -10,7 +10,7 @@ import { paginationCommonOptions, readOnlyDialogOptions, timelineColumns, -} from '../util/amis.ts' +} from '../../util/amis.ts' const Tool: React.FC = () => { return ( diff --git a/service-web/client/src/pages/Version.tsx b/service-web/client/src/pages/overview/Version.tsx similarity index 99% rename from service-web/client/src/pages/Version.tsx rename to service-web/client/src/pages/overview/Version.tsx index afc3a45..b04a443 100644 --- a/service-web/client/src/pages/Version.tsx +++ b/service-web/client/src/pages/overview/Version.tsx @@ -10,7 +10,7 @@ import { paginationCommonOptions, tableMetaDialog, versionUpdateStateMapping, -} from '../util/amis.ts' +} from '../../util/amis.ts' function Version() { return ( diff --git a/service-web/client/src/pages/Yarn.tsx b/service-web/client/src/pages/overview/Yarn.tsx similarity index 99% rename from service-web/client/src/pages/Yarn.tsx rename to service-web/client/src/pages/overview/Yarn.tsx index 1f43ed3..ca72648 100644 --- a/service-web/client/src/pages/Yarn.tsx +++ b/service-web/client/src/pages/overview/Yarn.tsx @@ -7,7 +7,7 @@ import { paginationCommonOptions, yarnCrudColumns, yarnQueueCrud, -} from '../util/amis.ts' +} from '../../util/amis.ts' const Yarn: React.FC = () => { const {clusters, queue, search} = useParams() diff --git a/service-web/client/src/pages/YarnCluster.tsx b/service-web/client/src/pages/overview/YarnCluster.tsx similarity index 83% rename from service-web/client/src/pages/YarnCluster.tsx rename to service-web/client/src/pages/overview/YarnCluster.tsx index 85e215f..400cf8a 100644 --- a/service-web/client/src/pages/YarnCluster.tsx +++ b/service-web/client/src/pages/overview/YarnCluster.tsx @@ -1,5 +1,5 @@ import React from 'react' -import {amisRender, commonInfo, yarnQueueCrud} from '../util/amis.ts' +import {amisRender, commonInfo, yarnQueueCrud} from '../../util/amis.ts' const YarnCluster: React.FC = () => { return ( diff --git a/service-web/client/src/route.tsx b/service-web/client/src/route.tsx new file mode 100644 index 0000000..7d391e2 --- /dev/null +++ b/service-web/client/src/route.tsx @@ -0,0 +1,157 @@ +import { + CheckSquareOutlined, + CloudOutlined, + ClusterOutlined, + CompressOutlined, + InfoCircleOutlined, + SunOutlined, + SyncOutlined, + TableOutlined, + ToolOutlined, +} from '@ant-design/icons' +import type {Route} from '@ant-design/pro-layout/es/typing' +import type {RouteObject} from 'react-router' +import Ai from './pages/Ai.tsx' +import App from './pages/App.tsx' +import Cloud from './pages/overview/Cloud.tsx' +import Overview from './pages/Overview.tsx' +import Queue from './pages/overview/Queue.tsx' +import Table from './pages/overview/Table.tsx' +import Task from './pages/overview/Task.tsx' +import Tool from './pages/overview/Tool.tsx' +import Version from './pages/overview/Version.tsx' +import Yarn from './pages/overview/Yarn.tsx' +import YarnCluster from './pages/overview/YarnCluster.tsx' +import {commonInfo} from './util/amis.ts' + +export const routes: RouteObject[] = [ + { + path: '/', + Component: App, + children: [ + { + children: [ + { + index: true, + Component: Overview, + }, + { + path: 'table', + Component: Table, + }, + { + path: 'queue', + Component: Queue, + }, + { + path: 'version', + Component: Version, + }, + { + path: 'yarn/:clusters/:queue/:search?', + Component: Yarn, + }, + { + path: 'cloud', + Component: Cloud, + }, + { + path: 'yarn_cluster', + Component: YarnCluster, + }, + { + path: 'tool', + Component: Tool, + }, + { + path: 'task', + Component: Task, + }, + ], + }, + { + path: 'ai', + Component: Ai, + }, + ], + }, +] + +export const menus: Route = { + routes: [ + { + path: '/', + name: '概览', + icon: , + routes: [ + { + path: '/', + name: '概览', + icon: , + }, + { + path: '/table', + name: '表任务', + icon: , + }, + { + path: '/queue', + name: '压缩队列', + icon: , + }, + { + path: '/version', + name: '跨天', + icon: , + }, + { + path: `/yarn/${commonInfo.clusters.sync_names()}/root/Sync`, + name: '同步集群', + icon: , + }, + { + path: `/yarn/${commonInfo.clusters.compaction_names()}/default/Compaction`, + name: '压缩集群', + icon: , + }, + { + path: '/cloud', + name: '服务', + icon: , + }, + { + path: '/yarn_cluster', + name: '集群', + icon: , + routes: [ + { + path: '/yarn_cluster', + name: '概览', + icon: , + }, + ...Object.keys(commonInfo.clusters.compaction).map(name => ({ + // @ts-ignore + path: `/yarn/${name}/${commonInfo.clusters.compaction[name]}`, + name: `${name} 集群`, + icon: , + })), + ], + }, + { + path: '/tool', + name: '工具', + icon: , + }, + { + path: '/task', + name: '任务', + icon: , + }, + ], + }, + { + path: '/ai', + name: 'AI', + } + ], +} diff --git a/service-web/src/main/resources/logback-spring.xml b/service-web/src/main/resources/logback-spring.xml index f272f36..d686c9c 100644 --- a/service-web/src/main/resources/logback-spring.xml +++ b/service-web/src/main/resources/logback-spring.xml @@ -7,23 +7,6 @@ - - true - - ${LOKI_PUSH_URL:-http://localhost/loki/api/v1/push} - - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} %p [${HOSTNAME}] [%t] %logger #@# %m%n%wEx - - true - - - %d{yyyy-MM-dd HH:mm:ss.SSS} %clr(%5p) %clr([${HOSTNAME}]){yellow} %clr([%t]){magenta} %clr(%logger{40}){cyan} #@# %m%n%wEx @@ -45,7 +28,6 @@ -