import { DataTable } from '@/components/ui/data-table'; import { TablePagination } from '@/components/ui/table-pagination'; import { formatPhoneKR } from '@/lib/phone'; import type { Partner } from '../types'; type PartnerTableProps = { data: Partner[]; selectedIds: string[]; onSelectionChange: (ids: string[]) => void; onRowClick: (part: Partner) => void; page: number; totalPages: number; totalCount: number; pageSize: number; onPageChange: (page: number) => void; /** 툴바와 한 카드로 붙일 때 테이블 자체 테두리/라운드를 죽이는 용도 */ className?: string; }; export function PartnerTable({ data, selectedIds, onSelectionChange, onRowClick, page, totalPages, totalCount, pageSize, onPageChange, className, }: PartnerTableProps) { return ( part.supplier_id} onRowClick={onRowClick} selection={{ selectedKeys: selectedIds, onSelectionChange }} empty="협약된 가용 B2B 파트너사가 존재하지 않습니다." footer={ } columns={[ { header: '협력사명', align: 'left', headClassName: 'w-2/5', cell: (part) => {part.name}, }, { header: '협력사코드', align: 'left', cellClassName: 'font-mono font-medium text-muted-foreground', cell: (part) => part.code, }, { header: '담당자명 / 담당자 이메일 / 연락처', align: 'left', mobileBlock: true, // 여러 줄 블록 → 모바일 카드뷰에서 라벨 아래 풀폭 cell: (part) => (
{part.manager_name}
{part.manager_email} / {part.manager_contact_number ? formatPhoneKR(part.manager_contact_number) : '-'}
), }, { header: '총매출액', align: 'right', cellClassName: 'font-mono text-muted-foreground', cell: (part) => (part.total_revenue != null ? `₩${Number(part.total_revenue).toLocaleString()}` : '-'), }, { header: '채팅 계정', align: 'center', cellClassName: 'font-mono whitespace-nowrap', cell: (part) => part.account_login_id ? ( {part.account_login_id} {part.account_status === 2 && 비활성} ) : ( 미발급 ), }, { header: '작성자', align: 'center', cellClassName: 'text-muted-foreground whitespace-nowrap', cell: (part) => part.creator_name ?? '-', }, ]} /> ); }