import { type FormEvent, useState } from 'react' import { PokemonSelector } from './PokemonSelector' import type { BossBattle } from '../../types/game' import type { BossPokemonInput } from '../../types/admin' interface BossTeamEditorProps { boss: BossBattle onSave: (team: BossPokemonInput[]) => void onClose: () => void isSaving?: boolean } export function BossTeamEditor({ boss, onSave, onClose, isSaving }: BossTeamEditorProps) { const [team, setTeam] = useState>( boss.pokemon.length > 0 ? boss.pokemon .sort((a, b) => a.order - b.order) .map((bp) => ({ pokemonId: bp.pokemonId, pokemonName: bp.pokemon.name, level: String(bp.level), order: bp.order, })) : [{ pokemonId: null, pokemonName: '', level: '', order: 1 }], ) const addSlot = () => { setTeam((prev) => [ ...prev, { pokemonId: null, pokemonName: '', level: '', order: prev.length + 1 }, ]) } const removeSlot = (index: number) => { setTeam((prev) => prev.filter((_, i) => i !== index).map((item, i) => ({ ...item, order: i + 1 }))) } const updateSlot = (index: number, field: string, value: number | string | null) => { setTeam((prev) => prev.map((item, i) => (i === index ? { ...item, [field]: value } : item)), ) } const handleSubmit = (e: FormEvent) => { e.preventDefault() const validTeam: BossPokemonInput[] = team .filter((t) => t.pokemonId != null && t.level) .map((t, i) => ({ pokemonId: t.pokemonId!, level: Number(t.level), order: i + 1, })) onSave(validTeam) } return (

{boss.name}'s Team

{team.map((slot, index) => (
updateSlot(index, 'pokemonId', id)} />
updateSlot(index, 'level', e.target.value)} className="w-full px-3 py-2 border rounded-md dark:bg-gray-700 dark:border-gray-600" />
))} {team.length < 6 && ( )}
) }