From 3216a8302370129dcb1d2e14cbf20fcc07d28fe7 Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Thu, 5 Jun 2025 16:46:50 +0800 Subject: [PATCH] tree shake icons --- next-ui/env.d.ts | 1 + next-ui/package-lock.json | 153 ++++++++++++++++-- next-ui/package.json | 3 +- next-ui/src/components/BuildCommit.vue | 3 +- next-ui/src/components/BuildVersion.vue | 3 +- next-ui/src/components/LocaleSelector.vue | 3 +- next-ui/src/components/ThemeSelector.vue | 11 +- next-ui/src/components/app/drawer/Footer.vue | 3 +- .../components/app/drawer/menu/Account.vue | 6 +- .../components/app/drawer/menu/History.vue | 6 +- .../src/components/app/drawer/menu/Import.vue | 6 +- .../src/components/app/drawer/menu/Logout.vue | 3 +- .../src/components/app/drawer/menu/Media.vue | 6 +- .../src/components/app/drawer/menu/Server.vue | 4 +- .../components/form/user/ChangePassword.vue | 6 +- next-ui/src/components/form/user/Edit.vue | 16 +- next-ui/src/pages/server/announcements.vue | 3 +- next-ui/src/pages/server/users.vue | 15 +- next-ui/src/plugins/vuetify.ts | 9 +- next-ui/tsconfig.app.json | 1 - next-ui/vite.config.mts | 6 + 21 files changed, 223 insertions(+), 44 deletions(-) diff --git a/next-ui/env.d.ts b/next-ui/env.d.ts index e790465c0..c86cadb2e 100644 --- a/next-ui/env.d.ts +++ b/next-ui/env.d.ts @@ -1,3 +1,4 @@ /// /// /// +/// diff --git a/next-ui/package-lock.json b/next-ui/package-lock.json index d2c06fd09..fe9aa0165 100644 --- a/next-ui/package-lock.json +++ b/next-ui/package-lock.json @@ -23,7 +23,7 @@ "devDependencies": { "@eslint/js": "^9.28.0", "@formatjs/cli": "^6.7.1", - "@mdi/font": "7.4.47", + "@iconify-json/mdi": "^1.2.3", "@tsconfig/node22": "^22.0.2", "@types/node": "^22.15.29", "@vitejs/plugin-vue": "^5.1.4", @@ -42,6 +42,7 @@ "typescript": "^5.8.3", "unplugin-auto-import": "^19.3.0", "unplugin-fonts": "^1.1.1", + "unplugin-icons": "^22.1.0", "unplugin-vue-components": "^28.7.0", "unplugin-vue-router": "^0.12.0", "vite": "^6.3.5", @@ -52,6 +53,37 @@ "vue-tsc": "^2.1.10" } }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/install-pkg/node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@antfu/utils": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -907,19 +939,59 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify-json/mdi": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.2.3.tgz", + "integrity": "sha512-O3cLwbDOK7NNDf2ihaQOH5F9JglnulNDFV7WprU2dSoZu3h3cWH//h74uQAB87brHmvFVxIOkuBX2sZSzYhScg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "license": "MIT" }, - "node_modules/@mdi/font": { - "version": "7.4.47", - "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.4.47.tgz", - "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3960,6 +4032,13 @@ "integrity": "sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==", "license": "MIT" }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4450,6 +4529,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-manager-detector": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5727,6 +5813,51 @@ "node": ">=18.12.0" } }, + "node_modules/unplugin-icons": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-22.1.0.tgz", + "integrity": "sha512-ect2ZNtk1Zgwb0NVHd0C1IDW/MV+Jk/xaq4t8o6rYdVS3+L660ZdD5kTSQZvsgdwCvquRw+/wYn75hsweRjoIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@iconify/utils": "^2.3.0", + "debug": "^4.4.0", + "local-pkg": "^1.0.0", + "unplugin": "^2.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@svgr/core": ">=7.0.0", + "@svgx/core": "^1.0.1", + "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", + "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0", + "vue-template-compiler": "^2.6.12", + "vue-template-es2015-compiler": "^1.9.0" + }, + "peerDependenciesMeta": { + "@svgr/core": { + "optional": true + }, + "@svgx/core": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "vue-template-es2015-compiler": { + "optional": true + } + } + }, "node_modules/unplugin-utils": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.4.tgz", @@ -6176,9 +6307,9 @@ } }, "node_modules/vuetify": { - "version": "3.8.8", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.8.8.tgz", - "integrity": "sha512-EPFynvxh72PBgUVZnGpfYfGluz8dz/tXM1OzjszFOK7ywqS+bAm8K9jJq0MIlAG8HKE7gBFQwCJGkzIyuUDipA==", + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.8.5.tgz", + "integrity": "sha512-W/mTaNDyO6NRqAQmnkMUn9TYvRb//BPF/vk7h3+2xNJOyI9ev90JmYjrihOtb+6QDrB79wVUH0Y+0OjYK73GsA==", "license": "MIT", "engines": { "node": "^12.20 || >=14.13" diff --git a/next-ui/package.json b/next-ui/package.json index 030681557..28a6511a4 100644 --- a/next-ui/package.json +++ b/next-ui/package.json @@ -34,7 +34,7 @@ "devDependencies": { "@eslint/js": "^9.28.0", "@formatjs/cli": "^6.7.1", - "@mdi/font": "7.4.47", + "@iconify-json/mdi": "^1.2.3", "@tsconfig/node22": "^22.0.2", "@types/node": "^22.15.29", "@vitejs/plugin-vue": "^5.1.4", @@ -53,6 +53,7 @@ "typescript": "^5.8.3", "unplugin-auto-import": "^19.3.0", "unplugin-fonts": "^1.1.1", + "unplugin-icons": "^22.1.0", "unplugin-vue-components": "^28.7.0", "unplugin-vue-router": "^0.12.0", "vite": "^6.3.5", diff --git a/next-ui/src/components/BuildCommit.vue b/next-ui/src/components/BuildCommit.vue index 004aad7b5..e81178cd7 100644 --- a/next-ui/src/components/BuildCommit.vue +++ b/next-ui/src/components/BuildCommit.vue @@ -1,7 +1,7 @@ @@ -37,3 +37,7 @@ /> + + diff --git a/next-ui/src/components/app/drawer/menu/Logout.vue b/next-ui/src/components/app/drawer/menu/Logout.vue index 87d3aa160..ee18792c9 100644 --- a/next-ui/src/components/app/drawer/menu/Logout.vue +++ b/next-ui/src/components/app/drawer/menu/Logout.vue @@ -7,12 +7,13 @@ id: 'ti4Pzo', }) " - prepend-icon="mdi-power" + :prepend-icon="mdiPower" @click="performLogout" /> + diff --git a/next-ui/src/components/app/drawer/menu/Server.vue b/next-ui/src/components/app/drawer/menu/Server.vue index 725362286..af3a502e9 100644 --- a/next-ui/src/components/app/drawer/menu/Server.vue +++ b/next-ui/src/components/app/drawer/menu/Server.vue @@ -13,7 +13,6 @@ id: 'IpvWiZ', }) " - prepend-icon="mdi-cog" > @@ -103,6 +102,7 @@