import { FileText } from 'lucide-react'; import { useRecoilState } from 'recoil'; import { Fragment, useState, memo } from 'react'; import { Menu, MenuItem, MenuButton, MenuItems, Transition } from '@headlessui/react'; import { useGetUserBalance, useGetStartupConfig } from 'librechat-data-provider/react-query'; import FilesView from '~/components/Chat/Input/Files/FilesView'; import { useAuthContext } from '~/hooks/AuthContext'; import useAvatar from '~/hooks/Messages/useAvatar'; import { LinkIcon, GearIcon } from '~/components'; import { UserIcon } from '~/components/svg'; import { useLocalize } from '~/hooks'; import Settings from './Settings'; import NavLink from './NavLink'; import Logout from './Logout'; import { cn } from '~/utils/'; import store from '~/store'; function AccountSettings() { const localize = useLocalize(); const { user, isAuthenticated } = useAuthContext(); const { data: startupConfig } = useGetStartupConfig(); const balanceQuery = useGetUserBalance({ enabled: !!isAuthenticated && startupConfig?.checkBalance, }); const [showSettings, setShowSettings] = useState(false); const [showFiles, setShowFiles] = useRecoilState(store.showFiles); const avatarSrc = useAvatar(user); const name = user?.avatar ?? user?.username ?? ''; return ( <> {({ open }) => ( <>
{name.length === 0 ? (
) : ( avatar )}
{user?.name ?? user?.username ?? localize('com_nav_user')}
{user?.email ?? localize('com_nav_user')}
{startupConfig?.checkBalance === true && balanceQuery.data != null && !isNaN(parseFloat(balanceQuery.data)) && ( <>
{`Balance: ${parseFloat(balanceQuery.data).toFixed(2)}`}
)} {({ focus }) => ( } text={localize('com_nav_my_files')} clickHandler={() => setShowFiles(true)} /> )} {startupConfig?.helpAndFaqURL !== '/' && ( {({ focus }) => ( } text={localize('com_nav_help_faq')} clickHandler={() => window.open(startupConfig?.helpAndFaqURL, '_blank')} /> )} )} {({ focus }) => ( } text={localize('com_nav_settings')} clickHandler={() => { setTimeout(() => setShowSettings(true), 50); }} /> )}
{({ focus }) => } )}
{showFiles && } {showSettings && } ); } export default memo(AccountSettings);