diff --git a/apps/readest-app/src/app/reader/components/BookmarkToggler.tsx b/apps/readest-app/src/app/reader/components/BookmarkToggler.tsx index 4a372875..fec11de9 100644 --- a/apps/readest-app/src/app/reader/components/BookmarkToggler.tsx +++ b/apps/readest-app/src/app/reader/components/BookmarkToggler.tsx @@ -6,6 +6,7 @@ import { useReaderStore } from '@/store/readerStore'; import { useEnv } from '@/context/EnvContext'; import { BookNote } from '@/types/book'; import { uniqueId } from '@/utils/misc'; +import Button from '@/components/Button'; interface BookmarkTogglerProps { bookKey: string; @@ -76,13 +77,18 @@ const BookmarkToggler: React.FC = ({ bookKey }) => { }, [config, progress]); return ( - + ); }; diff --git a/apps/readest-app/src/app/reader/components/FoliateViewer.tsx b/apps/readest-app/src/app/reader/components/FoliateViewer.tsx index 0e246eaa..07a6e5db 100644 --- a/apps/readest-app/src/app/reader/components/FoliateViewer.tsx +++ b/apps/readest-app/src/app/reader/components/FoliateViewer.tsx @@ -30,6 +30,13 @@ export interface FoliateView extends HTMLElement { clearSearch: () => void; select: (target: string | number | { fraction: number }) => void; deselect: () => void; + history: { + canGoBack: boolean; + canGoForward: boolean; + back: () => void; + forward: () => void; + clear: () => void; + }; renderer: { setStyles?: (css: string) => void; setAttribute: (name: string, value: string | number) => void; diff --git a/apps/readest-app/src/app/reader/components/FooterBar.tsx b/apps/readest-app/src/app/reader/components/FooterBar.tsx index 9b4db7a2..90c8999c 100644 --- a/apps/readest-app/src/app/reader/components/FooterBar.tsx +++ b/apps/readest-app/src/app/reader/components/FooterBar.tsx @@ -1,8 +1,10 @@ import React from 'react'; import clsx from 'clsx'; import { RiArrowLeftWideLine, RiArrowRightWideLine } from 'react-icons/ri'; +import { RiArrowGoBackLine, RiArrowGoForwardLine } from 'react-icons/ri'; import { useReaderStore } from '@/store/readerStore'; +import Button from '@/components/Button'; interface FooterBarProps { bookKey: string; @@ -12,19 +14,29 @@ interface FooterBarProps { const FooterBar: React.FC = ({ bookKey, pageinfo, isHoveredAnim }) => { const { isSideBarVisible, hoveredBookKey, setHoveredBookKey, getView } = useReaderStore(); + const view = getView(bookKey); const handleProgressChange = (event: React.ChangeEvent) => { const newProgress = parseInt((event.target as HTMLInputElement).value, 10); - getView(bookKey)?.goToFraction(newProgress / 100.0); + view?.goToFraction(newProgress / 100.0); }; const handleGoPrev = () => { - getView(bookKey)?.goLeft(); + view?.goLeft(); }; const handleGoNext = () => { - getView(bookKey)?.goRight(); + view?.goRight(); }; + + const handleGoBack = () => { + view?.history.back(); + }; + + const handleGoForward = () => { + view?.history.forward(); + }; + const pageinfoValid = pageinfo && pageinfo.total > 0 && pageinfo.current >= 0; const progressFraction = pageinfoValid ? pageinfo.current / pageinfo.total : 0; return ( @@ -39,9 +51,19 @@ const FooterBar: React.FC = ({ bookKey, pageinfo, isHoveredAnim onMouseEnter={() => setHoveredBookKey(bookKey)} onMouseLeave={() => setHoveredBookKey('')} > - + + + ); }; diff --git a/apps/readest-app/src/app/reader/components/SidebarToggler.tsx b/apps/readest-app/src/app/reader/components/SidebarToggler.tsx index 02bfc680..f16c22cf 100644 --- a/apps/readest-app/src/app/reader/components/SidebarToggler.tsx +++ b/apps/readest-app/src/app/reader/components/SidebarToggler.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { TbLayoutSidebar, TbLayoutSidebarFilled } from 'react-icons/tb'; import { useReaderStore } from '@/store/readerStore'; +import Button from '@/components/Button'; interface SidebarTogglerProps { bookKey: string; @@ -18,13 +19,18 @@ const SidebarToggler: React.FC = ({ bookKey }) => { } }; return ( - + + + ); +}; + +export default Button; diff --git a/apps/readest-app/tailwind.config.ts b/apps/readest-app/tailwind.config.ts index 2b61fbdc..5f07f2ca 100644 --- a/apps/readest-app/tailwind.config.ts +++ b/apps/readest-app/tailwind.config.ts @@ -13,6 +13,7 @@ const config: Config = { { pattern: /text-./ }, { pattern: /fill-./ }, { pattern: /decoration-./ }, + { pattern: /tooltip-./ }, ], theme: { extend: {