import React from 'react' import { NavLink } from 'react-router-dom' import PropTypes from 'prop-types' import SimpleBar from 'simplebar-react' import 'simplebar-react/dist/simplebar.min.css' import { CBadge, CNavLink, CSidebarNav } from '@coreui/react' export const AppSidebarNav = ({ items }) => { const navLink = (name, icon, badge, indent = false) => { return ( <> {icon ? icon : indent && ( )} {name && name} {badge && ( {badge.text} )} ) } const navItem = (item, index, indent = false) => { const { component, name, badge, icon, ...rest } = item const Component = component return ( {rest.to || rest.href ? ( {navLink(name, icon, badge, indent)} ) : ( navLink(name, icon, badge, indent) )} ) } const navGroup = (item, index) => { const { component, name, icon, items, to, ...rest } = item const Component = component return ( {item.items?.map((item, index) => item.items ? navGroup(item, index) : navItem(item, index, true), )} ) } return ( {items && items.map((item, index) => (item.items ? navGroup(item, index) : navItem(item, index)))} ) } AppSidebarNav.propTypes = { items: PropTypes.arrayOf(PropTypes.any).isRequired, }