/**
 * 菜单类型：0=目录  1=菜单  2=按钮
 */
export type MenuType = 0 | 1 | 2

/**
 * 路由元信息类型定义
 */
export interface RouteMeta {
  title: string
  icon?: string
  hidden?: boolean // 是否在菜单中隐藏
  roles?: string[] // 允许访问的角色列表
  keepAlive?: boolean // 是否缓存页面
  activeMenu?: string // 高亮指定的菜单路径（用于详情页）
}

/**
 * 菜单项类型定义
 */
export interface MenuItem {
  id: number // 菜单唯一标识，用于角色分配勾选
  parentId: number // 父节点 ID，构建树形结构
  type: MenuType // 区分目录(0)/菜单(1)/按钮(2)
  permission?: string // 按钮权限标识，如 'sys:user:add'
  sort?: number // 排序权重

  path: string
  name?: string
  component?: string // 对应 views 下的文件路径（字符串）
  redirect?: string
  meta?: RouteMeta
  children?: MenuItem[]
}

/**
 * 用户信息类型定义
 */
export interface UserInfo {
  name: string
  roles: string[]
  avatar: string
}

/**
 * 登录响应类型
 */
export interface LoginResponse {
  code: number
  data: {
    token: string
  }
}

/**
 * 用户信息响应类型
 */
export interface UserInfoResponse {
  code: number
  data: UserInfo
}

/**
 * 路由响应类型
 */
export interface RoutesResponse {
  code: number
  data: MenuItem[]
}
