import { useMemo } from 'react'; import { useOutletContext } from 'react-router-dom'; import { getConfigDefaults } from 'librechat-data-provider'; import { useGetStartupConfig } from 'librechat-data-provider/react-query'; import type { ContextType } from '~/common'; import { EndpointsMenu, ModelSpecsMenu, PresetsMenu, HeaderNewChat } from './Menus'; import ExportAndShareMenu from './ExportAndShareMenu'; import HeaderOptions from './Input/HeaderOptions'; import AddMultiConvo from './AddMultiConvo'; import { useMediaQuery } from '~/hooks'; const defaultInterface = getConfigDefaults().interface; export default function Header() { const { data: startupConfig } = useGetStartupConfig(); const { navVisible } = useOutletContext(); const modelSpecs = useMemo(() => startupConfig?.modelSpecs?.list ?? [], [startupConfig]); const interfaceConfig = useMemo( () => startupConfig?.interface ?? defaultInterface, [startupConfig], ); const isSmallScreen = useMediaQuery('(max-width: 768px)'); return (
{!navVisible && } {interfaceConfig.endpointsMenu && } {modelSpecs?.length > 0 && } {} {interfaceConfig.presets && } {isSmallScreen && ( )}
{!isSmallScreen && ( )}
{/* Empty div for spacing */}
); }