diff --git a/apps/readest-app/src/app/reader/components/HeaderBar.tsx b/apps/readest-app/src/app/reader/components/HeaderBar.tsx index c5e2659d..1f9bc229 100644 --- a/apps/readest-app/src/app/reader/components/HeaderBar.tsx +++ b/apps/readest-app/src/app/reader/components/HeaderBar.tsx @@ -1,8 +1,11 @@ -import React, { useRef } from 'react'; +import React, { useRef, useState } from 'react'; import clsx from 'clsx'; import { VscLayoutSidebarLeft, VscLayoutSidebarLeftOff } from 'react-icons/vsc'; +import { PiDotsThreeVerticalBold } from 'react-icons/pi'; import WindowButtons from '@/components/WindowButtons'; +import Dropdown from '@/components/Dropdown'; +import ViewMenu from './ViewMenu'; interface HeaderBarProps { bookKey: string; @@ -30,6 +33,8 @@ const HeaderBar: React.FC = ({ onCloseBook, }) => { const headerRef = useRef(null); + const [isDropdownOpen, setIsDropdownOpen] = useState(false); + const toggleSideBar = () => { if (!isSideBarVisible) { setSideBarVisibility(true); @@ -46,7 +51,8 @@ const HeaderBar: React.FC = ({ `header-bar absolute top-0 z-10 flex h-11 w-full items-center px-4`, `shadow-xs bg-base-100 rounded-window transition-opacity duration-300`, isHoveredAnim && 'hover-bar-anim', - hoveredBookKey === bookKey ? `opacity-100` : `opacity-0`, + hoveredBookKey === bookKey || isDropdownOpen ? `opacity-100` : `opacity-0`, + isDropdownOpen && 'header-bar-pinned', )} onMouseEnter={() => setHoveredBookKey(bookKey)} onMouseLeave={() => setHoveredBookKey('')} @@ -66,6 +72,15 @@ const HeaderBar: React.FC = ({
+ } + onToggle={setIsDropdownOpen} + > + + + void; +} + +const ViewMenu: React.FC = ({}) => { + const [isDarkMode, setDarkMode] = useState(false); + const [isScrolledMode, setScrolledMode] = useState(false); + const [isInvertedColors, setInvertedColors] = useState(false); + const [zoomLevel, setZoomLevel] = useState(100); + + const toggleDarkMode = () => setDarkMode(!isDarkMode); + const toggleScrolledMode = () => setScrolledMode(!isScrolledMode); + const toggleInvertedColors = () => setInvertedColors(!isInvertedColors); + const zoomIn = () => setZoomLevel((prev) => Math.min(prev + 10, 200)); + const zoomOut = () => setZoomLevel((prev) => Math.max(prev - 10, 50)); + const resetZoom = () => setZoomLevel(100); + + const openFontLayoutMenu = () => { + // open font layout menu + }; + + return ( +
+
+ + + {zoomLevel}% + + +
+
+ +
+ + +
+ + +
+ ); +}; + +export default ViewMenu;