/** * IdentityLibrary — Left-panel section showing character identities for the * current wizard session. * * Only shows identities that were: * 1. Created during this wizard session (sessionIds) * 2. Imported from the full library (importedIds) * * An "Import from Library" picker lets users bring in pre-existing identities * without cluttering the view with every identity ever created. */ import React, { useState } from 'react'; import { Plus, Download, X, Sparkles } from 'lucide-react'; // --------------------------------------------------------------------------- // Component // --------------------------------------------------------------------------- export function IdentityLibrary({ items, sessionIds, importedIds, activeIdentityId, onSelectIdentity, onNewIdentity, onImportIdentity, resolveUrl, }) { const [showPicker, setShowPicker] = useState(false); // All root identities from the full gallery const allIdentities = items.filter((i) => i.role === 'anchor' && !i.parentId); // Session-scoped: created here + imported const visibleIds = new Set([...sessionIds, ...importedIds]); const sessionIdentities = allIdentities.filter((i) => visibleIds.has(i.id)); // Library identities available for import (not already visible) const libraryIdentities = allIdentities.filter((i) => !visibleIds.has(i.id)); return (
My Identities
{sessionIdentities.length}
{sessionIdentities.slice(0, 9).map((identity) => { const active = activeIdentityId === identity.id; const isImported = importedIds.has(identity.id); return (); })} {/* New identity slot */}
{sessionIdentities.length === 0 && (

No identities yet

)} {/* Import from Library button */} {libraryIdentities.length > 0 && ()} {/* Library Picker Overlay */} {showPicker && (
Library
{libraryIdentities.map((identity) => ())}
)}
); }