Files
vexplor/frontend/components/layout/MobileMenu.tsx
kjs 5f9c876f9e Enhance logistics and production pages with additional mappings and data aggregation
- Added Korean labels for `shipmentInstruction` and `purchase_detail` in the logistics pages to improve clarity.
- Introduced a new constant `WOPR_TABLE` in the production result page for better data management.
- Implemented daily aggregation of `work_order_process_result` data to enrich the `work_order_process` rows, enhancing data accuracy and user experience.

These updates improve the usability and data handling in the logistics and production modules.
2026-04-29 18:48:05 +09:00

65 lines
1.9 KiB
TypeScript

import { Button } from "@/components/ui/button";
import { Sheet, SheetContent, SheetTrigger, SheetHeader, SheetTitle } from "@/components/ui/sheet";
import { Menu } from "lucide-react";
import { MenuItem } from "@/types/menu";
import { LAYOUT_CONFIG } from "@/constants/layout";
import { MainSidebar } from "@/components/layout/MainSidebar";
interface SideMenuProps {
menuList: MenuItem[];
expandedMenus: Set<string>;
isSidebarOpen: boolean;
onSidebarToggle: (open: boolean) => void;
onMenuClick: (menu: MenuItem) => void;
variant?: "mobile" | "desktop";
}
/**
* 사이드 메뉴 컴포넌트
* 모바일에서는 Sheet로, 데스크톱에서는 햄버거 버튼으로 동작
*/
export function SideMenu({
menuList,
expandedMenus,
isSidebarOpen,
onSidebarToggle,
onMenuClick,
variant = "mobile",
}: SideMenuProps) {
if (variant === "desktop") {
// 데스크톱용 햄버거 버튼
return (
<Button variant="ghost" size="icon" onClick={() => onSidebarToggle(!isSidebarOpen)} className="h-8 w-8">
<Menu className="h-5 w-5" />
</Button>
);
}
// 모바일용 Sheet 메뉴
return (
<Sheet open={isSidebarOpen} onOpenChange={onSidebarToggle}>
<SheetTrigger asChild>
<Button variant="ghost" size="icon" className="md:hidden">
<Menu className="h-5 w-5" />
</Button>
</SheetTrigger>
<SheetContent side="left" className="w-64 p-0">
<SheetHeader className="sr-only">
<SheetTitle></SheetTitle>
</SheetHeader>
<div className="flex h-full flex-col">
<div className="border-b p-4">
<h2 className="font-semibold">{LAYOUT_CONFIG.COMPANY_NAME}</h2>
</div>
<MainSidebar
menuList={menuList}
expandedMenus={expandedMenus}
onMenuClick={onMenuClick}
className="flex-1 p-4"
/>
</div>
</SheetContent>
</Sheet>
);
}