import type { Boss } from "@elysium/types"; import { useGame } from "../../context/GameContext.js"; interface BossCardProps { boss: Boss; prestigeCount: number; } const BossCard = ({ boss, prestigeCount }: BossCardProps): React.JSX.Element => { const { attackBoss } = useGame(); const hpPercent = (boss.currentHp / boss.maxHp) * 100; const isLocked = boss.prestigeRequirement > prestigeCount; return (

{boss.name}

{boss.description}

{isLocked && boss.status === "locked" && (

🔒 Requires Prestige {boss.prestigeRequirement}

)}
{boss.status !== "locked" && boss.status !== "defeated" && (
{boss.currentHp.toLocaleString()} / {boss.maxHp.toLocaleString()} HP
)}
🪙 {boss.goldReward.toLocaleString()} {boss.essenceReward > 0 && ✨ {boss.essenceReward.toLocaleString()}} {boss.crystalReward > 0 && 💎 {boss.crystalReward.toLocaleString()}}
{boss.status === "available" || boss.status === "in_progress" ? ( ) : null} {boss.status === "defeated" && ( ☠️ Defeated )}
); }; export const BossPanel = (): React.JSX.Element => { const { state } = useGame(); if (!state) return

Loading...

; return (

Boss Encounters

{state.bosses.map((boss) => ( ))}
); };