import { useState } from 'react'; import type { Pod, PodInput } from '@podman/shared'; import { Avatar } from './Avatar.js'; export function PodCard({ pod, busy, presence, onJoin, onAddAndJoin, onAddMember, onRemoveMember, onUpdate, onDelete, }: { pod: Pod; busy: boolean; presence: string[]; onJoin: (pod: Pod, member: string) => void; onAddAndJoin: (pod: Pod, name: string) => void; onAddMember: (id: string, name: string) => void; onRemoveMember: (id: string, name: string) => void; onUpdate: (id: string, patch: PodInput) => void; onDelete: (id: string) => void; }) { const [newMember, setNewMember] = useState(''); const [editing, setEditing] = useState(false); const [draft, setDraft] = useState({ name: pod.name, repo: pod.repo, description: pod.description ?? '', }); const inRoom = (name: string) => presence.some((p) => p.toLowerCase() === name.toLowerCase()); function saveEdit() { onUpdate(pod.id, { name: draft.name?.trim(), repo: draft.repo?.trim(), description: draft.description?.trim(), }); setEditing(false); } return (
{editing ? (
setDraft({ ...draft, name: e.target.value })} /> setDraft({ ...draft, repo: e.target.value })} /> setDraft({ ...draft, description: e.target.value })} />
) : (

{pod.name}

{presence.length > 0 && ( {presence.length} in room )}

{pod.repo || 'no repo set'}

{pod.description &&

{pod.description}

}
)} {/* Members — click your name to join */}

Click your name to join:

{pod.members.length === 0 && ( No members yet — add your name below. )} {pod.members.map((m) => ( ))}
{/* Add your name (and join) */}
setNewMember(e.target.value)} onKeyDown={(e) => { if (e.key === 'Enter' && newMember.trim()) { onAddAndJoin(pod, newMember.trim()); setNewMember(''); } }} />
); }