import { useLocation } from 'react-router-dom' import DashboardSidebar from '../common/DashboardSidebar' import FilamentIcon from '../../Icons/FilamentIcon' import PartIcon from '../../Icons/PartIcon' import ProductIcon from '../../Icons/ProductIcon' import VendorIcon from '../../Icons/VendorIcon' import MaterialIcon from '../../Icons/MaterialIcon' import NoteTypeIcon from '../../Icons/NoteTypeIcon' import SettingsIcon from '../../Icons/SettingsIcon' import AuditLogIcon from '../../Icons/AuditLogIcon' import DeveloperIcon from '../../Icons/DeveloperIcon' import PersonIcon from '../../Icons/PersonIcon' import HostIcon from '../../Icons/HostIcon' import DocumentPrinterIcon from '../../Icons/DocumentPrinterIcon' import DocumentTemplateIcon from '../../Icons/DocumentTemplateIcon' import DocumentIcon from '../../Icons/DocumentIcon' import DocumentSizeIcon from '../../Icons/DocumentSizeIcon' import DocumentJobIcon from '../../Icons/DocumentJobIcon' import FileIcon from '../../Icons/FileIcon' import CourierIcon from '../../Icons/CourierIcon' import CourierServiceIcon from '../../Icons/CourierServiceIcon' import TaxRateIcon from '../../Icons/TaxRateIcon' import TaxRecordIcon from '../../Icons/TaxRecordIcon' const items = [ { key: 'filaments', icon: , label: 'Filaments', path: '/dashboard/management/filaments' }, { key: 'parts', icon: , label: 'Parts', path: '/dashboard/management/parts' }, { key: 'products', icon: , label: 'Products', path: '/dashboard/management/products' }, { key: 'vendors', icon: , label: 'Vendors', path: '/dashboard/management/vendors' }, { key: 'materials', icon: , label: 'Materials', path: '/dashboard/management/materials' }, { type: 'divider' }, { key: 'couriers', icon: , label: 'Couriers', path: '/dashboard/management/couriers' }, { key: 'courierServices', icon: , label: 'Courier Services', path: '/dashboard/management/courierservices' }, { type: 'divider' }, { key: 'taxRates', icon: , label: 'Tax Rates', path: '/dashboard/management/taxrates' }, { key: 'taxRecords', icon: , label: 'Tax Records', path: '/dashboard/management/taxrecords' }, { type: 'divider' }, { key: 'noteTypes', icon: , label: 'Note Types', path: '/dashboard/management/notetypes' }, { key: 'documents', icon: , label: 'Documents', children: [ { key: 'documentPrinters', icon: , label: 'Document Printers', path: '/dashboard/management/documentprinters' }, { key: 'documentJobs', icon: , label: 'Document Jobs', path: '/dashboard/management/documentjobs' }, { key: 'documentTemplates', icon: , label: 'Document Templates', path: '/dashboard/management/documenttemplates' }, { key: 'documentSizes', icon: , label: 'Document Sizes', path: '/dashboard/management/documentsizes' } ] }, { type: 'divider' }, { key: 'hosts', icon: , label: 'Hosts', path: '/dashboard/management/hosts' }, { type: 'divider' }, { key: 'users', icon: , label: 'Users', path: '/dashboard/management/users' }, { key: 'settings', icon: , label: 'Settings', path: '/dashboard/management/settings' }, { key: 'files', icon: , label: 'Files', path: '/dashboard/management/files' }, { key: 'auditLogs', icon: , label: 'Audit Logs', path: '/dashboard/management/auditlogs' } ] if (import.meta.env.MODE === 'development') { items.push( { type: 'divider' }, { key: 'developer', icon: , label: 'Developer', path: '/dashboard/developer/sessionstorage' } ) } const routeKeyMap = { '/dashboard/management/filaments': 'filaments', '/dashboard/management/parts': 'parts', '/dashboard/management/users': 'users', '/dashboard/management/products': 'products', '/dashboard/management/vendors': 'vendors', '/dashboard/management/couriers': 'couriers', '/dashboard/management/courierservices': 'courierServices', '/dashboard/management/taxrates': 'taxRates', '/dashboard/management/taxrecords': 'taxRecords', '/dashboard/management/materials': 'materials', '/dashboard/management/notetypes': 'noteTypes', '/dashboard/management/settings': 'settings', '/dashboard/management/auditlogs': 'auditLogs', '/dashboard/management/files': 'files', '/dashboard/management/hosts': 'hosts', '/dashboard/management/documentsizes': 'documentSizes', '/dashboard/management/documentprinters': 'documentPrinters', '/dashboard/management/documenttemplates': 'documentTemplates', '/dashboard/management/documentjobs': 'documentJobs' } const ManagementSidebar = (props) => { const location = useLocation() const selectedKey = (() => { const match = Object.keys(routeKeyMap).find((path) => { const pathSplit = path.split('/') const locationPathSplit = location.pathname.split('/') if (pathSplit.length > locationPathSplit.length) return false for (let i = 0; i < pathSplit.length; i++) { if (pathSplit[i] !== locationPathSplit[i]) return false } return true }) return match ? routeKeyMap[match] : 'filaments' })() return } export default ManagementSidebar