import { NavLink } from 'react-router-dom' import type { ReactNode } from 'react' import { ApartmentOutlined, ClusterOutlined, 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: }, // /routing-rules erreichbar via Domain-Modal "Pfad-Routing"-Tab — // kein eigener Nav-Eintrag mehr (war für 90% der Setups overkill). ], }, { labelKey: 'nav.section.network', items: [ { path: '/networks', labelKey: 'nav.networks', icon: }, { path: '/ip-addresses', labelKey: 'nav.ipAddresses', icon: }, { path: '/ssl', labelKey: 'nav.ssl', icon: }, ], }, { labelKey: 'nav.section.security', items: [ { path: '/firewall', labelKey: 'nav.firewall', icon: }, { path: '/vpn/wireguard', labelKey: 'nav.wireguard', icon: }, ], }, { labelKey: 'nav.section.system', items: [ { path: '/cluster', labelKey: 'nav.cluster', icon: }, { path: '/settings', labelKey: 'nav.settings', icon: }, ], }, ] const VERSION = '1.0.12' export default function Sidebar({ isOpen, onClose }: SidebarProps) { const { t } = useTranslation() return ( ) }