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;