import { createApp } from 'vue' import App from './App.vue' // reset style sheet import '@/styles/reset.scss' // CSS common style sheet import '@/styles/common.scss' // iconfont css import '@/assets/iconfont/iconfont.scss' // font css import '@/assets/fonts/font.scss' // element css import 'element-plus/dist/index.css' // element dark css import 'element-plus/theme-chalk/dark/css-vars.css' // custom element dark css import '@/styles/element-dark.scss' // custom element css import '@/styles/element.scss' // svg icons import 'virtual:svg-icons-register' // element plus import ElementPlus from 'element-plus' // element icons import * as Icons from '@element-plus/icons-vue' // custom directives import directives from '@/directives/index' // vue Router import router from '@/routers' // vue i18n import I18n from '@/languages/index' // pinia store import pinia from '@/stores' // errorHandler import errorHandler from '@/utils/errorHandler' import SvgIcon from '@/components/SvgIcon/index.vue' // 字典标签组件 import DictTag from '@/components/DictTag/index.vue' import { useDict } from '@/utils/dict' const app = createApp(App) // 全局方法挂载 app.config.globalProperties.useDict = useDict // 全局组件挂载 app.component('DictTag', DictTag) app.config.errorHandler = errorHandler // register the element Icons component Object.keys(Icons).forEach(key => { app.component(key, Icons[key as keyof typeof Icons]) }) // eslint-disable-next-line vue/component-definition-name-casing app.component('svg-icon', SvgIcon) app.use(ElementPlus).use(directives).use(router).use(I18n).use(pinia).mount('#app')