import { Button } from '@/components/ui/button'; import message from '@/components/ui/message'; import { cn } from '@/lib/utils'; import { Routes } from '@/routes'; import { logout } from '@/services/admin-service'; import authorizationUtil from '@/utils/authorization-util'; import { useMutation } from '@tanstack/react-query'; import { LucideMonitor, LucideServerCrash, LucideSquareUserRound, LucideUserCog, LucideUserStar, } from 'lucide-react'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { NavLink, Outlet, useNavigate } from 'umi'; import ThemeSwitch from './components/theme-switch'; import { IS_ENTERPRISE } from './utils'; const AdminLayout = () => { const { t } = useTranslation(); const navigate = useNavigate(); const navItems = useMemo( () => [ { path: Routes.AdminServices, name: t('admin.serviceStatus'), icon: , }, { path: Routes.AdminUserManagement, name: t('admin.userManagement'), icon: , }, ...(IS_ENTERPRISE ? [ { path: Routes.AdminWhitelist, name: t('admin.registrationWhitelist'), icon: , }, { path: Routes.AdminRoles, name: t('admin.roles'), icon: , }, { path: Routes.AdminMonitoring, name: t('admin.monitoring'), icon: , }, ] : []), ], [t], ); const logoutMutation = useMutation({ mutationKey: ['adminLogout'], mutationFn: async () => { await logout(); message.success(t('message.logout')); authorizationUtil.removeAll(); navigate(Routes.Admin); }, retry: false, }); return (
); }; export default AdminLayout;