일괄 편집
{/* 번호 범위 */}
{/* 타입 선택 */}
타입
{[
{ value: 'group', icon: Users, label: '단체' },
{ value: 'solo', icon: User, label: '개인' },
{ value: 'unit', icon: Users2, label: '유닛' },
].map(({ value, icon: Icon, label }) => (
setBulkEdit((prev) => ({
...prev,
groupType: prev.groupType === value ? '' : value,
members: value === 'group' ? [] : prev.members,
}))
}
className={`flex-1 py-1.5 px-2 rounded-lg text-xs font-medium transition-colors flex items-center justify-center gap-1 ${
bulkEdit.groupType === value
? 'bg-primary text-white'
: 'bg-gray-100 text-gray-600 hover:bg-gray-200'
}`}
>
{label}
))}
{/* 멤버 선택 */}
{bulkEdit.groupType !== 'group' && (
멤버 {bulkEdit.groupType === 'solo' ? '(1명)' : '(다중 선택)'}
{members
.filter((m) => !m.is_former)
.map((member) => (
{
if (bulkEdit.groupType === 'solo') {
setBulkEdit((prev) => ({
...prev,
members: prev.members.includes(member.id) ? [] : [member.id],
}));
} else {
toggleBulkMember(member.id);
}
}}
className={`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${
bulkEdit.members.includes(member.id)
? 'bg-primary text-white border border-primary'
: 'bg-gray-100 text-gray-600 hover:bg-gray-200 border border-gray-100'
}`}
>
{member.name}
))}
{members.filter((m) => m.is_former).length > 0 && (
|
)}
{members
.filter((m) => m.is_former)
.map((member) => (
{
if (bulkEdit.groupType === 'solo') {
setBulkEdit((prev) => ({
...prev,
members: prev.members.includes(member.id) ? [] : [member.id],
}));
} else {
toggleBulkMember(member.id);
}
}}
className={`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${
bulkEdit.members.includes(member.id)
? 'bg-gray-500 text-white border border-gray-500'
: 'bg-gray-100 text-gray-400 hover:bg-gray-200 border border-gray-100'
}`}
>
{member.name}
))}
)}
{/* 컨셉명 */}
컨셉명
setBulkEdit((prev) => ({ ...prev, conceptName: e.target.value }))
}
placeholder="컨셉명 입력"
className="w-full px-3 py-2 text-sm border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary"
/>
{/* 적용 버튼 */}
일괄 적용