import type { PlayerCharacter, PlayerCharacterId } from "@initiative/domain"; import { Pencil, Plus, Trash2 } from "lucide-react"; import { PLAYER_COLOR_HEX, PLAYER_ICON_MAP } from "./player-icon-map"; import { Button } from "./ui/button"; import { ConfirmButton } from "./ui/confirm-button"; import { Dialog, DialogHeader } from "./ui/dialog"; interface PlayerManagementProps { open: boolean; onClose: () => void; characters: readonly PlayerCharacter[]; onEdit: (pc: PlayerCharacter) => void; onDelete: (id: PlayerCharacterId) => void; onCreate: () => void; } export function PlayerManagement({ open, onClose, characters, onEdit, onDelete, onCreate, }: Readonly) { return ( {characters.length === 0 ? (

No player characters yet

) : (
{characters.map((pc) => { const Icon = pc.icon ? PLAYER_ICON_MAP[pc.icon] : undefined; const color = pc.color ? PLAYER_COLOR_HEX[pc.color] : undefined; return (
{!!Icon && ( )} {pc.name} AC {pc.ac} HP {pc.maxHp} {pc.level !== undefined && ( Lv {pc.level} )} } label="Delete player character" onConfirm={() => onDelete(pc.id)} size="icon-sm" className="text-muted-foreground" />
); })}
)}
); }