"use client"; import React from "react"; import { Plus, ClipboardList } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { WorkItemCard } from "./WorkItemCard"; import { WorkItemDetailList } from "./WorkItemDetailList"; import { WorkItem, WorkItemDetail, WorkPhaseDefinition, DetailTypeDefinition, } from "../types"; interface WorkPhaseSectionProps { phase: WorkPhaseDefinition; items: WorkItem[]; selectedWorkItemId: string | null; selectedWorkItemDetails: WorkItemDetail[]; detailTypes: DetailTypeDefinition[]; readonly?: boolean; onSelectWorkItem: (workItemId: string) => void; onAddWorkItem: (phase: string) => void; onEditWorkItem: (item: WorkItem) => void; onDeleteWorkItem: (id: string) => void; onCreateDetail: (workItemId: string, data: Partial) => void; onUpdateDetail: (id: string, data: Partial) => void; onDeleteDetail: (id: string) => void; } export function WorkPhaseSection({ phase, items, selectedWorkItemId, selectedWorkItemDetails, detailTypes, readonly, onSelectWorkItem, onAddWorkItem, onEditWorkItem, onDeleteWorkItem, onCreateDetail, onUpdateDetail, onDeleteDetail, }: WorkPhaseSectionProps) { const selectedItem = items.find((i) => i.id === selectedWorkItemId) || null; const isThisSectionSelected = items.some( (i) => i.id === selectedWorkItemId ); return (
{/* 섹션 헤더 */}

{phase.label}

{items.length}개 항목
{!readonly && ( )}
{/* 콘텐츠 영역 */}
{/* 좌측: 작업 항목 카드 목록 */}
{items.length === 0 ? (

등록된 항목이 없습니다

) : (
{items.map((item) => ( onSelectWorkItem(item.id)} onEdit={() => onEditWorkItem(item)} onDelete={() => onDeleteWorkItem(item.id)} /> ))}
)}
{/* 우측: 상세 리스트 */}
selectedWorkItemId && onCreateDetail(selectedWorkItemId, data) } onUpdateDetail={onUpdateDetail} onDeleteDetail={onDeleteDetail} />
); }