import { Download } from 'lucide-react'; import { useRecoilValue } from 'recoil'; import { Fragment, useState } from 'react'; import { useGetUserBalance, useGetStartupConfig } from 'librechat-data-provider'; import type { TConversation } from 'librechat-data-provider'; import { Menu, Transition } from '@headlessui/react'; import { ExportModel } from './ExportConversation'; import ClearConvos from './ClearConvos'; import Settings from './Settings'; import NavLink from './NavLink'; import Logout from './Logout'; import { LinkIcon, DotsIcon, GearIcon } from '~/components'; import { useAuthContext } from '~/hooks/AuthContext'; import { useLocalize } from '~/hooks'; import { cn } from '~/utils/'; import store from '~/store'; export default function NavLinks() { const { user, isAuthenticated } = useAuthContext(); const { data: startupConfig } = useGetStartupConfig(); const balanceQuery = useGetUserBalance({ enabled: !!isAuthenticated && startupConfig?.checkBalance, }); const [showExports, setShowExports] = useState(false); const [showClearConvos, setShowClearConvos] = useState(false); const [showSettings, setShowSettings] = useState(false); const localize = useLocalize(); const conversation = useRecoilValue(store.conversation) ?? ({} as TConversation); const exportable = conversation?.conversationId && conversation?.conversationId !== 'new' && conversation?.conversationId !== 'search'; const clickHandler = () => { if (exportable) { setShowExports(true); } }; return ( <> {({ open }) => ( <> {startupConfig?.checkBalance && balanceQuery.data && (
{`Balance: ${balanceQuery.data}`}
)}
{user?.name || localize('com_nav_user')}
} text={localize('com_nav_export_conversation')} clickHandler={clickHandler} />
} text={localize('com_nav_help_faq')} clickHandler={() => window.open('https://docs.librechat.ai/', '_blank')} /> } text={localize('com_nav_settings')} clickHandler={() => setShowSettings(true)} />
)}
{showExports && } {showClearConvos && } {showSettings && } ); }