"use client" import * as React from "react" import { cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" import { Separator } from "@/components/ui/separator" import { Tooltip, TooltipTrigger, TooltipContent, } from "@/components/ui/tooltip" import { List, FormInput, FileText } from "lucide-react" import { Skeleton } from "@/components/ui/skeleton" import { getEngineeringForms, getIMForms } from "@/lib/tags-plant/service" interface FormInfo { formCode: string formName: string } interface SidebarProps extends React.HTMLAttributes { isCollapsed: boolean selectedPackageCode: string | null selectedFormCode: string | null currentMode: "master" | "engineering" | "im" | null projectCode: string // 추가 onMasterTagListClick: () => void onEngineeringFormClick: (formCode: string) => void onIMFormClick: (formCode: string) => void } export function Sidebar({ className, isCollapsed, selectedPackageCode, selectedFormCode, currentMode, projectCode, // 추가 onMasterTagListClick, onEngineeringFormClick, onIMFormClick, }: SidebarProps) { const [engineeringForms, setEngineeringForms] = React.useState([]) const [imForms, setIMForms] = React.useState([]) const [isLoadingEngineering, setIsLoadingEngineering] = React.useState(false) const [isLoadingIM, setIsLoadingIM] = React.useState(false) // Engineering 폼 로드 React.useEffect(() => { if (!selectedPackageCode || !projectCode) { setEngineeringForms([]) return } const loadEngineeringForms = async () => { setIsLoadingEngineering(true) try { const result = await getEngineeringForms(projectCode, selectedPackageCode) setEngineeringForms(result) } catch (error) { console.error("Engineering 폼 로딩 오류:", error) setEngineeringForms([]) } finally { setIsLoadingEngineering(false) } } loadEngineeringForms() }, [selectedPackageCode, projectCode]) // IM 폼 로드 React.useEffect(() => { if (!selectedPackageCode || !projectCode) { setIMForms([]) return } const loadIMForms = async () => { setIsLoadingIM(true) try { const result = await getIMForms(projectCode, selectedPackageCode) setIMForms(result) } catch (error) { console.error("IM 폼 로딩 오류:", error) setIMForms([]) } finally { setIsLoadingIM(false) } } loadIMForms() }, [selectedPackageCode, projectCode]) const isMasterActive = currentMode === "master" const isPackageSelected = selectedPackageCode !== null return (
{/* Master Tag List */}

{isCollapsed ? "M" : "Master"}

{isCollapsed ? ( Master Tag List ) : ( )}
{/* Engineering Forms */}

{isCollapsed ? "E" : "Engineering"}

{isLoadingEngineering ? ( Array.from({ length: 3 }).map((_, index) => (
)) ) : !isPackageSelected ? (

Select a package first

) : engineeringForms.length === 0 ? (

No forms available

) : ( engineeringForms.map((form) => { const isActive = currentMode === "engineering" && form.formCode === selectedFormCode return isCollapsed ? ( {form.formName} ) : ( ) }) )}
{/* IM Forms */}

{isCollapsed ? "I" : "IM"}

{isLoadingIM ? ( Array.from({ length: 3 }).map((_, index) => (
)) ) : !isPackageSelected ? (

Select a package first

) : imForms.length === 0 ? (

No forms available

) : ( imForms.map((form) => { const isActive = currentMode === "im" && form.formCode === selectedFormCode return isCollapsed ? ( {form.formName} ) : ( ) }) )}
) }