'use client'; import { useRouter } from 'next/navigation'; import { FoxBadge } from '@fox/core/components/fox-badge'; import { FoxButton } from '@fox/core/components/fox-button'; import { FoxStatusIndicator } from '@fox/core/components/fox-status-indicator'; import { FoxTable } from '@fox/core/components/fox-table'; import { FoxTableCell } from '@fox/core/components/fox-table-cell'; import { FoxTableRow } from '@fox/core/components/fox-table-row'; import { EMPTY_FIELD_PLACEHOLDER } from '@/lib/domain/merchant-detail'; import { merchantProductNewPath } from '@/lib/domain/merchant-detail-query'; import { formatProductBadgeLabel, formatProductPrice, formatProductVisibilityLabel, type MerchantProduct, } from '@/lib/domain/merchant-product'; import { MerchantProductRowActions } from './merchant-product-row-actions'; import { MerchantThumbnail } from './merchant-thumbnail'; import styles from './merchant-product-table.module.scss'; interface MerchantProductTableProps { frcsNo: string; products: MerchantProduct[]; /** 상세가 아직 저장되지 않은 가맹점 — 백엔드가 메뉴 등록을 거부하므로 추가를 막는다. */ canAdd: boolean; } /** * 기획 BO-MAL-002 ⑥ — 메뉴는 목록으로만 보이고 등록·수정은 별도 화면에서 한다. * 목록 화면 뼈대(FoxListContainer)는 머리말·검색까지 딸려 와 카드 안에는 표 조각만 놓는다. */ export function MerchantProductTable({ frcsNo, products, canAdd }: MerchantProductTableProps) { const router = useRouter(); return (
등록 메뉴 {products.length}건
{!canAdd && (

아래 [등록]으로 상세를 먼저 저장하면 이 화면에서 바로 메뉴를 추가할 수 있습니다.

)}
순서 이미지 메뉴명 설명 가격 배지 노출 관리 {products.length === 0 ? ( 등록된 메뉴가 없습니다. ) : ( products.map((product, index) => ( {product.sortOrder ?? index + 1} {product.name} {product.description ?? EMPTY_FIELD_PLACEHOLDER} {formatProductPrice(product.price)} {product.badges.length === 0 ? ( EMPTY_FIELD_PLACEHOLDER ) : ( {product.badges.map((badge) => ( {formatProductBadgeLabel(badge)} ))} )} )) )}
); }