diff --git a/negodata/front/src/features/cards/components/CardTable.tsx b/negodata/front/src/features/cards/components/CardTable.tsx index 44772cd..df5bd9f 100644 --- a/negodata/front/src/features/cards/components/CardTable.tsx +++ b/negodata/front/src/features/cards/components/CardTable.tsx @@ -7,11 +7,14 @@ type CardTableProps = { data: NegotiationCard[]; onEdit: (card: NegotiationCard) => void; footer?: ReactNode; + /** 툴바와 한 카드로 붙일 때 테이블 자체 테두리/라운드를 죽이는 용도 */ + className?: string; }; -export function CardTable({ data, onEdit, footer }: CardTableProps) { +export function CardTable({ data, onEdit, footer, className }: CardTableProps) { return ( card.id} onRowClick={onEdit} diff --git a/negodata/front/src/features/products/components/ProductTable.tsx b/negodata/front/src/features/products/components/ProductTable.tsx index d378589..8344971 100644 --- a/negodata/front/src/features/products/components/ProductTable.tsx +++ b/negodata/front/src/features/products/components/ProductTable.tsx @@ -15,6 +15,8 @@ type ProductTableProps = { totalCount: number; pageSize: number; onPageChange: (page: number) => void; + /** 툴바와 한 카드로 붙일 때 테이블 자체 테두리/라운드를 죽이는 용도 */ + className?: string; }; export function ProductTable({ @@ -27,10 +29,12 @@ export function ProductTable({ totalCount, pageSize, onPageChange, + className, }: ProductTableProps) { const label = useLabels(); // 회사 설정 용어(카테고리/상품 단가 등) return ( prod.item_id} onRowClick={onRowClick} @@ -69,7 +73,7 @@ export function ProductTable({ ), }, { - header: '상품코드', + header: label('item.code'), align: 'left', cellClassName: 'font-mono font-medium text-muted-foreground', cell: (prod) => prod.code, diff --git a/negodata/front/src/pages/cards.tsx b/negodata/front/src/pages/cards.tsx index b31cfd2..699a76c 100644 --- a/negodata/front/src/pages/cards.tsx +++ b/negodata/front/src/pages/cards.tsx @@ -7,7 +7,7 @@ import { PageToolbar, SearchInput } from '@/components/layout/PageToolbar'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from '@/components/ui/dropdown-menu'; import { TablePagination } from '@/components/ui/table-pagination'; -import { Typography } from '@/components/ui/typography'; +import { cn } from '@/lib/utils'; import { useServerList } from '@/lib/useServerList'; import { useCards } from '@/features/cards/hooks/useCards'; import { useGetCard } from '@/api/generated/card/card'; @@ -62,8 +62,10 @@ export default function CardsPage() { return ( - {/* 플랫 툴바 — 다른 목록 페이지와 동일 문법(검색 좌측, 주버튼+⋯ 우측) */} + {/* 검색/액션 + 탭 + 테이블을 한 카드로 붙인다(포털형, 상품관리와 동일 문법). */} +
@@ -99,32 +101,30 @@ export default function CardsPage() { onClear={list.clearSearch} placeholder="전체 카드이름, 카드번호, 코드 검색..." /> + - {/* Primary Navigation Tab */} -
+ {/* 구분 탭 — 검색/액션 바 아래, 테이블 바로 위 */} +
{tabs.map((tab) => ( ))}
- {/* 배너에 있던 공용 카드 안내는 캡션 한 줄로 유지 */} - - 우리 회사 카드와 기본 제공(공용) 카드를 함께 조회합니다. 공용 카드는 수정·삭제할 수 없습니다. - - } /> +
{isFormOpen && ( + {/* 검색/액션 바 + 테이블을 한 카드로 붙인다(포털형). 툴바는 카드 상단 헤더, 테이블은 본문. */} +
{isFormOpen && (