import type { PlayerCharacter, PlayerCharacterId, PlayerIcon, } from "@initiative/domain"; import { Pencil, Plus, Trash2, X } from "lucide-react"; import { useEffect } from "react"; import { PLAYER_COLOR_HEX, PLAYER_ICON_MAP } from "./player-icon-map"; import { Button } from "./ui/button"; import { ConfirmButton } from "./ui/confirm-button"; 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, }: PlayerManagementProps) { useEffect(() => { if (!open) return; function handleKeyDown(e: KeyboardEvent) { if (e.key === "Escape") onClose(); } document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); }, [open, onClose]); if (!open) return null; return ( // biome-ignore lint/a11y/noStaticElementInteractions: backdrop click to close
No player characters yet