import type { EncounterDetail } from '../types' interface PokemonCardProps { encounter: EncounterDetail showFaintLevel?: boolean onClick?: () => void } const typeColors: Record = { normal: 'bg-gray-400', fire: 'bg-red-500', water: 'bg-blue-500', electric: 'bg-yellow-400', grass: 'bg-green-500', ice: 'bg-cyan-300', fighting: 'bg-red-700', poison: 'bg-purple-500', ground: 'bg-amber-600', flying: 'bg-indigo-300', psychic: 'bg-pink-500', bug: 'bg-lime-500', rock: 'bg-amber-700', ghost: 'bg-purple-700', dragon: 'bg-indigo-600', dark: 'bg-gray-700', steel: 'bg-gray-400', fairy: 'bg-pink-300', } export function PokemonCard({ encounter, showFaintLevel, onClick }: PokemonCardProps) { const { pokemon, currentPokemon, route, nickname, catchLevel, faintLevel, deathCause } = encounter const isDead = faintLevel !== null const displayPokemon = currentPokemon ?? pokemon const isEvolved = currentPokemon !== null return (
{displayPokemon.spriteUrl ? ( {displayPokemon.name} ) : (
{displayPokemon.name[0].toUpperCase()}
)}
{nickname || displayPokemon.name}
{nickname && (
{displayPokemon.name}
)}
{displayPokemon.types.map((type) => ( {type} ))}
{showFaintLevel && isDead ? `Lv. ${catchLevel} → ${faintLevel}` : `Lv. ${catchLevel ?? '?'}`}
{route.name}
{isEvolved && (
Originally: {pokemon.name}
)} {isDead && deathCause && (
{deathCause}
)}
) }