import clsx from 'clsx'; import React, { useEffect, useRef } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { FaSearch } from 'react-icons/fa'; import { PiPlus } from 'react-icons/pi'; import { PiSelectionAllDuotone } from 'react-icons/pi'; import { MdOutlineMenu } from 'react-icons/md'; import { MdArrowBackIosNew } from 'react-icons/md'; import { useEnv } from '@/context/EnvContext'; import { useTranslation } from '@/hooks/useTranslation'; import { useResponsiveSize } from '@/hooks/useResponsiveSize'; import { useTrafficLightStore } from '@/store/trafficLightStore'; import { navigateToLibrary } from '@/utils/nav'; import WindowButtons from '@/components/WindowButtons'; import Dropdown from '@/components/Dropdown'; import SettingsMenu from './SettingsMenu'; import ImportMenu from './ImportMenu'; import useShortcuts from '@/hooks/useShortcuts'; interface LibraryHeaderProps { isSelectMode: boolean; onImportBooks: () => void; onToggleSelectMode: () => void; } const LibraryHeader: React.FC = ({ isSelectMode, onImportBooks, onToggleSelectMode, }) => { const _ = useTranslation(); const router = useRouter(); const searchParams = useSearchParams(); const { appService } = useEnv(); const { isTrafficLightVisible, initializeTrafficLightStore, initializeTrafficLightListeners, setTrafficLightVisibility, cleanupTrafficLightListeners, } = useTrafficLightStore(); const headerRef = useRef(null); const iconSize16 = useResponsiveSize(16); const iconSize20 = useResponsiveSize(20); useShortcuts({ onToggleSelectMode, }); useEffect(() => { if (!appService?.hasTrafficLight) return; initializeTrafficLightStore(appService); initializeTrafficLightListeners(); setTrafficLightVisibility(true); return () => { cleanupTrafficLightListeners(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const windowButtonVisible = appService?.hasWindowBar && !isTrafficLightVisible; const isInGroupView = !!searchParams?.get('group'); return (
{isInGroupView && ( )}
} >
} > {appService?.hasWindowBar && ( )}
); }; export default LibraryHeader;