fix(ui): объединить навигацию и сделать поиск доступным
This commit is contained in:
1 parent
9b3196363c
commit
fe9df167ec
6 files changed
+224
-353
No files matched your search
@@ -10,35 +10,7 @@ import {
|
||||
SidebarFooter,
|
||||
SidebarHeader,
|
||||
} from "@/components/ui/sidebar"
|
||||
import {
|
||||
LayoutDashboardIcon,
|
||||
ActivityIcon,
|
||||
ChartColumnIcon,
|
||||
MapIcon,
|
||||
HeartPulseIcon,
|
||||
GlobeIcon,
|
||||
NetworkIcon,
|
||||
LayersIcon,
|
||||
TagIcon,
|
||||
ServerIcon,
|
||||
FilterIcon,
|
||||
ShieldIcon,
|
||||
HardDriveIcon,
|
||||
RouteIcon,
|
||||
GitForkIcon,
|
||||
GitMergeIcon,
|
||||
TerminalIcon,
|
||||
SettingsIcon,
|
||||
DatabaseIcon,
|
||||
CableIcon,
|
||||
ScanLineIcon,
|
||||
BellIcon,
|
||||
ShieldCheckIcon,
|
||||
BoxIcon,
|
||||
BadgeCheckIcon,
|
||||
UsersIcon,
|
||||
LockIcon,
|
||||
} from "lucide-react"
|
||||
import { navigationGroups } from "@/lib/navigation"
|
||||
import { useDataSource } from "@/lib/data-source"
|
||||
import { useEvoBGP } from "@/lib/evobgp-context"
|
||||
import { requestJson } from "@/shared/api/http-client"
|
||||
@@ -48,66 +20,6 @@ import {
|
||||
type SidebarCountsDto,
|
||||
} from "@/lib/sidebar-badges"
|
||||
|
||||
type NavItemBase = { title: string; url: string; icon: React.ReactNode }
|
||||
|
||||
const navStructure: { label: string; items: NavItemBase[] }[] = [
|
||||
{
|
||||
label: "Обзор",
|
||||
items: [
|
||||
{ title: "Дашборд", url: "/dashboard", icon: <LayoutDashboardIcon /> },
|
||||
{ title: "Трафик", url: "/traffic", icon: <ActivityIcon /> },
|
||||
{ title: "Статистика", url: "/statistics", icon: <ChartColumnIcon /> },
|
||||
{ title: "Карта сети", url: "/network-map", icon: <MapIcon /> },
|
||||
{ title: "Мониторинг", url: "/uptime", icon: <HeartPulseIcon /> },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Данные",
|
||||
items: [
|
||||
{ title: "Домены", url: "/domains", icon: <GlobeIcon /> },
|
||||
{ title: "IP-диапазоны", url: "/ip-ranges", icon: <NetworkIcon /> },
|
||||
{ title: "ASN", url: "/asns", icon: <LayersIcon /> },
|
||||
{ title: "Communities", url: "/communities", icon: <TagIcon /> },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Управление",
|
||||
items: [
|
||||
{ title: "Серверы", url: "/servers", icon: <ServerIcon /> },
|
||||
{ title: "Пользователи", url: "/users", icon: <UsersIcon /> },
|
||||
{ title: "Фильтры", url: "/filters", icon: <FilterIcon /> },
|
||||
{ title: "Рекурсивные маршруты", url: "/recursive-routes", icon: <RouteIcon /> },
|
||||
{ title: "Firewall", url: "/firewall", icon: <ShieldIcon /> },
|
||||
{ title: "WireGuard", url: "/wireguard", icon: <ShieldCheckIcon /> },
|
||||
{ title: "IPsec / IKEv2", url: "/ipsec", icon: <LockIcon /> },
|
||||
{ title: "GRE-туннели", url: "/gre", icon: <CableIcon /> },
|
||||
{ title: "VXLAN", url: "/vxlan", icon: <NetworkIcon /> },
|
||||
{ title: "Контейнеры", url: "/containers", icon: <BoxIcon /> },
|
||||
{ title: "Сертификаты", url: "/certificates", icon: <BadgeCheckIcon /> },
|
||||
{ title: "Бэкапы", url: "/backups", icon: <HardDriveIcon /> },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Инструменты",
|
||||
items: [
|
||||
{ title: "Оптимизатор маршрутов", url: "/route-optimizer", icon: <RouteIcon /> },
|
||||
{ title: "OSPF", url: "/ospf", icon: <GitForkIcon /> },
|
||||
{ title: "BGP", url: "/bgp", icon: <GitMergeIcon /> },
|
||||
{ title: "Диагностика", url: "/probes", icon: <ScanLineIcon /> },
|
||||
{ title: "Терминал", url: "/terminal", icon: <TerminalIcon /> },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Система",
|
||||
items: [
|
||||
{ title: "Оповещения", url: "/alerts", icon: <BellIcon /> },
|
||||
{ title: "Сбор данных", url: "/data-collection", icon: <DatabaseIcon /> },
|
||||
{ title: "Релизы", url: "/releases", icon: <BadgeCheckIcon /> },
|
||||
{ title: "Настройки", url: "/settings", icon: <SettingsIcon /> },
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
type LiveSidebarCounts = SidebarCountsDto & {
|
||||
greTunnels?: number
|
||||
certificates?: number
|
||||
@@ -190,12 +102,12 @@ export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
return navStructure.map((g) => ({
|
||||
return navigationGroups.map((g) => ({
|
||||
label: g.label,
|
||||
items: g.items.map((it) => ({
|
||||
title: it.title,
|
||||
url: it.url,
|
||||
icon: it.icon,
|
||||
icon: React.createElement(it.icon, { "aria-hidden": true }),
|
||||
badge: mounted ? badgeFor(it.url) : undefined,
|
||||
})),
|
||||
}))
|
||||
|
||||
Reference in new issue
Block a user