import { Home, Code, Calendar, Settings, Users, Folder, ShieldCheck } from "lucide-react"; import type { ComponentType } from "react"; export type ActivePage = "home" | "scripts" | "schedules" | "system"; export type SubPage = "users" | "projects" | "roles"; export type NavigationItem = { /** 菜单显示名 */ label: string; /** 渲染在菜单前的图标组件(lucide-react 或等价) */ icon: ComponentType; /** 入口页 — 点击后由 guardedNavigate 处理 */ page: ActivePage; /** 子页段,仅 children 项使用 */ sub?: SubPage; /** 命中高亮的 pathname;不填则按 pathForPage(page) 派生 */ activePath?: string; /** 当前端可访问的权限码;未配置时视为所有人可访问 */ permission?: string; /** 子菜单条目 */ children?: NavigationItem[]; }; export const navigation: NavigationItem[] = [ { label: "工作台", icon: Home, page: "home", permission: "dashboard:view" }, { label: "构建脚本", icon: Code, page: "scripts", permission: "script:view" }, { label: "调度配置", icon: Calendar, page: "schedules", permission: "schedule:view" }, { label: "系统管理", icon: Settings, page: "system", permission: "system:view", children: [ { label: "用户管理", icon: Users, page: "system", sub: "users", permission: "system:user:view" }, { label: "项目管理", icon: Folder, page: "system", sub: "projects", permission: "system:project:view" }, { label: "角色管理", icon: ShieldCheck, page: "system", sub: "roles", permission: "system:role:view" }, ], }, ];