// PanelBar.jsx import React from 'react'; import { PanelBar, PanelBarItem } from '@progress/kendo-react-layout'; import { useNavigate } from 'react-router-dom'; import { SvgIcon } from '@progress/kendo-react-common'; import { bookIcon, inboxIcon, trackChangesIcon, plusOutlineIcon, globeOutlineIcon, linkIcon, tellAFriendIcon, facebookIcon, xLogoIcon, linkedinIcon, redditIcon } from '@progress/kendo-svg-icons'; import { panelbarData } from '../data/panelbar-data'; // Import custom icon images (PNG files) import GiteaIcon from '../assets/icons/Gitea_Logo.png'; import NotionIcon from '../assets/icons/Notion-logo.png'; import HashnodeIcon from '../assets/icons/Hashnode_icon.png'; import DevIcon from '../assets/icons/DEV_Community_Badge.png'; import VeniceIcon from '../assets/icons/venice_icon.png'; import DlseitzIcon from '../assets/icons/dlseitz-icon.svg'; const iconMap = { bookIcon, inboxIcon, trackChangesIcon, plusOutlineIcon, globeOutlineIcon, linkIcon, tellAFriendIcon, facebookIcon, xLogoIcon, linkedinIcon, redditIcon, // Custom SVG icons giteaIcon: GiteaIcon, notionIcon: NotionIcon, hashnodeIcon: HashnodeIcon, devIcon: DevIcon, veniceIcon: VeniceIcon, dlseitzIcon: DlseitzIcon }; const CampfirePanelBar = ({ isExpanded = true }) => { const navigate = useNavigate(); const renderItem = (item) => { // External links if (item.url) { return ( {iconMap[item.icon] && typeof iconMap[item.icon] === 'string' ? ( {item.title} ) : ( )} {item.title} } /> ); } // Internal routes if (item.route) { return ( navigate(item.route)} > {item.title} } /> ); } // Headers with children return ( {item.title} } expanded={true} > {item.items.map(renderItem)} ); }; return (
{panelbarData.map(renderItem)}
); }; export default CampfirePanelBar;