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 (
)
}