chore(deps): update npm dependencies to v9 (major) (#6819)

* fix: replace DeleteOutline with DeleteOutlined icon in BackupHistoryViewer

* chore(deps): update npm dependencies to v9

* refactor: bump @mui to v9

---------

Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This commit is contained in:
renovate[bot] 2026-04-15 22:12:06 +08:00 committed by GitHub
parent 0dd861fa32
commit 71dc5f0bdb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
39 changed files with 225 additions and 184 deletions

View File

@ -41,9 +41,9 @@
"@emotion/styled": "^11.14.1", "@emotion/styled": "^11.14.1",
"@juggle/resize-observer": "^3.4.0", "@juggle/resize-observer": "^3.4.0",
"@monaco-editor/react": "^4.7.0", "@monaco-editor/react": "^4.7.0",
"@mui/icons-material": "^7.3.9", "@mui/icons-material": "^9.0.0",
"@mui/lab": "7.0.0-beta.17", "@mui/lab": "9.0.0-beta.2",
"@mui/material": "^7.3.9", "@mui/material": "^9.0.0",
"@tanstack/react-query": "^5.96.1", "@tanstack/react-query": "^5.96.1",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.23", "@tanstack/react-virtual": "^3.13.23",
@ -93,8 +93,8 @@
"@types/validator": "^13.15.10", "@types/validator": "^13.15.10",
"@vitejs/plugin-legacy": "^8.0.0", "@vitejs/plugin-legacy": "^8.0.0",
"@vitejs/plugin-react": "^6.0.1", "@vitejs/plugin-react": "^6.0.1",
"axios": "^1.13.6",
"adm-zip": "^0.5.16", "adm-zip": "^0.5.16",
"axios": "^1.13.6",
"cli-color": "^2.0.4", "cli-color": "^2.0.4",
"commander": "^14.0.3", "commander": "^14.0.3",
"cross-env": "^10.1.0", "cross-env": "^10.1.0",

104
pnpm-lock.yaml generated
View File

@ -30,14 +30,14 @@ importers:
specifier: ^4.7.0 specifier: ^4.7.0
version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mui/icons-material': '@mui/icons-material':
specifier: ^7.3.9 specifier: ^9.0.0
version: 7.3.10(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) version: 9.0.0(@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@mui/lab': '@mui/lab':
specifier: 7.0.0-beta.17 specifier: 9.0.0-beta.2
version: 7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) version: 9.0.0-beta.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mui/material': '@mui/material':
specifier: ^7.3.9 specifier: ^9.0.0
version: 7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) version: 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@tanstack/react-query': '@tanstack/react-query':
specifier: ^5.96.1 specifier: ^5.96.1
version: 5.99.0(react@19.2.5) version: 5.99.0(react@19.2.5)
@ -1047,28 +1047,28 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
'@mui/core-downloads-tracker@7.3.10': '@mui/core-downloads-tracker@9.0.0':
resolution: {integrity: sha512-vrOpWRmPJSuwLo23J62wggEm/jvGdzqctej+UOCtgDUz6nZJQuj3ByPccVyaa7eQmwAzUwKN56FQPMKkqbj1GA==} resolution: {integrity: sha512-uwQNGkhv0lf7ufxw6QXev77BW6pWbW+7uxYjU5+rfp4lBkFtMEgJCsarTM3Tn+i0lGx6+Ol2u88JdGXr0GDskA==}
'@mui/icons-material@7.3.10': '@mui/icons-material@9.0.0':
resolution: {integrity: sha512-Au0ma4NSKGKNiimukj8UT/W1x2Qx6Qwn2RvFGykiSqVLYBNlIOPbjnIMvrwLGLu89EEpTVdu/ys/OduZR+tWqw==} resolution: {integrity: sha512-oDwyvI6LgjWRC9MBcSGvLkPud9S9ELgSBQFYxa1rYcZn6Br55dn22SyvsPDMsn0G8OndFk53iMT45W5mNqrogw==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@mui/material': ^7.3.10 '@mui/material': ^9.0.0
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta: peerDependenciesMeta:
'@types/react': '@types/react':
optional: true optional: true
'@mui/lab@7.0.0-beta.17': '@mui/lab@9.0.0-beta.2':
resolution: {integrity: sha512-H8tSINm6Xgbi7o49MplAwks4tAEE6SpFNd9l7n4NURl0GSpOv0CZvgXKSJt4+6TmquDhE7pomHpHWJiVh/2aCg==} resolution: {integrity: sha512-UqykXQCn7HNSExyYBvrFpaaEEmUwHbEgjFDBApEkawVPcBILyYNFhpXoqkwkafiZy+WsvcxIeRF0z4tCgisTRg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@emotion/react': ^11.5.0 '@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0 '@emotion/styled': ^11.3.0
'@mui/material': ^7.3.2 '@mui/material': ^9.0.0
'@mui/material-pigment-css': ^7.3.2 '@mui/material-pigment-css': ^9.0.0
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@ -1082,13 +1082,13 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
'@mui/material@7.3.10': '@mui/material@9.0.0':
resolution: {integrity: sha512-cHvGOk2ZEfbQt3LnGe0ZKd/ETs9gsUpkW66DCO+GSjMZhpdKU4XsuIr7zJ/B/2XaN8ihxuzHfYAR4zPtCN4RYg==} resolution: {integrity: sha512-+VP/oQCDhDR87NQQgXnNBG8dwy6GNuQLnenS1pZvkbn2dKFSxRSRMybTpH9xUxXP+316mlYDy5CSbYtusnCWtw==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@emotion/react': ^11.5.0 '@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0 '@emotion/styled': ^11.3.0
'@mui/material-pigment-css': ^7.3.10 '@mui/material-pigment-css': ^9.0.0
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@ -1102,8 +1102,8 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
'@mui/private-theming@7.3.10': '@mui/private-theming@9.0.0':
resolution: {integrity: sha512-j3EZN+zOctxUISvJSmsEPo5o2F8zse4l5vRkBY+ps6UtnL6J7o14kUaI4w7gwo73id9e3cDNMVQK/9BVaMHVBw==} resolution: {integrity: sha512-JtuZoaiCqwD6vjgYu6Xp3T7DZkrxJlgtDz5yESzhI34fEX5hHMh2VJUbuL9UOg8xrfIFMrq6dcYoH/7Zi4G0RA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
@ -1112,8 +1112,8 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
'@mui/styled-engine@7.3.10': '@mui/styled-engine@9.0.0':
resolution: {integrity: sha512-WxE9SiF8xskAQqGjsp0poXCkCqsoXFEsSr0HBXfApmGHR+DBnXRp+z46Vsltg4gpPM4Z96DeAQRpeAOnhNg7Ng==} resolution: {integrity: sha512-9RLGdX4Jg0aQPRuvqh/OLzYSPlgd5zyEw5/1HIRfdavSiOd03WtUaGZH9/w1RoTYuRKwpgy0hpIFaMHIqPVIWg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@emotion/react': ^11.4.1 '@emotion/react': ^11.4.1
@ -1125,8 +1125,8 @@ packages:
'@emotion/styled': '@emotion/styled':
optional: true optional: true
'@mui/system@7.3.10': '@mui/system@9.0.0':
resolution: {integrity: sha512-/sfPpdpJaQn7BSF+avjIdHSYmxHp0UOBYNxSG9QGKfMOD6sLANCpRPCnanq1Pe0lFf0NHkO2iUk0TNzdWC1USQ==} resolution: {integrity: sha512-YnC5Zg6j04IxiLc/boAKs0464jfZlLFVa7mf5E8lF0XOtZVUvG6R6gJK50lgUYdaaLdyLfxF6xR7LaPuEpeT/g==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@emotion/react': ^11.5.0 '@emotion/react': ^11.5.0
@ -1141,16 +1141,16 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
'@mui/types@7.4.12': '@mui/types@9.0.0':
resolution: {integrity: sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w==} resolution: {integrity: sha512-i1cuFCAWN44b3AJWO7mh7tuh1sqbQSeVr/94oG0TX5uXivac8XalgE4/6fQZcmGZigzbQ35IXxj/4jLpRIBYZg==}
peerDependencies: peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta: peerDependenciesMeta:
'@types/react': '@types/react':
optional: true optional: true
'@mui/utils@7.3.10': '@mui/utils@9.0.0':
resolution: {integrity: sha512-7y2eIfy0h7JPz+Yy4pS+wgV68d46PuuxDqKBN4Q8VlPQSsCAGwroMCV6xWyc7g9dvEp8ZNFsknc59GHWO+r6Ow==} resolution: {integrity: sha512-bQcqyg/gjULUqTuyUjSAFr6LQGLvtkNtDbJerAtoUn9kGZ0hg5QJiN1PLHMLbeFpe3te1831uq7GFl2ITokGdg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
@ -4624,23 +4624,23 @@ snapshots:
react: 19.2.5 react: 19.2.5
react-dom: 19.2.5(react@19.2.5) react-dom: 19.2.5(react@19.2.5)
'@mui/core-downloads-tracker@7.3.10': {} '@mui/core-downloads-tracker@9.0.0': {}
'@mui/icons-material@7.3.10(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': '@mui/icons-material@9.0.0(@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@mui/material': 7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mui/material': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react: 19.2.5 react: 19.2.5
optionalDependencies: optionalDependencies:
'@types/react': 19.2.14 '@types/react': 19.2.14
'@mui/lab@7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': '@mui/lab@9.0.0-beta.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@mui/material': 7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mui/material': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mui/system': 7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@mui/system': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@mui/types': 7.4.12(@types/react@19.2.14) '@mui/types': 9.0.0(@types/react@19.2.14)
'@mui/utils': 7.3.10(@types/react@19.2.14)(react@19.2.5) '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5)
clsx: 2.1.1 clsx: 2.1.1
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.5 react: 19.2.5
@ -4650,13 +4650,13 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@types/react': 19.2.14 '@types/react': 19.2.14
'@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': '@mui/material@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@mui/core-downloads-tracker': 7.3.10 '@mui/core-downloads-tracker': 9.0.0
'@mui/system': 7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@mui/system': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@mui/types': 7.4.12(@types/react@19.2.14) '@mui/types': 9.0.0(@types/react@19.2.14)
'@mui/utils': 7.3.10(@types/react@19.2.14)(react@19.2.5) '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5)
'@popperjs/core': 2.11.8 '@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.2.14) '@types/react-transition-group': 4.4.12(@types/react@19.2.14)
clsx: 2.1.1 clsx: 2.1.1
@ -4671,16 +4671,16 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@types/react': 19.2.14 '@types/react': 19.2.14
'@mui/private-theming@7.3.10(@types/react@19.2.14)(react@19.2.5)': '@mui/private-theming@9.0.0(@types/react@19.2.14)(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@mui/utils': 7.3.10(@types/react@19.2.14)(react@19.2.5) '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5)
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.5 react: 19.2.5
optionalDependencies: optionalDependencies:
'@types/react': 19.2.14 '@types/react': 19.2.14
'@mui/styled-engine@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)': '@mui/styled-engine@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@emotion/cache': 11.14.0 '@emotion/cache': 11.14.0
@ -4693,13 +4693,13 @@ snapshots:
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@mui/system@7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': '@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@mui/private-theming': 7.3.10(@types/react@19.2.14)(react@19.2.5) '@mui/private-theming': 9.0.0(@types/react@19.2.14)(react@19.2.5)
'@mui/styled-engine': 7.3.10(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5) '@mui/styled-engine': 9.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)
'@mui/types': 7.4.12(@types/react@19.2.14) '@mui/types': 9.0.0(@types/react@19.2.14)
'@mui/utils': 7.3.10(@types/react@19.2.14)(react@19.2.5) '@mui/utils': 9.0.0(@types/react@19.2.14)(react@19.2.5)
clsx: 2.1.1 clsx: 2.1.1
csstype: 3.2.3 csstype: 3.2.3
prop-types: 15.8.1 prop-types: 15.8.1
@ -4709,16 +4709,16 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@types/react': 19.2.14 '@types/react': 19.2.14
'@mui/types@7.4.12(@types/react@19.2.14)': '@mui/types@9.0.0(@types/react@19.2.14)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
optionalDependencies: optionalDependencies:
'@types/react': 19.2.14 '@types/react': 19.2.14
'@mui/utils@7.3.10(@types/react@19.2.14)(react@19.2.5)': '@mui/utils@9.0.0(@types/react@19.2.14)(react@19.2.5)':
dependencies: dependencies:
'@babel/runtime': 7.29.2 '@babel/runtime': 7.29.2
'@mui/types': 7.4.12(@types/react@19.2.14) '@mui/types': 9.0.0(@types/react@19.2.14)
'@types/prop-types': 15.7.15 '@types/prop-types': 15.7.15
clsx: 2.1.1 clsx: 2.1.1
prop-types: 15.8.1 prop-types: 15.8.1

View File

@ -205,7 +205,7 @@ export const BaseSearchBox = ({
input: { input: {
sx: { pr: 1 }, sx: { pr: 1 },
endAdornment: ( endAdornment: (
<Box display="flex"> <Box sx={{ display: 'flex' }}>
{!!text && ( {!!text && (
<Tooltip title={t('shared.placeholders.resetInput')}> <Tooltip title={t('shared.placeholders.resetInput')}>
<IconButton <IconButton

View File

@ -30,47 +30,47 @@ export const ClashInfoCard = () => {
return ( return (
<Stack spacing={1.5}> <Stack spacing={1.5}>
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.clashInfo.fields.coreVersion')} {t('home.components.clashInfo.fields.coreVersion')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
{clashVersion || '-'} {clashVersion || '-'}
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.clashInfo.fields.systemProxyAddress')} {t('home.components.clashInfo.fields.systemProxyAddress')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
{systemProxyAddress} {systemProxyAddress}
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.clashInfo.fields.mixedPort')} {t('home.components.clashInfo.fields.mixedPort')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
{clashConfig.mixedPort || '-'} {clashConfig.mixedPort || '-'}
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.clashInfo.fields.uptime')} {t('home.components.clashInfo.fields.uptime')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
{formattedUptime} {formattedUptime}
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.clashInfo.fields.rulesCount')} {t('home.components.clashInfo.fields.rulesCount')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
{rules.length} {rules.length}
</Typography> </Typography>
</Stack> </Stack>

View File

@ -930,7 +930,7 @@ export const CurrentProxyCard = () => {
}} }}
> >
<Box> <Box>
<Typography variant="body1" fontWeight="medium"> <Typography variant="body1" sx={{ fontWeight: 'medium' }}>
{currentProxy.name} {currentProxy.name}
</Typography> </Typography>
@ -1026,9 +1026,11 @@ export const CurrentProxyCard = () => {
disabled={isDirectMode} disabled={isDirectMode}
renderValue={renderProxyValue} renderValue={renderProxyValue}
MenuProps={{ MenuProps={{
PaperProps: { slotProps: {
style: { paper: {
maxHeight: 500, style: {
maxHeight: 500,
},
}, },
}, },
}} }}

View File

@ -1245,13 +1245,13 @@ export const EnhancedCanvasTrafficGraph = memo(
whiteSpace: 'nowrap', whiteSpace: 'nowrap',
}} }}
> >
<Box color="text.secondary" mb={0.2}> <Box sx={{ color: 'text.secondary', mb: 0.2 }}>
{tooltipData.timestamp} {tooltipData.timestamp}
</Box> </Box>
<Box color="secondary.main" fontWeight="500"> <Box sx={{ color: 'secondary.main', fontWeight: 500 }}>
{tooltipData.upSpeed} {tooltipData.upSpeed}
</Box> </Box>
<Box color="primary.main" fontWeight="500"> <Box sx={{ color: 'primary.main', fontWeight: 500 }}>
{tooltipData.downSpeed} {tooltipData.downSpeed}
</Box> </Box>
</Box> </Box>

View File

@ -90,9 +90,11 @@ export const EnhancedCard = forwardRef<HTMLElement, EnhancedCardProps>(
{typeof title === 'string' ? ( {typeof title === 'string' ? (
<Typography <Typography
variant="h6" variant="h6"
fontWeight="medium" sx={{
fontSize={18} ...titleTruncateStyle,
sx={titleTruncateStyle} fontWeight: 'medium',
fontSize: 18,
}}
title={title} title={title}
> >
{title} {title}

View File

@ -120,9 +120,8 @@ const CompactStatCard = memo(
> >
<Typography <Typography
variant="body1" variant="body1"
fontWeight="bold"
noWrap noWrap
sx={{ mr: 0.5 }} sx={{ mr: 0.5, fontWeight: 'bold' }}
> >
{value} {value}
</Typography> </Typography>

View File

@ -103,7 +103,7 @@ const ProfileDetails = ({
<Box> <Box>
<Stack spacing={2}> <Stack spacing={2}>
{current.url && ( {current.url && (
<Stack direction="row" alignItems="center" spacing={1}> <Stack direction="row" spacing={1} sx={{ alignItems: 'center' }}>
<DnsOutlined fontSize="small" color="action" /> <DnsOutlined fontSize="small" color="action" />
<Typography <Typography
variant="body2" variant="body2"
@ -115,7 +115,6 @@ const ProfileDetails = ({
{current.home ? ( {current.home ? (
<Link <Link
component="button" component="button"
fontWeight="medium"
onClick={() => current.home && openWebUrl(current.home)} onClick={() => current.home && openWebUrl(current.home)}
sx={{ sx={{
display: 'inline-flex', display: 'inline-flex',
@ -123,6 +122,7 @@ const ProfileDetails = ({
minWidth: 0, minWidth: 0,
maxWidth: 'calc(100% - 40px)', maxWidth: 'calc(100% - 40px)',
ml: 0.5, ml: 0.5,
fontWeight: 'medium',
}} }}
title={parseUrl(current.url)} title={parseUrl(current.url)}
> >
@ -151,7 +151,6 @@ const ProfileDetails = ({
) : ( ) : (
<Typography <Typography
component="span" component="span"
fontWeight="medium"
sx={{ sx={{
overflow: 'hidden', overflow: 'hidden',
textOverflow: 'ellipsis', textOverflow: 'ellipsis',
@ -159,6 +158,7 @@ const ProfileDetails = ({
minWidth: 0, minWidth: 0,
flex: 1, flex: 1,
ml: 0.5, ml: 0.5,
fontWeight: 'medium',
}} }}
title={parseUrl(current.url)} title={parseUrl(current.url)}
> >
@ -170,7 +170,7 @@ const ProfileDetails = ({
)} )}
{current.updated && ( {current.updated && (
<Stack direction="row" alignItems="center" spacing={1}> <Stack direction="row" spacing={1} sx={{ alignItems: 'center' }}>
<UpdateOutlined <UpdateOutlined
fontSize="small" fontSize="small"
color="action" color="action"
@ -187,7 +187,7 @@ const ProfileDetails = ({
onClick={onUpdateProfile} onClick={onUpdateProfile}
> >
{t('shared.labels.updateTime')}:{' '} {t('shared.labels.updateTime')}:{' '}
<Box component="span" fontWeight="medium"> <Box component="span" sx={{ fontWeight: 'medium' }}>
{dayjs(current.updated * 1000).format('YYYY-MM-DD HH:mm')} {dayjs(current.updated * 1000).format('YYYY-MM-DD HH:mm')}
</Box> </Box>
</Typography> </Typography>
@ -196,11 +196,11 @@ const ProfileDetails = ({
{current.extra && ( {current.extra && (
<> <>
<Stack direction="row" alignItems="center" spacing={1}> <Stack direction="row" spacing={1} sx={{ alignItems: 'center' }}>
<SpeedOutlined fontSize="small" color="action" /> <SpeedOutlined fontSize="small" color="action" />
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('shared.labels.usedTotal')}:{' '} {t('shared.labels.usedTotal')}:{' '}
<Box component="span" fontWeight="medium"> <Box component="span" sx={{ fontWeight: 'medium' }}>
{parseTraffic(usedTraffic)} /{' '} {parseTraffic(usedTraffic)} /{' '}
{parseTraffic(current.extra.total)} {parseTraffic(current.extra.total)}
</Box> </Box>
@ -208,11 +208,11 @@ const ProfileDetails = ({
</Stack> </Stack>
{current.extra.expire > 0 && ( {current.extra.expire > 0 && (
<Stack direction="row" alignItems="center" spacing={1}> <Stack direction="row" spacing={1} sx={{ alignItems: 'center' }}>
<EventOutlined fontSize="small" color="action" /> <EventOutlined fontSize="small" color="action" />
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('shared.labels.expireTime')}:{' '} {t('shared.labels.expireTime')}:{' '}
<Box component="span" fontWeight="medium"> <Box component="span" sx={{ fontWeight: 'medium' }}>
{parseExpire(current.extra.expire)} {parseExpire(current.extra.expire)}
</Box> </Box>
</Typography> </Typography>
@ -318,8 +318,6 @@ export const HomeProfileCard = ({
<Link <Link
component="button" component="button"
variant="h6" variant="h6"
fontWeight="medium"
fontSize={18}
onClick={() => current.home && openWebUrl(current.home)} onClick={() => current.home && openWebUrl(current.home)}
sx={{ sx={{
color: 'inherit', color: 'inherit',
@ -328,6 +326,8 @@ export const HomeProfileCard = ({
alignItems: 'center', alignItems: 'center',
minWidth: 0, minWidth: 0,
maxWidth: '100%', maxWidth: '100%',
fontWeight: 'medium',
fontSize: 18,
'& > span': { '& > span': {
overflow: 'hidden', overflow: 'hidden',
textOverflow: 'ellipsis', textOverflow: 'ellipsis',

View File

@ -215,24 +215,23 @@ export const SystemInfoCard = () => {
} }
> >
<Stack spacing={1.5}> <Stack spacing={1.5}>
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.systemInfo.fields.osInfo')} {t('home.components.systemInfo.fields.osInfo')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
{osInfo} {osInfo}
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack <Stack
direction="row" direction="row"
justifyContent="space-between" sx={{ justifyContent: 'space-between', alignItems: 'center' }}
alignItems="center"
> >
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.systemInfo.fields.autoLaunch')} {t('home.components.systemInfo.fields.autoLaunch')}
</Typography> </Typography>
<Stack direction="row" spacing={1} alignItems="center"> <Stack direction="row" spacing={1} sx={{ alignItems: 'center' }}>
<Chip <Chip
size="small" size="small"
label={ label={
@ -250,34 +249,32 @@ export const SystemInfoCard = () => {
<Divider /> <Divider />
<Stack <Stack
direction="row" direction="row"
justifyContent="space-between" sx={{ justifyContent: 'space-between', alignItems: 'center' }}
alignItems="center"
> >
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.systemInfo.fields.runningMode')} {t('home.components.systemInfo.fields.runningMode')}
</Typography> </Typography>
<Typography <Typography
variant="body2" variant="body2"
fontWeight="medium"
onClick={handleRunningModeClick} onClick={handleRunningModeClick}
sx={runningModeStyle} sx={{ ...runningModeStyle, fontWeight: 'medium' }}
> >
{getModeIcon()} {getModeIcon()}
{getModeText()} {getModeText()}
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.systemInfo.fields.lastCheckUpdate')} {t('home.components.systemInfo.fields.lastCheckUpdate')}
</Typography> </Typography>
<Typography <Typography
variant="body2" variant="body2"
fontWeight="medium"
onClick={onCheckUpdate} onClick={onCheckUpdate}
sx={{ sx={{
cursor: 'pointer', cursor: 'pointer',
textDecoration: 'underline', textDecoration: 'underline',
fontWeight: 'medium',
'&:hover': { opacity: 0.7 }, '&:hover': { opacity: 0.7 },
}} }}
> >
@ -285,11 +282,11 @@ export const SystemInfoCard = () => {
</Typography> </Typography>
</Stack> </Stack>
<Divider /> <Divider />
<Stack direction="row" justifyContent="space-between"> <Stack direction="row" sx={{ justifyContent: 'space-between' }}>
<Typography variant="body2" color="text.secondary"> <Typography variant="body2" color="text.secondary">
{t('home.components.systemInfo.fields.vergeVersion')} {t('home.components.systemInfo.fields.vergeVersion')}
</Typography> </Typography>
<Typography variant="body2" fontWeight="medium"> <Typography variant="body2" sx={{ fontWeight: 'medium' }}>
v{appVersion} v{appVersion}
</Typography> </Typography>
</Stack> </Stack>

View File

@ -53,29 +53,33 @@ export const LayoutTraffic = () => {
const [inuse, inuseUnit] = parseTraffic(memory?.inuse || 0) const [inuse, inuseUnit] = parseTraffic(memory?.inuse || 0)
const boxStyle: any = { const boxStyle: any = {
display: 'flex', sx: {
alignItems: 'center', display: 'flex',
whiteSpace: 'nowrap', alignItems: 'center',
whiteSpace: 'nowrap',
},
} }
const iconStyle: any = { const iconStyle: any = {
sx: { mr: '8px', fontSize: 16 }, sx: { mr: '8px', fontSize: 16 },
} }
const valStyle: any = { const valStyle: any = {
component: 'span', component: 'span',
textAlign: 'center', sx: { flex: '1 1 56px', userSelect: 'none', textAlign: 'center' },
sx: { flex: '1 1 56px', userSelect: 'none' },
} }
const unitStyle: any = { const unitStyle: any = {
component: 'span', component: 'span',
color: 'grey.500', color: 'grey.500',
fontSize: '12px', sx: {
textAlign: 'right', flex: '0 1 27px',
sx: { flex: '0 1 27px', userSelect: 'none' }, userSelect: 'none',
fontSize: '12px',
textAlign: 'right',
},
} }
return ( return (
<LightweightTrafficErrorBoundary> <LightweightTrafficErrorBoundary>
<Box position="relative"> <Box sx={{ position: 'relative' }}>
{trafficGraph && pageVisible && ( {trafficGraph && pageVisible && (
<div <div
style={{ width: '100%', height: 60, marginBottom: 6 }} style={{ width: '100%', height: 60, marginBottom: 6 }}
@ -85,7 +89,7 @@ export const LayoutTraffic = () => {
</div> </div>
)} )}
<Box display="flex" flexDirection="column" gap={0.75}> <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.75 }}>
<Box <Box
title={`${t('home.components.traffic.metrics.uploadSpeed')}`} title={`${t('home.components.traffic.metrics.uploadSpeed')}`}
{...boxStyle} {...boxStyle}

View File

@ -528,7 +528,7 @@ export const GroupsEditorViewer = (props: Props) => {
> >
<DialogTitle> <DialogTitle>
{ {
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('profiles.modals.groupsEditor.title')} {t('profiles.modals.groupsEditor.title')}
<Box> <Box>
<Button <Button

View File

@ -690,7 +690,7 @@ export const ProfileItem = (props: Props) => {
/> />
</Box> </Box>
)} )}
<Box position="relative"> <Box sx={{ position: 'relative' }}>
<Box sx={{ display: 'flex', justifyContent: 'start' }}> <Box sx={{ display: 'flex', justifyContent: 'start' }}>
{batchMode && ( {batchMode && (
<IconButton <IconButton
@ -731,8 +731,12 @@ export const ProfileItem = (props: Props) => {
</Box> </Box>
<Typography <Typography
width={batchMode ? 'calc(100% - 56px)' : 'calc(100% - 36px)'} sx={{
sx={{ fontSize: '18px', fontWeight: '600', lineHeight: '26px' }} width: batchMode ? 'calc(100% - 56px)' : 'calc(100% - 36px)',
fontSize: '18px',
fontWeight: '600',
lineHeight: '26px',
}}
variant="h6" variant="h6"
component="h2" component="h2"
noWrap noWrap
@ -802,14 +806,14 @@ export const ProfileItem = (props: Props) => {
<Typography <Typography
noWrap noWrap
component="span" component="span"
fontSize={14}
textAlign="right"
title={ title={
showNextUpdate showNextUpdate
? t('profiles.components.profileItem.tooltips.showLast') ? t('profiles.components.profileItem.tooltips.showLast')
: `${t('shared.labels.updateTime')}: ${parseExpire(updated)}\n${t('profiles.components.profileItem.tooltips.showNext')}` : `${t('shared.labels.updateTime')}: ${parseExpire(updated)}\n${t('profiles.components.profileItem.tooltips.showNext')}`
} }
sx={{ sx={{
fontSize: 14,
textAlign: 'right',
cursor: 'pointer', cursor: 'pointer',
display: 'inline-block', display: 'inline-block',
borderBottom: '1px dashed transparent', borderBottom: '1px dashed transparent',
@ -861,7 +865,7 @@ export const ProfileItem = (props: Props) => {
anchorPosition={position} anchorPosition={position}
anchorReference="anchorPosition" anchorReference="anchorPosition"
transitionDuration={225} transitionDuration={225}
MenuListProps={{ sx: { py: 0.5 } }} slotProps={{ list: { sx: { py: 0.5 } } }}
onContextMenu={(e) => { onContextMenu={(e) => {
setAnchorEl(null) setAnchorEl(null)
e.preventDefault() e.preventDefault()

View File

@ -103,17 +103,19 @@ export const ProfileMore = (props: Props) => {
}} }}
> >
<Box <Box
display="flex" sx={{
justifyContent="space-between" display: 'flex',
alignItems="center" justifyContent: 'space-between',
mb={0.5} alignItems: 'center',
mb: 0.5,
}}
> >
<Typography <Typography
width="calc(100% - 52px)"
variant="h6" variant="h6"
component="h2" component="h2"
noWrap noWrap
title={t(globalTitles[id])} title={t(globalTitles[id])}
sx={{ width: 'calc(100% - 52px)' }}
> >
{t(globalTitles[id])} {t(globalTitles[id])}
</Typography> </Typography>
@ -162,7 +164,7 @@ export const ProfileMore = (props: Props) => {
anchorPosition={position} anchorPosition={position}
anchorReference="anchorPosition" anchorReference="anchorPosition"
transitionDuration={225} transitionDuration={225}
MenuListProps={{ sx: { py: 0.5 } }} slotProps={{ list: { sx: { py: 0.5 } } }}
onContextMenu={(e) => { onContextMenu={(e) => {
setAnchorEl(null) setAnchorEl(null)
e.preventDefault() e.preventDefault()

View File

@ -374,7 +374,7 @@ export const ProxiesEditorViewer = (props: Props) => {
> >
<DialogTitle> <DialogTitle>
{ {
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('profiles.modals.proxiesEditor.title')} {t('profiles.modals.proxiesEditor.title')}
<Box> <Box>
<Button <Button

View File

@ -584,7 +584,7 @@ export const RulesEditorViewer = (props: Props) => {
> >
<DialogTitle> <DialogTitle>
{ {
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('rules.modals.editor.title')} {t('rules.modals.editor.title')}
<Box> <Box>
<Button <Button

View File

@ -151,9 +151,11 @@ export const ProviderButton = () => {
<Dialog open={open} onClose={handleClose} maxWidth="sm" fullWidth> <Dialog open={open} onClose={handleClose} maxWidth="sm" fullWidth>
<DialogTitle> <DialogTitle>
<Box <Box
display="flex" sx={{
justifyContent="space-between" display: 'flex',
alignItems="center" justifyContent: 'space-between',
alignItems: 'center',
}}
> >
<Typography variant="h6"> <Typography variant="h6">
{t('proxies.page.provider.title')} {t('proxies.page.provider.title')}

View File

@ -142,9 +142,11 @@ export const ProviderButton = () => {
<Dialog open={open} onClose={handleClose} maxWidth="sm" fullWidth> <Dialog open={open} onClose={handleClose} maxWidth="sm" fullWidth>
<DialogTitle> <DialogTitle>
<Box <Box
display="flex" sx={{
justifyContent="space-between" display: 'flex',
alignItems="center" justifyContent: 'space-between',
alignItems: 'center',
}}
> >
<Typography variant="h6"> <Typography variant="h6">
{t('rules.page.provider.dialogTitle')} {t('rules.page.provider.dialogTitle')}

View File

@ -134,7 +134,11 @@ export function AutoBackupSettings() {
return ( return (
<Fragment> <Fragment>
<ListItem divider disableGutters> <ListItem divider disableGutters>
<Stack direction="row" alignItems="center" spacing={1} width="100%"> <Stack
direction="row"
spacing={1}
sx={{ alignItems: 'center', width: '100%' }}
>
<ListItemText <ListItemText
primary={t('settings.modals.backup.auto.scheduleLabel')} primary={t('settings.modals.backup.auto.scheduleLabel')}
secondary={t('settings.modals.backup.auto.scheduleHelper')} secondary={t('settings.modals.backup.auto.scheduleHelper')}
@ -149,7 +153,11 @@ export function AutoBackupSettings() {
</ListItem> </ListItem>
<ListItem divider disableGutters> <ListItem divider disableGutters>
<Stack direction="row" alignItems="center" spacing={2} width="100%"> <Stack
direction="row"
spacing={2}
sx={{ alignItems: 'center', width: '100%' }}
>
<ListItemText <ListItemText
primary={t('settings.modals.backup.auto.intervalLabel')} primary={t('settings.modals.backup.auto.intervalLabel')}
/> />
@ -187,7 +195,11 @@ export function AutoBackupSettings() {
</ListItem> </ListItem>
<ListItem divider disableGutters> <ListItem divider disableGutters>
<Stack direction="row" alignItems="center" spacing={1} width="100%"> <Stack
direction="row"
spacing={1}
sx={{ alignItems: 'center', width: '100%' }}
>
<ListItemText <ListItemText
primary={t('settings.modals.backup.auto.changeLabel')} primary={t('settings.modals.backup.auto.changeLabel')}
secondary={t('settings.modals.backup.auto.changeHelper')} secondary={t('settings.modals.backup.auto.changeHelper')}

View File

@ -234,9 +234,11 @@ export const BackupConfigViewer = memo(
<Grid size={{ xs: 12, sm: 3 }}> <Grid size={{ xs: 12, sm: 3 }}>
<Stack <Stack
direction="column" direction="column"
justifyContent="space-between" sx={{
alignItems="stretch" justifyContent: 'space-between',
sx={{ height: '100%' }} alignItems: 'stretch',
height: '100%',
}}
> >
{webdavChanged || {webdavChanged ||
webdav_url === undefined || webdav_url === undefined ||

View File

@ -1,4 +1,4 @@
import DeleteOutline from '@mui/icons-material/DeleteOutline' import DeleteOutlined from '@mui/icons-material/DeleteOutlined'
import DownloadRounded from '@mui/icons-material/DownloadRounded' import DownloadRounded from '@mui/icons-material/DownloadRounded'
import RefreshRounded from '@mui/icons-material/RefreshRounded' import RefreshRounded from '@mui/icons-material/RefreshRounded'
import RestoreRounded from '@mui/icons-material/RestoreRounded' import RestoreRounded from '@mui/icons-material/RestoreRounded'
@ -282,8 +282,7 @@ export const BackupHistoryViewer = ({
<Stack spacing={2}> <Stack spacing={2}>
<Stack <Stack
direction="row" direction="row"
alignItems="center" sx={{ alignItems: 'center', justifyContent: 'space-between' }}
justifyContent="space-between"
> >
<Tabs <Tabs
value={source} value={source}
@ -345,9 +344,11 @@ export const BackupHistoryViewer = ({
secondary={ secondary={
<Stack <Stack
direction="row" direction="row"
alignItems="center"
justifyContent="space-between"
spacing={1.5} spacing={1.5}
sx={{
alignItems: 'center',
justifyContent: 'space-between',
}}
> >
<Typography variant="caption" color="text.secondary"> <Typography variant="caption" color="text.secondary">
{`${row.platform} · ${row.display_time}`} {`${row.platform} · ${row.display_time}`}
@ -355,7 +356,7 @@ export const BackupHistoryViewer = ({
<Stack <Stack
direction="row" direction="row"
spacing={0.5} spacing={0.5}
alignItems="center" sx={{ alignItems: 'center' }}
> >
{isLocal && ( {isLocal && (
<IconButton <IconButton
@ -371,7 +372,7 @@ export const BackupHistoryViewer = ({
disabled={isBusy} disabled={isBusy}
onClick={() => handleDelete(row.filename)} onClick={() => handleDelete(row.filename)}
> >
<DeleteOutline fontSize="small" /> <DeleteOutlined fontSize="small" />
</IconButton> </IconButton>
<IconButton <IconButton
size="small" size="small"
@ -393,8 +394,7 @@ export const BackupHistoryViewer = ({
<Stack <Stack
direction="row" direction="row"
spacing={1} spacing={1}
justifyContent="flex-end" sx={{ justifyContent: 'flex-end', alignItems: 'center' }}
alignItems="center"
> >
<Typography variant="caption"> <Typography variant="caption">
{currentPage + 1} / {pageCount} {currentPage + 1} / {pageCount}

View File

@ -237,8 +237,7 @@ export function BackupViewer({ ref }: { ref?: Ref<DialogRef> }) {
direction="row" direction="row"
spacing={1} spacing={1}
useFlexGap useFlexGap
flexWrap="wrap" sx={{ flexWrap: 'wrap', alignItems: 'center' }}
alignItems="center"
> >
{item.actions} {item.actions}
</Stack> </Stack>

View File

@ -117,7 +117,7 @@ export function ClashCoreViewer({ ref }: { ref?: Ref<DialogRef> }) {
<BaseDialog <BaseDialog
open={open} open={open}
title={ title={
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('settings.sections.clash.form.fields.clashCore')} {t('settings.sections.clash.form.fields.clashCore')}
<Box> <Box>
<LoadingButton <LoadingButton

View File

@ -221,7 +221,7 @@ export const ClashPortViewer = forwardRef<ClashPortViewerRef>((_, ref) => {
}} }}
okBtn={ okBtn={
loading ? ( loading ? (
<Stack direction="row" alignItems="center" spacing={1}> <Stack direction="row" spacing={1} sx={{ alignItems: 'center' }}>
<CircularProgress size={20} /> <CircularProgress size={20} />
{t('shared.statuses.saving')} {t('shared.statuses.saving')}
</Stack> </Stack>

View File

@ -36,7 +36,7 @@ export const ConfigViewer = forwardRef<DialogRef>((_, ref) => {
<EditorViewer <EditorViewer
open={true} open={true}
title={ title={
<Box display="flex" alignItems="center" gap={2}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
{t('settings.components.verge.advanced.fields.runtimeConfig')} {t('settings.components.verge.advanced.fields.runtimeConfig')}
<Chip label={t('shared.labels.readOnly')} size="small" /> <Chip label={t('shared.labels.readOnly')} size="small" />
</Box> </Box>

View File

@ -111,7 +111,7 @@ export function ControllerViewer({ ref }: { ref?: Ref<DialogRef> }) {
contentSx={{ width: 400 }} contentSx={{ width: 400 }}
okBtn={ okBtn={
isSaving ? ( isSaving ? (
<Box display="flex" alignItems="center" gap={1}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<CircularProgress size={16} color="inherit" /> <CircularProgress size={16} color="inherit" />
{t('shared.statuses.saving')} {t('shared.statuses.saving')}
</Box> </Box>
@ -153,7 +153,7 @@ export function ControllerViewer({ ref }: { ref?: Ref<DialogRef> }) {
<ListItemText <ListItemText
primary={t('settings.sections.externalController.fields.address')} primary={t('settings.sections.externalController.fields.address')}
/> />
<Box display="flex" alignItems="center" gap={1}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<TextField <TextField
size="small" size="small"
sx={{ sx={{
@ -193,7 +193,7 @@ export function ControllerViewer({ ref }: { ref?: Ref<DialogRef> }) {
<ListItemText <ListItemText
primary={t('settings.sections.externalController.fields.secret')} primary={t('settings.sections.externalController.fields.secret')}
/> />
<Box display="flex" alignItems="center" gap={1}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<TextField <TextField
size="small" size="small"
sx={{ sx={{

View File

@ -623,9 +623,15 @@ export function DnsViewer({ ref }: { ref?: Ref<DialogRef> }) {
open={open} open={open}
disableEnforceFocus={!visualization} disableEnforceFocus={!visualization}
title={ title={
<Box display="flex" justifyContent="space-between" alignItems="center"> <Box
sx={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
}}
>
{t('settings.modals.dns.dialog.title')} {t('settings.modals.dns.dialog.title')}
<Box display="flex" alignItems="center" gap={1}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<Button <Button
variant="outlined" variant="outlined"
size="small" size="small"

View File

@ -194,10 +194,12 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
<List sx={{ width: '90%', padding: 2 }}> <List sx={{ width: '90%', padding: 2 }}>
<ListItem sx={{ padding: '8px 0' }}> <ListItem sx={{ padding: '8px 0' }}>
<Box <Box
display="flex" sx={{
justifyContent="space-between" display: 'flex',
alignItems="center" justifyContent: 'space-between',
width="100%" alignItems: 'center',
width: '100%',
}}
> >
<span style={{ fontWeight: 'normal' }}> <span style={{ fontWeight: 'normal' }}>
{t('settings.sections.externalCors.fields.allowPrivateNetwork')} {t('settings.sections.externalCors.fields.allowPrivateNetwork')}
@ -240,7 +242,7 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
placeholder={t( placeholder={t(
'settings.sections.externalCors.placeholders.origin', 'settings.sections.externalCors.placeholders.origin',
)} )}
inputProps={{ style: { fontSize: 14 } }} slotProps={{ htmlInput: { style: { fontSize: 14 } } }}
/> />
<Button <Button
variant="contained" variant="contained"

View File

@ -90,7 +90,7 @@ export const HotkeyInput = (props: Props) => {
<div className="list"> <div className="list">
{keys.map((key, index) => ( {keys.map((key, index) => (
<Box display="flex" key={key}> <Box sx={{ display: 'flex' }} key={key}>
<span className="delimiter" hidden={index === 0}> <span className="delimiter" hidden={index === 0}>
+ +
</span> </span>

View File

@ -27,7 +27,7 @@ export function NetworkInterfaceViewer({ ref }: { ref?: Ref<DialogRef> }) {
<BaseDialog <BaseDialog
open={open} open={open}
title={ title={
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('settings.modals.networkInterface.title')} {t('settings.modals.networkInterface.title')}
<Box> <Box>
<Button <Button

View File

@ -141,7 +141,7 @@ export function TunViewer({ ref }: { ref?: Ref<DialogRef> }) {
<BaseDialog <BaseDialog
open={open} open={open}
title={ title={
<Box display="flex" justifyContent="space-between" gap={1}> <Box sx={{ display: 'flex', justifyContent: 'space-between', gap: 1 }}>
<Typography variant="h6">{t('settings.modals.tun.title')}</Typography> <Typography variant="h6">{t('settings.modals.tun.title')}</Typography>
<Button <Button
variant="outlined" variant="outlined"

View File

@ -112,7 +112,7 @@ export function UpdateViewer({ ref }: { ref?: Ref<DialogRef> }) {
<BaseDialog <BaseDialog
open={open} open={open}
title={ title={
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('settings.modals.update.title', { {t('settings.modals.update.title', {
version: updateInfo?.version ?? '', version: updateInfo?.version ?? '',
})} })}

View File

@ -49,7 +49,11 @@ export const WebUIItem = (props: Props) => {
if (editing || onlyEdit) { if (editing || onlyEdit) {
return ( return (
<> <>
<Stack spacing={0.75} direction="row" mt={1} mb={1} alignItems="center"> <Stack
spacing={0.75}
direction="row"
sx={{ mt: 1, mb: 1, alignItems: 'center' }}
>
<TextField <TextField
autoComplete="new-password" autoComplete="new-password"
fullWidth fullWidth
@ -105,13 +109,17 @@ export const WebUIItem = (props: Props) => {
return ( return (
<> <>
<Stack spacing={0.75} direction="row" alignItems="center" mt={1} mb={1}> <Stack
spacing={0.75}
direction="row"
sx={{ alignItems: 'center', mt: 1, mb: 1 }}
>
<Typography <Typography
component="div" component="div"
width="100%"
title={value} title={value}
color={value ? 'text.primary' : 'text.secondary'} color={value ? 'text.primary' : 'text.secondary'}
sx={({ palette }) => ({ sx={({ palette }) => ({
width: '100%',
overflow: 'hidden', overflow: 'hidden',
textOverflow: 'ellipsis', textOverflow: 'ellipsis',
'> .placeholder': { '> .placeholder': {

View File

@ -100,7 +100,7 @@ export function WebUIViewer({ ref }: { ref?: Ref<DialogRef> }) {
<BaseDialog <BaseDialog
open={open} open={open}
title={ title={
<Box display="flex" justifyContent="space-between"> <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
{t('settings.modals.webUI.title')} {t('settings.modals.webUI.title')}
<Button <Button
variant="contained" variant="contained"
@ -127,7 +127,7 @@ export function WebUIViewer({ ref }: { ref?: Ref<DialogRef> }) {
{!editing && webUIList.length === 0 && ( {!editing && webUIList.length === 0 && (
<BaseEmpty <BaseEmpty
extra={ extra={
<Typography mt={2} sx={{ fontSize: '12px' }}> <Typography sx={{ mt: 2, fontSize: '12px' }}>
{t('settings.modals.webUI.messages.placeholderInstruction')} {t('settings.modals.webUI.messages.placeholderInstruction')}
</Typography> </Typography>
} }

View File

@ -182,8 +182,7 @@ const TrafficErrorFallback: React.FC<TrafficErrorFallbackProps> = ({
<Typography <Typography
variant="body2" variant="body2"
color="text.secondary" color="text.secondary"
textAlign="center" sx={{ mb: 2, textAlign: 'center' }}
sx={{ mb: 2 }}
> >
{t('shared.feedback.errors.trafficStatsDescription')} {t('shared.feedback.errors.trafficStatsDescription')}
</Typography> </Typography>
@ -194,7 +193,7 @@ const TrafficErrorFallback: React.FC<TrafficErrorFallbackProps> = ({
{error instanceof Error ? error.message : 'Unknown error'} {error instanceof Error ? error.message : 'Unknown error'}
</Typography> </Typography>
{retryCount > 0 && ( {retryCount > 0 && (
<Typography variant="caption" display="block" sx={{ mt: 1 }}> <Typography variant="caption" sx={{ mt: 1, display: 'block' }}>
{t('shared.labels.retryAttempts')}: {retryCount}/{maxRetries} {t('shared.labels.retryAttempts')}: {retryCount}/{maxRetries}
</Typography> </Typography>
)} )}

View File

@ -116,8 +116,7 @@ export const TestItem = ({
}} }}
> >
<Box <Box
position="relative" sx={{ position: 'relative', cursor: 'move' }}
sx={{ cursor: 'move' }}
ref={setNodeRef} ref={setNodeRef}
{...attributes} {...attributes}
{...listeners} {...listeners}
@ -208,7 +207,7 @@ export const TestItem = ({
anchorPosition={position} anchorPosition={position}
anchorReference="anchorPosition" anchorReference="anchorPosition"
transitionDuration={225} transitionDuration={225}
MenuListProps={{ sx: { py: 0.5 } }} slotProps={{ list: { sx: { py: 0.5 } } }}
onContextMenu={(e) => { onContextMenu={(e) => {
setAnchorEl(null) setAnchorEl(null)
e.preventDefault() e.preventDefault()

View File

@ -137,7 +137,7 @@ const ProxyPage = () => {
: t('proxies.page.title.default') : t('proxies.page.title.default')
} }
header={ header={
<Box display="flex" alignItems="center" gap={1}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<ProviderButton /> <ProviderButton />
<ButtonGroup size="small"> <ButtonGroup size="small">

View File

@ -63,7 +63,7 @@ const RulesPage = () => {
overflow: 'auto', overflow: 'auto',
}} }}
header={ header={
<Box display="flex" alignItems="center" gap={1}> <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<ProviderButton /> <ProviderButton />
</Box> </Box>
} }

View File

@ -2,7 +2,7 @@ import {
AccessTimeOutlined, AccessTimeOutlined,
CancelOutlined, CancelOutlined,
CheckCircleOutlined, CheckCircleOutlined,
HelpOutline, HelpOutlined,
PendingOutlined, PendingOutlined,
RefreshRounded, RefreshRounded,
} from '@mui/icons-material' } from '@mui/icons-material'
@ -315,8 +315,8 @@ const UnlockPage = () => {
if (status === 'Yes') return <CheckCircleOutlined /> if (status === 'Yes') return <CheckCircleOutlined />
if (status === 'No') return <CancelOutlined /> if (status === 'No') return <CancelOutlined />
if (status === 'Soon') return <AccessTimeOutlined /> if (status === 'Soon') return <AccessTimeOutlined />
if (status.includes('Failed')) return <HelpOutline /> if (status.includes('Failed')) return <HelpOutlined />
return <HelpOutline /> return <HelpOutlined />
} }
// 边框色 // 边框色