import { useLocation } from "react-router-dom"; import { PanelMenu, type MenuItem } from "./PanelMenu"; import { useLogout } from "../pages/Inventory/panelMenu"; import { useAuthStore } from "../store/auth"; // منوی همبرگری مشترک بین دو ماژول (پنل انبار / دفتر تدارکات) — // دقیقاً مثل منوی دفتر: عنوان «پنل‌ها»، ماژول فعلی با استایل فعال (پر) // + «✓ فعلی»، ماژول دیگر به‌عنوان سوییچر، و در پایان جداکننده + خروج. // مدیر پروژه (1:N): زیر «مدیریت انبار» یک آکاردئون باز می‌شود که همه‌ی // پروژه‌های تخصیص‌یافته را نشان می‌دهد؛ پروژه‌ی فعال با «✓ فعلی» مشخص است و // انتخاب هر پروژه فقط «پروژه‌ی فعال» را عوض می‌کند (نشست/توکن دست‌نخورده). export function AppSwitcherMenu({ activeModule, canSwitchToProcurement = true, }: { activeModule: "warehouse" | "procurement"; canSwitchToProcurement?: boolean; // مدیر پروژه به دفتر تدارکات دسترسی ندارد }) { const logout = useLogout(); const { pathname } = useLocation(); const user = useAuthStore((s) => s.user); const setActiveProject = useAuthStore((s) => s.setActiveProject); const items: MenuItem[] = []; const isPm = user?.role === "pm"; const pmProjects = isPm ? user?.projects ?? [] : []; const projectChildren: MenuItem[] | undefined = activeModule === "warehouse" && isPm ? pmProjects.map((p) => ({ label: p.name, to: pathname, // همان بخش فعلی؛ فقط پروژه عوض می‌شود active: p.id === user?.project_id, onClick: () => setActiveProject(p.id), })) : undefined; if (activeModule === "procurement") { items.push({ label: "مدیریت انبار", to: "/inventory" }); items.push({ label: "مدیریت تدارکات", to: "/", active: true }); } else { items.push({ label: "مدیریت انبار", to: "/inventory", active: true, children: projectChildren }); if (canSwitchToProcurement) { items.push({ label: "مدیریت تدارکات", to: "/" }); } } items.push({ divider: true }); items.push({ label: "خروج از حساب", onClick: logout }); return ; }