import type { CustomWorldDraftCardSummary } from '../../../packages/shared/src/contracts/customWorldAgent'; type CustomWorldAgentDraftDrawerProps = { draftCards: CustomWorldDraftCardSummary[]; activeCardId?: string | null; onSelectCard: (cardId: string) => void; }; const DRAWER_KIND_ORDER: CustomWorldDraftCardSummary['kind'][] = [ 'world', 'chapter', 'thread', 'faction', 'character', 'landmark', 'camp', ]; function resolveGroupLabel(kind: CustomWorldDraftCardSummary['kind']) { if (kind === 'world') return '世界总卡'; if (kind === 'chapter') return '第一幕'; if (kind === 'thread') return '世界线程'; if (kind === 'faction') return '势力'; if (kind === 'character') return '关键角色'; if (kind === 'landmark') return '关键地点'; if (kind === 'camp') return '营地'; return '草稿卡'; } export function CustomWorldAgentDraftDrawer({ draftCards, activeCardId, onSelectCard, }: CustomWorldAgentDraftDrawerProps) { const groupedCards = DRAWER_KIND_ORDER.map((kind) => ({ kind, items: draftCards.filter((card) => card.kind === kind), })).filter((group) => group.items.length > 0); return (
草稿抽屉
{groupedCards.length > 0 ? (
{groupedCards.map((group) => (
{resolveGroupLabel(group.kind)}
{group.items.length}
{group.items.map((card, index) => { const isActive = activeCardId === card.id; return ( ); })}
))}
) : (
最小锚点齐备后,世界底稿会先从这里长出来。
)}
); }