# 侧边栏导航系统实施计划 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** 将现有的顶部水平 header 导航重构为左侧固定侧边栏导航系统,支持展开/收起、状态记忆、响应式适配,并保持与现有白色体系设计规范的一致性。 **Architecture:** 采用 Vue 3 Composition API + Flexbox 布局实现经典的左侧固定侧边栏模式。通过 `useSidebar` composable 集中管理状态(展开/收起、移动端检测、localStorage 持久化),将侧边栏拆分为 5 个职责单一的子组件(品牌区、导航菜单、导航项、用户信息区、移动端按钮),确保代码可维护性和可测试性。 **Tech Stack:** - Vue 3 (Composition API, ` ``` - [ ] **Step 2: 手动验证** 在 `Home.vue` 中临时导入并渲染该组件,检查: - 展开时显示完整文字 - 收起时文字隐藏 - 点击折叠按钮触发事件 - [ ] **Step 3: Commit** ```bash git add src/components/layout/SidebarHeader.vue git commit -m "feat: add SidebarHeader component with brand area and collapse button" ``` --- ## Task 4: 实现 SidebarNavItem 组件 **Files:** - Create: `src/components/layout/SidebarNavItem.vue` **目标**: 实现单个导航项,支持激活状态、悬停效果、Tooltip(收起状态) - [ ] **Step 1: 编写组件完整代码** ```vue ``` **注意**: 当前实现中 Tooltip 通过 CSS `:hover` 显示。如果需要更精确的控制(延迟显示等),可以在 `@mouseenter` 和 `@mouseleave` 事件中设置 `isHovering`。 - [ ] **Step 2: 验证交互状态** 在临时测试页面中渲染多个实例: - 默认状态:灰色图标+文字 - 悬停状态:背景色变浅 - 激活状态:蓝色背景 + 左侧指示条 - 收起状态:仅显示图标,悬停显示 tooltip - [ ] **Step 3: Commit** ```bash git add src/components/layout/SidebarNavItem.vue git commit -m "feat: add SidebarNavItem with active state and tooltip support" ``` --- ## Task 5: 实现 SidebarNav 组件 **Files:** - Create: `src/components/layout/SidebarNav.vue` **目标**: 导航菜单容器,遍历渲染导航项列表 - [ ] **Step 1: 编写组件代码** ```vue ``` - [ ] **Step 2: 集成测试** 在临时页面中使用真实的导航项配置数据测试: ```javascript const testItems = [ { key: 'read', label: '文件查看', icon: '📄' }, { key: 'manage', label: '文件管理', icon: '📁' }, { key: 'qa', label: '知识问答', icon: '💬' } ] ``` 预期:正确渲染 3 个导航项,点击可触发 select 事件 - [ ] **Step 3: Commit** ```bash git add src/components/layout/SidebarNav.vue git commit -m "feat: add SidebarNav container component" ``` --- ## Task 6: 实现 SidebarUser 组件 **Files:** - Create: `src/components/layout/SidebarUser.vue` **目标**: 用户信息展示区,包含头像、用户名、角色、操作按钮 - [ ] **Step 1: 编写组件代码** ```vue ``` - [ ] **Step 2: 验证用户信息显示** 传入模拟数据: ```javascript { userInfo: { realName: '张三' }, roleLabel: '系统管理员' } ``` 预期:显示头像(字母"张")、用户名、角色标签 - [ ] **Step 3: Commit** ```bash git add src/components/layout/SidebarUser.vue git commit -m "feat: add SidebarUser component with avatar and actions" ``` --- ## Task 7: 实现 MobileMenuButton 组件 **Files:** - Create: `src/components/layout/MobileMenuButton.vue` **目标**: 移动端的汉堡菜单按钮,仅在屏幕宽度 < 768px 时显示 - [ ] **Step 1: 编写组件代码** ```vue ``` - [ ] **Step 2: 验证响应式行为** 调整浏览器窗口宽度: - ≥ 768px:按钮隐藏 - < 768px:按钮可见且可点击 - [ ] **Step 3: Commit** ```bash git add src/components/layout/MobileMenuButton.vue git commit -m "feat: add MobileMenuButton for responsive navigation" ``` --- ## Task 8: 实现 AppSidebar 主组件 **Files:** - Create: `src/components/layout/AppSidebar.vue` **目标**: 整合所有子组件,实现完整的侧边栏功能,包括桌面端固定模式和移动端 overlay 模式 - [ ] **Step 1: 编写主组件代码** ```vue ``` - [ ] **Step 2: 集成测试** 在临时页面中组装所有子组件,测试: - 展开/收起动画流畅 - 导航点击事件正确传递 - 用户信息正确显示 - 移动端模式下 overlay 行为正常 - [ ] **Step 3: Commit** ```bash git add src/components/layout/AppSidebar.vue git commit -m "feat: add AppSidebar main container with responsive support" ``` --- ## Task 9: 改造 Home.vue - 集成侧边栏布局 **Files:** - Modify: `src/views/Home.vue` **目标**: 移除现有的 ``,替换为新的侧边栏布局系统 - [ ] **Step 1: 备份当前 Home.vue** ```bash cp src/views/Home.vue src/views/Home.vue.backup ``` - [ ] **Step 2: 重写模板部分** 将现有的 `