import type { RouteRecordRaw, RouteMeta } from 'vue-router' import { defineComponent } from 'vue' export type Component = | ReturnType | (() => Promise) | (() => Promise) // @ts-ignore export interface AppRouteRecordRaw extends Omit { name: string meta: RouteMeta component?: Component | string components?: Component children?: AppRouteRecordRaw[] props?: Recordable fullPath?: string } export interface MenuTag { type?: 'primary' | 'error' | 'warn' | 'success' content?: string dot?: boolean } export interface Menu { name: string icon?: string path: string // path contains param, auto assignment. paramPath?: string disabled?: boolean children?: Menu[] orderNo?: number meta?: Partial tag?: MenuTag hideMenu?: boolean title?: string } export interface MenuModule { orderNo?: number menu: Menu } // export type AppRouteModule = RouteModule | AppRouteRecordRaw; export type AppRouteModule = AppRouteRecordRaw