diff --git a/build/plugins/auto-import.ts b/build/plugins/auto-import.ts
new file mode 100644
index 000000000..29fb19830
--- /dev/null
+++ b/build/plugins/auto-import.ts
@@ -0,0 +1,21 @@
+import Icons from 'unplugin-icons/vite';
+import IconsResolver from 'unplugin-icons/resolver';
+import Components from 'unplugin-vue-components/vite';
+import { FileSystemIconLoader } from 'unplugin-icons/loaders';
+
+export default (srcPath: string) => {
+ return [
+ Icons({
+ compiler: 'vue3',
+ customCollections: {
+ custom: FileSystemIconLoader(`${srcPath}/assets/svg`),
+ },
+ scale: 1,
+ defaultClass: 'inline-block',
+ }),
+ Components({
+ dts: true,
+ resolvers: [IconsResolver({ customCollections: ['custom'], componentPrefix: 'icon' })],
+ }),
+ ];
+};
diff --git a/build/plugins/iconify.ts b/build/plugins/iconify.ts
index 848760b2a..f7b73745a 100644
--- a/build/plugins/iconify.ts
+++ b/build/plugins/iconify.ts
@@ -14,7 +14,7 @@ export default (srcPath: string) => {
defaultClass: 'inline-block',
}),
Components({
- dts: false,
+ dts: true,
resolvers: [IconsResolver({ customCollections: ['custom'], componentPrefix: 'icon' })],
}),
];
diff --git a/build/plugins/index.ts b/build/plugins/index.ts
index b4e6799dc..41de2b833 100644
--- a/build/plugins/index.ts
+++ b/build/plugins/index.ts
@@ -1,7 +1,7 @@
import type { ConfigEnv, PluginOption } from 'vite';
import vue from './vue';
import html from './html';
-import iconify from './iconify';
+import autoImport from './auto-import';
import windicss from './windicss';
import mock from './mock';
import visualizer from './visualizer';
@@ -17,7 +17,7 @@ export function setupVitePlugins(
srcPath: string,
viteEnv: ImportMetaEnv
): (PluginOption | PluginOption[])[] {
- const plugins = [vue, html(configEnv), ...iconify(srcPath), windicss, mock];
+ const plugins = [vue, html(configEnv), ...autoImport(srcPath), windicss, mock];
if (configEnv.command === 'build' && viteEnv.VITE_VISUALIZER === 'true') {
plugins.push(visualizer);
diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 000000000..21d647162
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,48 @@
+// generated by unplugin-vue-components
+// We suggest you to commit this file into source control
+// Read more: https://github.com/vuejs/vue-next/pull/3399
+
+declare module 'vue' {
+ export interface GlobalComponents {
+ BetterScroll: typeof import('./src/components/custom/BetterScroll.vue')['default'];
+ CountTo: typeof import('./src/components/custom/CountTo.vue')['default'];
+ DarkModeContainer: typeof import('./src/components/common/DarkModeContainer.vue')['default'];
+ DarkModeSwitch: typeof import('./src/components/common/DarkModeSwitch.vue')['default'];
+ GithubLink: typeof import('./src/components/custom/GithubLink.vue')['default'];
+ HoverContainer: typeof import('./src/components/common/HoverContainer.vue')['default'];
+ IconAntDesignCloseOutlined: typeof import('~icons/ant-design/close-outlined')['default'];
+ IconAntDesignEnterOutlined: typeof import('~icons/ant-design/enter-outlined')['default'];
+ IconAntDesignSettingOutlined: typeof import('~icons/ant-design/setting-outlined')['default'];
+ IconCustomAvatar: typeof import('~icons/custom/avatar')['default'];
+ IconCustomEmptyData: typeof import('~icons/custom/empty-data')['default'];
+ IconCustomLogo: typeof import('~icons/custom/logo')['default'];
+ IconCustomLogoFill: typeof import('~icons/custom/logo-fill')['default'];
+ IconCustomNetworkError: typeof import('~icons/custom/network-error')['default'];
+ IconGridiconsFullscreen: typeof import('~icons/gridicons/fullscreen')['default'];
+ IconGridiconsFullscreenExit: typeof import('~icons/gridicons/fullscreen-exit')['default'];
+ IconIcOutlineCheck: typeof import('~icons/ic/outline-check')['default'];
+ IconLineMdMenuFoldLeft: typeof import('~icons/line-md/menu-fold-left')['default'];
+ IconLineMdMenuUnfoldLeft: typeof import('~icons/line-md/menu-unfold-left')['default'];
+ IconMdiArrowDownThin: typeof import('~icons/mdi/arrow-down-thin')['default'];
+ IconMdiArrowUpThin: typeof import('~icons/mdi/arrow-up-thin')['default'];
+ IconMdiClose: typeof import('~icons/mdi/close')['default'];
+ IconMdiGithub: typeof import('~icons/mdi/github')['default'];
+ IconMdiMoonWaningCrescent: typeof import('~icons/mdi/moon-waning-crescent')['default'];
+ IconMdiPin: typeof import('~icons/mdi/pin')['default'];
+ IconMdiPinOff: typeof import('~icons/mdi/pin-off')['default'];
+ IconMdiRefresh: typeof import('~icons/mdi/refresh')['default'];
+ IconMdiWhiteBalanceSunny: typeof import('~icons/mdi/white-balance-sunny')['default'];
+ IconPhCaretDoubleLeftBold: typeof import('~icons/ph/caret-double-left-bold')['default'];
+ IconPhCaretDoubleRightBold: typeof import('~icons/ph/caret-double-right-bold')['default'];
+ IconSelect: typeof import('./src/components/custom/IconSelect.vue')['default'];
+ IconUilSearch: typeof import('~icons/uil/search')['default'];
+ ImageVerify: typeof import('./src/components/custom/ImageVerify.vue')['default'];
+ LoadingEmptyWrapper: typeof import('./src/components/business/LoadingEmptyWrapper.vue')['default'];
+ LoginAgreement: typeof import('./src/components/business/LoginAgreement.vue')['default'];
+ NaiveProvider: typeof import('./src/components/common/NaiveProvider.vue')['default'];
+ SystemLogo: typeof import('./src/components/common/SystemLogo.vue')['default'];
+ WebSiteLink: typeof import('./src/components/custom/WebSiteLink.vue')['default'];
+ }
+}
+
+export {};
diff --git a/src/App.vue b/src/App.vue
index 49c5e0449..b4f319da2 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -14,7 +14,6 @@
+
diff --git a/src/layouts/common/GlobalHeader/components/FullScreen.vue b/src/layouts/common/GlobalHeader/components/FullScreen.vue
index 2618412cd..b72248f23 100644
--- a/src/layouts/common/GlobalHeader/components/FullScreen.vue
+++ b/src/layouts/common/GlobalHeader/components/FullScreen.vue
@@ -7,7 +7,6 @@
diff --git a/src/layouts/common/GlobalHeader/components/GithubSite.vue b/src/layouts/common/GlobalHeader/components/GithubSite.vue
index e0992af91..0d567e80f 100644
--- a/src/layouts/common/GlobalHeader/components/GithubSite.vue
+++ b/src/layouts/common/GlobalHeader/components/GithubSite.vue
@@ -6,7 +6,5 @@
-
+
diff --git a/src/layouts/common/GlobalHeader/components/MenuCollapse.vue b/src/layouts/common/GlobalHeader/components/MenuCollapse.vue
index 899993795..0e6758118 100644
--- a/src/layouts/common/GlobalHeader/components/MenuCollapse.vue
+++ b/src/layouts/common/GlobalHeader/components/MenuCollapse.vue
@@ -6,7 +6,6 @@