import { useState, useEffect, useRef } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { Users, ShoppingCart, Tag, Settings, TrendingUp, FolderTree, FileText, BookOpen, Heart, Package, LayoutDashboard, Languages, Image, Video, PhoneCall, Sparkles, MessageSquareQuote, FlaskConical, Building2, Globe, DollarSign, Sliders, MessageSquare, Receipt, CreditCard } 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: Receipt, label: 'تراکنش‌ها و لاگ پرداخت', path: '/transactions' }, { icon: Package, label: 'محصولات', path: '/products' }, { icon: FolderTree, label: 'دسته‌بندی‌ها', path: '/categories' }, { icon: Tag, label: 'کدهای تخفیف', path: '/coupons' }, { icon: Sparkles, label: 'مشاور هوشمند', path: '/smart-advisor' }, { icon: FileText, label: 'نسخه‌های پزشکی', path: '/prescriptions' }, ] }, { title: 'مدیریت و همکاران B2B', items: [ { icon: Users, label: 'کاربران', path: '/users' }, { icon: Heart, label: 'حیوانات (Pets)', path: '/pets' }, { icon: Building2, label: 'مدیریت B2B & عمده', path: '/b2b' }, { icon: PhoneCall, label: 'تماس با ما & اطلاعات', path: '/contact' }, ] }, { title: 'محتوا و دانشنامه', items: [ { icon: Image, label: 'بنرها و اسلایدرها', path: '/banners' }, { icon: FlaskConical, label: 'دانشنامه ترکیبات', path: '/ingredients' }, { icon: MessageSquareQuote, label: 'نظرات و گواهی‌ها', path: '/testimonials' }, { icon: FileText, label: 'وبلاگ', path: '/blogs' }, { icon: BookOpen, label: 'دانشنامه عمومی', path: '/wiki' }, { icon: Video, label: 'مدیریت ویدئوها', path: '/videos' }, ] }, { title: 'سیستم و تنظیمات', items: [ { icon: Settings, label: 'تنظیمات کلی', path: '/settings' }, { icon: MessageSquare, label: 'تنظیمات پیامک', path: '/settings/sms' }, { icon: Globe, label: 'تنظیمات سئو', path: '/settings/seo' }, { icon: DollarSign, label: 'تنظیمات مالی & ارسال', path: '/settings/financial' }, { icon: Sliders, label: 'تنظیمات سیستمی', path: '/settings/system' }, { 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 [newOrdersCount, setNewOrdersCount] = useState(0); const intervalRef = useRef | null>(null); 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(); intervalRef.current = setInterval(fetchOrdersCount, 60000); return () => { if (intervalRef.current) clearInterval(intervalRef.current); }; }, []); return ( <> {/* Mobile Backdrop */} {isOpen && (
setIsOpen(false)} /> )} ); }