侧边栏导航
侧边栏(AppSidebar)是 Enjoy Web 应用中所有主要功能和设置的入口。它会显示在每个页面左侧,包含 继续学习 卡片、按用途分组的导航项,以及插件集成。
整体结构
从上到下,侧边栏分为以下几个区域:
- 顶部品牌区 — 链接到首页,显示应用 Logo 和名称。
- 继续学习卡片 — 快速恢复最近的跟读 / 学习会话。
- 首页 — 跳转回主仪表盘。
- 媒体库 — 音频、视频、电子书、课程。
- 学习工具 — 聊天、词汇。
- 内容生成 — 智能翻译、语音合成。
- 插件(Plugins) — 第三方集成与浏览器扩展。
- 底部次要导航 — 同步、设置等。
- 用户菜单 — 登入账号、订阅入口。
继续学习卡片
侧边栏顶部会渲染一个 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。新增导航项时:
- 在对应的分组数组(
navLibrary/navLearningTools/navGenerateContent/navPlugins)中添加条目。 - 通过
t(...)引入翻译 key;分组标签应使用t("分组名", { ns: "common" })。 - 第三方链接可加上
target: "_blank",组件会自动渲染外链图标。 - 若需要新增分组,请在
app-sidebar.tsx中添加一个新的SidebarGroup,并在语言文件中补齐对应翻译。