import type { RouteMeta } from 'vue-router'; import ElegantVueRouter from '@elegant-router/vue/vite'; import type { RouteKey } from '@elegant-router/types'; export function setupElegantRouter() { return ElegantVueRouter({ layouts: { base: 'src/layouts/base-layout/index.vue', blank: 'src/layouts/blank-layout/index.vue' }, customRoutes: { names: [ 'exception_403', 'exception_404', 'exception_500', 'document_project', 'document_project-link', 'document_vue', 'document_vite', 'document_unocss', 'document_naive', 'document_antd' ] }, routePathTransformer(routeName, routePath) { const key = routeName as RouteKey; if (key === 'login') { const modules: UnionKey.LoginModule[] = ['pwd-login', 'code-login', 'register', 'reset-pwd', 'bind-wechat']; const moduleReg = modules.join('|'); return `/login/:module(${moduleReg})?`; } return routePath; }, onRouteMetaGen(routeName) { const key = routeName as RouteKey; const constantRoutes: RouteKey[] = ['login', '403', '404', '500']; const meta: Partial = { title: key, i18nKey: `route.${key}` as App.I18n.I18nKey }; if (constantRoutes.includes(key)) { meta.constant = true; } return meta; } }); }