Skip to content

侧边栏导航

侧边栏(AppSidebar)是 Enjoy Web 应用中所有主要功能和设置的入口。它会显示在每个页面左侧,包含 继续学习 卡片、按用途分组的导航项,以及插件集成。

整体结构

从上到下,侧边栏分为以下几个区域:

  1. 顶部品牌区 — 链接到首页,显示应用 Logo 和名称。
  2. 继续学习卡片 — 快速恢复最近的跟读 / 学习会话。
  3. 首页 — 跳转回主仪表盘。
  4. 媒体库 — 音频、视频、电子书、课程。
  5. 学习工具 — 聊天、词汇。
  6. 内容生成 — 智能翻译、语音合成。
  7. 插件(Plugins) — 第三方集成与浏览器扩展。
  8. 底部次要导航 — 同步、设置等。
  9. 用户菜单 — 登入账号、订阅入口。

继续学习卡片

侧边栏顶部会渲染一个 ContinueLearningCard,从本地数据库读取最近一次活动的 EchoSession,并显示对应媒体(视频 / 音频)的封面、相对时间(例如"3 小时前")以及进度信息。点击卡片可以一键恢复学习。

  • 仅显示 活跃 的会话;没有可用会话时整张卡片不渲染。
  • 卡片依赖本地 Dexie 数据库,与登录账号无关。
  • 若媒体已被删除,卡片会自动隐藏。

分组说明

媒体库

包含最常用的学习材料入口:

  • 音频 /audios
  • 视频 /videos
  • 电子书 /ebooks
  • 课程 /courses

学习工具

提供 AI / 词汇相关的能力:

  • 聊天 /chat — 与 AI 助手对话。
  • 词汇 /vocabulary — 闪卡、复习、Anki 导出。

内容生成

无需素材即可直接产出翻译或语音:

  • 智能翻译 /smart-translation — 整页翻译工作区。
  • 语音合成 /voice-synthesis — 把任意文本转为语音。

插件

第三方集成入口,目前包括:

  • Chrome 扩展 — 跳转到 Chrome Web Store 上的 Enjoy 扩展页面(在新标签页打开)。

侧边栏分组标签来自 plugins.title 这个 嵌套 i18n key,对应不同语言的 common.json。如果新增语言,请按嵌套结构 plugins.title 添加而不是 pluginsTitle,否则侧边栏会回退到默认英文。

次要导航与用户菜单

侧边栏底部固定显示:

  • 同步 /sync
  • 设置 /settings

最下面是当前登录用户的菜单,可访问个人资料、订阅和登出。

自定义与扩展

侧边栏源码位于 apps/web/src/components/layout/app-sidebar.tsx。新增导航项时:

  1. 在对应的分组数组(navLibrary / navLearningTools / navGenerateContent / navPlugins)中添加条目。
  2. 通过 t(...) 引入翻译 key;分组标签应使用 t("分组名", { ns: "common" })
  3. 第三方链接可加上 target: "_blank",组件会自动渲染外链图标。
  4. 若需要新增分组,请在 app-sidebar.tsx 中添加一个新的 SidebarGroup,并在语言文件中补齐对应翻译。