/** * 사진/티저 그리드 컴포넌트 */ import { memo } from 'react'; import { motion } from 'framer-motion'; import { Image, Check } from 'lucide-react'; /** * @param {Object} props * @param {Array} props.items - 사진/티저 목록 * @param {Array} props.selectedItems - 선택된 아이템 ID 목록 * @param {Function} props.onToggleSelect - 선택 토글 핸들러 * @param {'concept'|'teaser'} props.type - 그리드 타입 */ const PhotoGrid = memo(function PhotoGrid({ items, selectedItems, onToggleSelect, type }) { if (items.length === 0) { return (

등록된 {type === 'concept' ? '컨셉 포토' : '티저 이미지'}가 없습니다

업로드 탭에서 {type === 'concept' ? '사진' : '티저'}을 추가하세요

); } if (type === 'concept') { return (
{items.map((photo, index) => ( onToggleSelect(photo.id)} > {`사진
{selectedItems.includes(photo.id) && }
{String(photo.sort_order).padStart(2, '0')}
{photo.concept_name && ( {photo.concept_name} )}
))}
); } // Teaser grid return (
{items.map((teaser, index) => { const teaserId = `teaser-${teaser.id}`; return ( onToggleSelect(teaserId)} > {teaser.media_type === 'video' ? (