/**
* 사진/티저 그리드 컴포넌트
*/
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' ? (
);
})}
);
});
export default PhotoGrid;