import { useState } from 'react'; import { Plus, Upload } from 'lucide-react'; import { showToast } from '@/lib/notify'; import { PageContainer } from '@/components/layout/PageContainer'; import { PageToolbar, SearchInput } from '@/components/layout/PageToolbar'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Button } from '@/components/ui/button'; import { usePartners } from '@/features/partners/hooks/usePartners'; import { usePartnerFilters } from '@/features/partners/hooks/usePartnerFilters'; import { PartnerTable } from '@/features/partners/components/PartnerTable'; import { PartnerFormSheet } from '@/features/partners/components/PartnerFormSheet'; import { ExcelUploadModal } from '@/features/partners/components/ExcelUploadModal'; import { prioritiesList, type Partner } from '@/features/partners/types'; export default function PartnersPage() { const { partners, createPartner, updatePartner, deletePartner, bulkCreate } = usePartners(); const { search, setSearch, priorityFilter, setPriorityFilter, page, setPage, paginated, totalPages, totalCount, itemsPerPage, } = usePartnerFilters(partners); // 모달 제어 + 폼 컨텍스트 const [openModal, setOpenModal] = useState(null); const [formMode, setFormMode] = useState<'create' | 'edit'>('create'); const [editing, setEditing] = useState(null); const openCreate = () => { setFormMode('create'); setEditing(null); setOpenModal('form'); }; const openEdit = (part: Partner) => { setFormMode('edit'); setEditing(part); setOpenModal('form'); }; const handleDeletePartner = async (id: string, partnerName: string) => { if (confirm(`[${partnerName}] 파트너사를 협력사 목록에서 삭제하시겠습니까?`)) { try { await deletePartner(id); showToast('협력사 정보가 명부에서 제거되었습니다.', 'info'); } catch (err) { showToast(err instanceof Error ? err.message : '협력사 삭제 실패', 'error'); } } }; return ( } > setSearch(e.target.value)} placeholder="협력사명, 코드 또는 담당자명으로 추적 검색..." /> {openModal === 'form' && ( setOpenModal(null)} /> )} {openModal === 'excel' && ( setOpenModal(null)} /> )} ); }