import { Link, useLocation } from 'react-router-dom'
import type { ReactNode } from 'react'
import {
ApartmentOutlined,
ClockCircleOutlined,
CloudServerOutlined,
ClusterOutlined,
CrownOutlined,
DashboardOutlined,
DatabaseOutlined,
FireOutlined,
GlobalOutlined,
NodeIndexOutlined,
SafetyCertificateOutlined,
SettingOutlined,
ThunderboltOutlined,
} from '@ant-design/icons'
import { useTranslation } from 'react-i18next'
interface SidebarProps {
isOpen: boolean
onClose?: () => void
}
interface NavItem {
path: string
labelKey: string
icon: ReactNode
}
interface NavSection {
labelKey: string
items: NavItem[]
}
const NAV: NavSection[] = [
{
labelKey: 'nav.section.overview',
items: [
{ path: '/dashboard', labelKey: 'nav.dashboard', icon: },
],
},
{
labelKey: 'nav.section.routing',
items: [
{ path: '/domains', labelKey: 'nav.domains', icon: },
{ path: '/backends', labelKey: 'nav.backends', icon: },
],
},
{
labelKey: 'nav.section.network',
items: [
{ path: '/networks', labelKey: 'nav.networks', icon: },
{ path: '/ip-addresses', labelKey: 'nav.ipAddresses', icon: },
{ path: '/ssl', labelKey: 'nav.ssl', icon: },
{ path: '/dns', labelKey: 'nav.dns', icon: },
{ path: '/ntp', labelKey: 'nav.ntp', icon: },
],
},
{
labelKey: 'nav.section.security',
items: [
{ path: '/firewall', labelKey: 'nav.firewall', icon: },
{ path: '/vpn/wireguard', labelKey: 'nav.wireguard', icon: },
{ path: '/forward-proxy', labelKey: 'nav.forwardProxy', icon: },
],
},
{
labelKey: 'nav.section.system',
items: [
{ path: '/cluster', labelKey: 'nav.cluster', icon: },
{ path: '/license', labelKey: 'nav.license', icon: },
{ path: '/settings', labelKey: 'nav.settings', icon: },
],
},
]
const VERSION = '1.0.60'
// Sidebar-Pattern 1:1 aus netcell-webpanel (enconf) übernommen:
// -