import { IconAdmin, IconAdminOff, IconDarkTheme, IconDatabase, IconDBStructure, IconHelp, IconHelpOff, IconImage, IconLightTheme, IconLogout, IconRESTapi, IconUser } from '@/components/Icons'; import { CProps } from '@/components/props'; import Dropdown from '@/components/ui/Dropdown'; import DropdownButton from '@/components/ui/DropdownButton'; import { useAuth } from '@/context/AuthContext'; import { useConceptOptions } from '@/context/ConceptOptionsContext'; import { useConceptNavigation } from '@/context/NavigationContext'; import { urls } from '../urls'; interface UserDropdownProps { isOpen: boolean; hideDropdown: () => void; } function UserDropdown({ isOpen, hideDropdown }: UserDropdownProps) { const { darkMode, adminMode, toggleAdminMode, toggleDarkMode, showHelp, toggleShowHelp } = useConceptOptions(); const router = useConceptNavigation(); const { user, logout } = useAuth(); function navigateProfile(event: CProps.EventMouse) { hideDropdown(); router.push(urls.profile, event.ctrlKey || event.metaKey); } function logoutAndRedirect() { hideDropdown(); logout(() => router.push(urls.login)); } function gotoAdmin() { hideDropdown(); logout(() => router.push(urls.admin, true)); } function gotoIcons(event: CProps.EventMouse) { hideDropdown(); router.push(urls.icons, event.ctrlKey || event.metaKey); } function gotoRestApi() { hideDropdown(); router.push(urls.rest_api, true); } function gotoDatabaseSchema(event: CProps.EventMouse) { hideDropdown(); router.push(urls.database_schema, event.ctrlKey || event.metaKey); } function handleToggleDarkMode() { toggleDarkMode(); } return ( } onClick={navigateProfile} /> : } title='Переключение темы оформления' onClick={handleToggleDarkMode} /> : } title='Отображение иконок подсказок' onClick={toggleShowHelp} /> {user?.is_staff ? ( : } title='Работа в режиме администратора' onClick={toggleAdminMode} /> ) : null} {user?.is_staff ? ( } className='border-t' onClick={gotoRestApi} /> ) : null} {user?.is_staff ? ( } onClick={gotoAdmin} /> ) : null} {user?.is_staff ? ( } onClick={gotoIcons} /> ) : null} {user?.is_staff ? ( } onClick={gotoDatabaseSchema} className='border-b' /> ) : null} } onClick={logoutAndRedirect} /> ); } export default UserDropdown;