Files
MeBox/web/src/pages/reader/ReaderModeSwitch.tsx
T
truewhile d0b4255aa8 feat(reader): P1 前端——首页影视/阅读切换 + 书架/搜索/书源/详情/阅读器
- 首页顶部「影视/阅读」分段切换(zustand 持久化,阅读模式直渲染书架)
- /reader/* 独立全屏路由(不套影视 Layout):
  书架(响应式网格 3→8 列)、搜索页(结果流+失败书源明细)、
  书源管理(导入/启停/删除/快速调试日志)、详情页(目录+加书架)
- 阅读器仿 legado ReadMenu:6 套内置主题(日/夜色值对齐 readConfig.json)、
  CSS 多栏分页 + 平移翻页/滚动双模式、三区点击 + 键盘翻页(桌面)、
  上下章、目录抽屉(Virtuoso 虚拟滚动)、字号/行距/段距调节、
  进度记忆(服务端同步 + 下一章预取)
- 桌面兼容:内容列 900px 限宽居中、鼠标悬停态、键盘快捷键
- 后端:详情/目录/正文接口支持 source_url 定位书源(书架链路)
2026-09-30 16:07:28 +08:00

36 lines
1.2 KiB
TypeScript

import { BookOpen, Clapperboard } from 'lucide-react'
import { useReaderSettingsStore } from '../../stores/readerSettings'
// 首页「影视 / 阅读」分段切换(样式对齐 LibraryTagBar 页签)。
export function ReaderModeSwitch() {
const homeMode = useReaderSettingsStore((s) => s.homeMode)
const setHomeMode = useReaderSettingsStore((s) => s.setHomeMode)
const itemClass = (active: boolean) =>
`flex items-center gap-1.5 rounded-xl border px-4 py-1.5 text-xs font-bold transition ${
active
? 'border-brand-500/60 bg-brand-500/10 text-brand-600'
: 'border-[var(--app-border)] text-[var(--app-muted)] hover:text-[var(--app-text)]'
}`
return (
<div className="flex items-center gap-2 border-b border-[var(--app-border)] pb-3">
<button
type="button"
className={itemClass(homeMode === 'media')}
onClick={() => setHomeMode('media')}
>
<Clapperboard size={13} /> 影视
</button>
<button
type="button"
className={itemClass(homeMode === 'reading')}
onClick={() => setHomeMode('reading')}
>
<BookOpen size={13} /> 阅读
</button>
</div>
)
}