import { useMemo } from 'react'; import { useMediaQuery } from '@librechat/client'; import { useOutletContext } from 'react-router-dom'; import { AnimatePresence, motion } from 'framer-motion'; import { getConfigDefaults, PermissionTypes, Permissions } from 'librechat-data-provider'; import type { ContextType } from '~/common'; import { PresetsMenu, HeaderNewChat, OpenSidebar } from './Menus'; import ModelSelector from './Menus/Endpoints/ModelSelector'; import { useGetStartupConfig } from '~/data-provider'; import ExportAndShareMenu from './ExportAndShareMenu'; import BookmarkMenu from './Menus/BookmarkMenu'; import { TemporaryChat } from './TemporaryChat'; // import AddMultiConvo from './AddMultiConvo'; import { useHasAccess } from '~/hooks'; import { cn } from '~/utils'; const defaultInterface = getConfigDefaults().interface; export default function Header() { const { data: startupConfig } = useGetStartupConfig(); const { navVisible, setNavVisible } = useOutletContext(); const interfaceConfig = useMemo( () => startupConfig?.interface ?? defaultInterface, [startupConfig], ); const hasAccessToBookmarks = useHasAccess({ permissionType: PermissionTypes.BOOKMARKS, permission: Permissions.USE, }); // const hasAccessToMultiConvo = useHasAccess({ // permissionType: PermissionTypes.MULTI_CONVO, // permission: Permissions.USE, // }); const isSmallScreen = useMediaQuery('(max-width: 768px)'); return (
{!navVisible && ( )} {!(navVisible && isSmallScreen) && (
{interfaceConfig.presets === true && interfaceConfig.modelSelect && } {hasAccessToBookmarks === true && } {/* {hasAccessToMultiConvo === true && } */} {isSmallScreen && ( <> )}
)}
{!isSmallScreen && (
)}
{/* Empty div for spacing */}
); }