import { memo, useCallback, lazy, Suspense } from 'react'; import { useQueryClient } from '@tanstack/react-query'; import { useRecoilValue } from 'recoil'; import { QueryKeys } from 'librechat-data-provider'; import { Skeleton, Sidebar, Button, TooltipAnchor, NewChatIcon } from '@librechat/client'; import type { NavLink } from '~/common'; import { CLOSE_SIDEBAR_ID } from '~/components/Chat/Menus/OpenSidebar'; import { useActivePanel } from '~/Providers'; import { useLocalize, useNewConvo } from '~/hooks'; import { clearMessagesCache, cn } from '~/utils'; import store from '~/store'; const AccountSettings = lazy(() => import('~/components/Nav/AccountSettings')); const NewChatButton = memo(function NewChatButton() { const localize = useLocalize(); const queryClient = useQueryClient(); const { newConversation } = useNewConvo(); const conversation = useRecoilValue(store.conversationByIndex(0)); const handleClick = useCallback( (e: React.MouseEvent) => { if (e.button === 0 && (e.ctrlKey || e.metaKey)) { return; } e.preventDefault(); clearMessagesCache(queryClient, conversation?.conversationId); queryClient.invalidateQueries([QueryKeys.messages]); newConversation(); }, [queryClient, conversation?.conversationId, newConversation], ); return (
} /> ); }); const NavIconButton = memo(function NavIconButton({ link, isActive, expanded, setActive, onExpand, }: { link: NavLink; isActive: boolean; expanded: boolean; setActive: (id: string) => void; onExpand?: () => void; }) { const localize = useLocalize(); const handleClick = useCallback( (e: React.MouseEvent) => { if (link.onClick) { link.onClick(e); return; } if (!isActive) { setActive(link.id); } if (!expanded) { onExpand?.(); } }, [link, isActive, setActive, expanded, onExpand], ); return (