feat(web): iconify reader chrome, move 连读/预读 into 更多 menu with slider

This commit is contained in:
2026-09-08 21:29:01 +08:00
parent 9c2b7e2074
commit d2c852d6f0
8 changed files with 132 additions and 63 deletions
+17 -8
View File
@@ -1,5 +1,6 @@
import DOMPurify from "dompurify";
import { marked } from "marked";
import { ChevronLeft, ChevronRight, PanelLeft } from "lucide-react";
import { useEffect, useMemo, useRef, useState, type MouseEvent, type ReactNode } from "react";
import { apiRaw } from "../api/client";
import { BookmarksTab } from "../components/Bookmarks";
@@ -187,12 +188,12 @@ function MdView({ book, initialLocator, initialPercent, chrome }: ReaderProps) {
{chrome.on && (
<ReaderSheet pr={pr} frac={frac} onSeek={seek}>
<button
className="rd-btn"
className="rd-btn inline-flex items-center gap-1.5"
aria-expanded={nav}
aria-controls="reader-nav"
onClick={() => setNav((v) => !v)}
>
导航
<PanelLeft size={14} /> 导航
</button>
</ReaderSheet>
)}
@@ -310,23 +311,31 @@ function TxtView({ book, initialLocator, initialPercent, chrome }: ReaderProps)
{chrome.on && (
<ReaderSheet pr={pr} frac={total} onSeek={seek}>
<button
className="rd-btn"
className="rd-btn inline-flex items-center gap-1.5"
aria-expanded={!!nav}
aria-controls="reader-nav"
onClick={() => setNav(nav ? null : chapters.length > 1 ? "toc" : "bm")}
>
导航
<PanelLeft size={14} /> 导航
</button>
{chapters.length > 1 && (
<>
<span className="text-xs opacity-60 tabular-nums">
{ci + 1}/{chapters.length}
</span>
<button className="rd-btn" disabled={ci === 0} onClick={() => goChapter(ci - 1)}>
← 上一章
<button
className="rd-btn inline-flex items-center gap-0.5"
disabled={ci === 0}
onClick={() => goChapter(ci - 1)}
>
<ChevronLeft size={14} /> 上一章
</button>
<button className="rd-btn" disabled={ci === chapters.length - 1} onClick={() => goChapter(ci + 1)}>
下一章 →
<button
className="rd-btn inline-flex items-center gap-0.5"
disabled={ci === chapters.length - 1}
onClick={() => goChapter(ci + 1)}
>
下一章 <ChevronRight size={14} />
</button>
</>
)}