import { type FC, useEffect } from 'react' import LogoImage from '../assets/images/logo.svg' import LogoSmall from '../assets/images/logo-small.svg' import { useTranslation } from 'react-i18next' import { Home2, Element3, Receipt21, TicketDiscount, DocumentText, Truck, Money3, People, UserSquare, Profile, Messages3, Chart, Setting2, Logout, Briefcase, Headphone, SmsTracking } from 'iconsax-react' import SideBarItem from './SideBarItem' import { useLocation } from 'react-router-dom' import { useSharedStore } from './store/sharedStore' import { clx } from '../helpers/utils' import BlogSubMenu from './components/BlogSubMenu' import ShippingSubMenu from './components/ShippingSubMenu' import SubMenuItem from './components/SubMenuItem' import { Pages } from '../config/Pages' const SideBar: FC = () => { const { t } = useTranslation('global') const { openSidebar, setOpenSidebar, hasSubMenu, setSubMenuName, setSubtMenu, subMenuName } = useSharedStore() const location = useLocation() const isActive = (name: string) => { return window.location.href.includes(name) } useEffect(() => { const split = location.pathname.split('/') if (split[1] === 'dashboard' || split[1] === 'products' || split[1] === 'orders' || split[1] === 'blog' || split[1] === 'shipment' || split[1] === 'financial' || split[1] === 'sellers' || split[1] === 'buyers' || split[1] === 'admin' || split[1] === 'tickets' || split[1] === 'reports' || split[1] === 'chat' || split[1] === 'contact' || split[1] === 'settings' || split[1] === 'pages' || split[1] === 'jobs' || split[1] === 'category') { setSubMenuName(split[1]) setSubtMenu(true) } else { setSubMenuName('') setSubtMenu(false) } }, [location.pathname, setSubMenuName, setSubtMenu]) const iconSizeSideBar = 20 return ( <> { openSidebar &&
setOpenSidebar(false)} /> }
{ !hasSubMenu ? : }
{t('sidebar.menu')}
{/* داشبورد */} } title="داشبورد" isActive={isActive('dashboard')} link="/dashboard" activeName='dashboard' /> {/* محصولات */} } title="محصولات" isActive={isActive('products')} link="/products" activeName='products' /> {/* سفارشات */} } title="سفارشات" isActive={isActive('orders')} link="/orders" activeName='orders' /> {/* تخفیف ها */} } title="تخفیف ها" isActive={isActive('coupon')} link={Pages.coupon.list} activeName='coupon' /> {/* بلاگ */} } title="بلاگ" isActive={isActive('blog')} link="/blog" activeName='blog' /> {/* روش های ارسال */} } title="روش های ارسال" isActive={isActive('shipment')} link={Pages.shipment.list} activeName='shipment' /> {/* مالی */} } title="مالی" isActive={isActive('financial')} link={Pages.financial.list} activeName='financial' /> {/* فروشندگان */} } title="فروشندگان" isActive={isActive('sellers')} link="/sellers" activeName='sellers' /> {/* خریداران */} } title="خریداران" isActive={isActive('buy-users')} link={Pages.buyUsers.list} activeName='buy-users' /> {/* کاربران */} } title="ادمین ها" isActive={isActive('admin')} link="/admin" activeName='admin' /> {/* تیکت ها */} } title="تیکت ها" isActive={isActive('tickets')} link="/tickets" activeName='tickets' /> {/* گزارش ها */} } title="گزارش ها" isActive={isActive('reports')} link="/reports" activeName='reports' /> {/* گفت و گو */} } title="گفت و گو" isActive={isActive('chat')} link="/chat" activeName='chat' /> {/* ارتباط با ما */} } title="ارتباط با ما" isActive={isActive('contact')} link={Pages.contactUs.list} activeName='contact' /> {/* تنظیمات */} } title="تنظیمات" isActive={isActive('settings')} link="/settings" activeName='settings' /> {/* مدیریت صفحات */} } title="مدیریت صفحات" isActive={isActive('pages')} link="/pages" activeName='pages' /> {/* مشاغل */} } title="مشاغل" isActive={isActive('jobs')} link="/jobs" activeName='jobs' />
} title="خروج" isActive={isActive('logout')} link={`#`} isLogout activeName='' />
{/* منوی فرعی */} { hasSubMenu && (openSidebar || window.innerWidth > 1139) &&
{ subMenuName === 'blog' ? : subMenuName === 'dashboard' ? : subMenuName === 'products' ? : subMenuName === 'orders' ? : subMenuName === 'shipment' ? : subMenuName === 'financial' ? : subMenuName === 'sellers' ? : subMenuName === 'buy-users' ? : subMenuName === 'admin' ? : subMenuName === 'tickets' ? : subMenuName === 'reports' ? : subMenuName === 'chat' ? : subMenuName === 'contact-us' ? : subMenuName === 'settings' ? : subMenuName === 'pages' ? : subMenuName === 'jobs' ? : subMenuName === 'category' ? : null }
} ) } // کامپوننت‌های SubMenu برای هر بخش - دقیقاً مثل BlogSubMenu const DashboardSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
داشبورد
) } const ProductsSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
محصولات
) } const OrdersSubMenu: FC = () => { const isActive = (name: string) => { return window.location.href.includes(name) } return (
سفارشات
) } const FinancialSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
مالی
) } const SellersSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
فروشندگان
) } const BuyersSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
خریداران
) } const UsersSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
ادمین ها
) } const TicketsSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
تیکت ها
) } const ReportsSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
گزارش ها
) } const ChatSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
گفت و گو
) } const ContactSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
ارتباط با ما
) } const SettingsSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
تنظیمات
) } const PagesSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
مدیریت صفحات
) } const JobsSubMenu: FC = () => { const isActive = (name: string) => { return location.pathname.includes(name) } return (
مشاغل
) } const CategorySubMenu: FC = () => { const location = useLocation() const isActive = (name: string) => { return location.pathname.includes(name) } return (
دسته بندی ها
) } export default SideBar