import type { VNode } from 'vue'; export interface ThemeColor { primary?: string; nav: string; warning?: string; danger?: string; info?: string; topBarBg?: string; topBarColor?: string; menuBg?: string; menuColor?: string; menuActiveColor?: string; menuSelectedColor?: string; menuSelectedBg?: string; mainBg?: string; } export interface AntMenu { key?: string; title?: string; name: string; parentName?: string; label: string; hidden: boolean; icon?: () => VNode; labelPath?: string; meta?: RouteMeta; children?: AntMenu[]; } export type TagViewStyle = '卡片' | '灵动' | '圆滑'; export type NavStyle = 'dark' | 'light'; export interface RouteMeta { /** 菜单名称 默认为文件夹或文件名称 */ title?: string; /** 菜单图标 */ icon: string | (() => VNode); /** 菜单所属角色权限 */ roles: string[]; /** 排名 */ rank: number; /** 是否缓存 */ isKeepAlive: boolean; /** 是否隐藏 */ isHidden: boolean; /** 是否为外联菜单 */ isLink?: string; /** 是否为内嵌 iframe 页面 */ isIframe?: string; } export interface TagView { isActive: boolean; meta?: RouteMeta; } export interface UserTools { fullscreen?: boolean; dark?: boolean; lang?: boolean; } export interface LayoutConfig { layout?: 'default' | 'topBar' | 'classic'; isLogo?: boolean; isFooter?: boolean; themeColor?: ThemeColor; navStyle?: NavStyle; isSidebar?: boolean; isMenuAccordion?: boolean; menuIndent?: number; menuCollapsedWidth?: string; menuStyle?: 'smooth' | 'flat'; isNavbar?: boolean; isHeaderMenuIcon?: boolean; isBreadcrumb?: boolean; isTagView?: boolean; isToolbar?: boolean; tagViewStyle?: TagViewStyle; isTagViewIcon?: boolean; isDark?: boolean; locale?: string; userTools?: UserTools; userMenu?: string; }