import clsx from 'clsx'; import React, { useEffect, useRef, useState } from 'react'; import { PiDotsThreeVerticalBold } from 'react-icons/pi'; import { useEnv } from '@/context/EnvContext'; import { useReaderStore } from '@/store/readerStore'; import { useSidebarStore } from '@/store/sidebarStore'; import { useTrafficLightStore } from '@/store/trafficLightStore'; import { useResponsiveSize } from '@/hooks/useResponsiveSize'; import WindowButtons from '@/components/WindowButtons'; import Dropdown from '@/components/Dropdown'; import SidebarToggler from './SidebarToggler'; import BookmarkToggler from './BookmarkToggler'; import NotebookToggler from './NotebookToggler'; import SettingsToggler from './SettingsToggler'; import ViewMenu from './ViewMenu'; interface HeaderBarProps { bookKey: string; bookTitle: string; isTopLeft: boolean; isHoveredAnim: boolean; onCloseBook: (bookKey: string) => void; onSetSettingsDialogOpen: (open: boolean) => void; } const HeaderBar: React.FC = ({ bookKey, bookTitle, isTopLeft, isHoveredAnim, onCloseBook, onSetSettingsDialogOpen, }) => { const { appService } = useEnv(); const headerRef = useRef(null); const { isTrafficLightVisible, setTrafficLightVisibility, initializeTrafficLightStore, initializeTrafficLightListeners, cleanupTrafficLightListeners, } = useTrafficLightStore(); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const { hoveredBookKey, setHoveredBookKey, bookKeys } = useReaderStore(); const { isSideBarVisible } = useSidebarStore(); const iconSize16 = useResponsiveSize(16); const handleToggleDropdown = (isOpen: boolean) => { setIsDropdownOpen(isOpen); if (!isOpen) setHoveredBookKey(''); }; useEffect(() => { if (!appService?.hasTrafficLight) return; initializeTrafficLightStore(appService); initializeTrafficLightListeners(); setTrafficLightVisibility(isSideBarVisible); return () => { cleanupTrafficLightListeners(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [isSideBarVisible]); return (
setHoveredBookKey(bookKey)} onMouseLeave={() => setHoveredBookKey('')} >

{bookTitle}

} onToggle={handleToggleDropdown} > onCloseBook(bookKey)} />
); }; export default HeaderBar;