import { FiArrowDown, FiArrowUp, FiPlus, FiTrash2 } from 'react-icons/fi'; // 어드민 폼의 N 행 컨트롤. 값 추가/삭제/상/하 이동을 공용화한다. // props: // items: 배열 // onChange: (nextItems) => void // renderItem: (item, index, onItemChange) => node — onItemChange(partial) // emptyItem: () => newItem (추가 버튼 눌렀을 때 생성) // addLabel: 버튼 라벨 (기본 '추가') // minLength: 최소 개수 (기본 0) function DynamicList({ items, onChange, renderItem, emptyItem, addLabel = '추가', minLength = 0, }) { function update(index, partial) { const next = items.map((it, i) => i === index ? { ...it, ...partial } : it, ); onChange(next); } function add() { onChange([...items, emptyItem()]); } function remove(index) { if (items.length <= minLength) return; onChange(items.filter((_, i) => i !== index)); } function move(index, delta) { const target = index + delta; if (target < 0 || target >= items.length) return; const next = [...items]; [next[index], next[target]] = [next[target], next[index]]; onChange(next); } return (