import { useState, useEffect } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import { Users, ShoppingCart, Tag, Settings, LogOut, TrendingUp, FolderTree, FileText, BookOpen, Heart, Package, LayoutDashboard, Languages, Image } from 'lucide-react'; import api from '../services/api'; const menuGroups = [ { title: 'اصلی', items: [ { icon: LayoutDashboard, label: 'داشبورد', path: '/' }, { icon: TrendingUp, label: 'گزارشات', path: '/reports' }, ] }, { title: 'فروشگاه', items: [ { icon: ShoppingCart, label: 'سفارشات', path: '/orders' }, { icon: Package, label: 'محصولات', path: '/products' }, { icon: FolderTree, label: 'دسته‌بندی‌ها', path: '/categories' }, { icon: Tag, label: 'کدهای تخفیف', path: '/coupons' }, ] }, { title: 'مدیریت و کاربران', items: [ { icon: Users, label: 'کاربران', path: '/users' }, { icon: Heart, label: 'حیوانات (Pets)', path: '/pets' }, ] }, { title: 'محتوا', items: [ { icon: FileText, label: 'وبلاگ', path: '/blogs' }, { icon: BookOpen, label: 'دانشنامه', path: '/wiki' }, ] }, { title: 'سیستم', items: [ { icon: Settings, label: 'تنظیمات', path: '/settings' }, { icon: Languages, label: 'متون رابط کاربری', path: '/ui-texts' }, { icon: Image, label: 'مدیریت رسانه', path: '/media' }, ] } ]; interface SidebarProps { isOpen: boolean; setIsOpen: (val: boolean) => void; } export default function Sidebar({ isOpen, setIsOpen }: SidebarProps) { const location = useLocation(); const navigate = useNavigate(); const [newOrdersCount, setNewOrdersCount] = useState(0); useEffect(() => { const fetchOrdersCount = async () => { try { const response = await api.get('/admin/dashboard/stats'); if (response.data?.success) { setNewOrdersCount(response.data.data.newOrders); } } catch (err) { console.error('Failed to fetch stats in sidebar', err); } }; fetchOrdersCount(); // Poll stats every 60 seconds const interval = setInterval(fetchOrdersCount, 60000); return () => clearInterval(interval); }, []); const handleLogout = () => { localStorage.removeItem('adminToken'); navigate('/login'); }; return ( <> {/* Mobile Backdrop */} {isOpen && (
setIsOpen(false)} /> )} ); }