--- title: 'API Reference' description: 'Complete reference for Memory Graph props and types' --- ## Component Props ### MemoryGraph The main graph component. #### Core Props Array of documents to display in the graph. Each document must include its memory entries. Shows a loading indicator when true. Error object to display. Shows an error message overlay when set. Visual variant: - `console`: Full-featured dashboard view (0.8x zoom, space selector visible) - `consumer`: Embedded widget view (0.5x zoom, space selector hidden) Content to render when no documents exist. Useful for empty states. #### Pagination Props Shows a subtle indicator when loading additional documents. Whether more documents are available to load. Total number of documents currently loaded. Shown in loading indicator. Callback to load more documents. Called automatically when viewport shows most documents. Automatically load more documents when 80% are visible in viewport. #### Display Props Show or hide the space filter dropdown. Defaults to `true` for console variant, `false` for consumer. Array of document IDs to highlight with a pulsing outline. Accepts both `customId` and internal `id`. Controls whether highlights are shown. Useful for toggling highlights without changing the array. Pixels occluded on the right side (e.g., by a sidebar). Graph auto-fits accounting for this space. Custom ID for the legend component. Useful for testing or styling. #### Controlled State Props Currently selected space. When provided, makes space selection controlled. Use `"all"` for all spaces. Callback when space selection changes. Required when using `selectedSpace`. Maximum memories to show per document when a specific space is selected. Only applies when `selectedSpace !== "all"`. Enable experimental features. Currently unused but reserved for future features. ## Data Types ### DocumentWithMemories ```typescript interface DocumentWithMemories { id: string; customId?: string | null; contentHash: string | null; orgId: string; userId: string; connectionId?: string | null; title?: string | null; content?: string | null; summary?: string | null; url?: string | null; source?: string | null; type?: string | null; status: 'pending' | 'processing' | 'done' | 'failed'; metadata?: Record | null; processingMetadata?: Record | null; raw?: string | null; tokenCount?: number | null; wordCount?: number | null; chunkCount?: number | null; averageChunkSize?: number | null; summaryEmbedding?: number[] | null; summaryEmbeddingModel?: string | null; createdAt: string | Date; updatedAt: string | Date; memoryEntries: MemoryEntry[]; } ``` ### MemoryEntry ```typescript interface MemoryEntry { id: string; customId?: string | null; documentId: string; content: string | null; summary?: string | null; title?: string | null; url?: string | null; type?: string | null; metadata?: Record | null; embedding?: number[] | null; embeddingModel?: string | null; tokenCount?: number | null; createdAt: string | Date; updatedAt: string | Date; // Fields from join relationship sourceAddedAt?: Date | null; sourceRelevanceScore?: number | null; sourceMetadata?: Record | null; spaceContainerTag?: string | null; // Version chain fields updatesMemoryId?: string | null; nextVersionId?: string | null; relation?: 'updates' | 'extends' | 'derives' | null; // Memory status fields isForgotten?: boolean; forgetAfter?: Date | string | null; isLatest?: boolean; // Space/container fields spaceId?: string | null; // Legacy fields (for backwards compatibility) memory?: string | null; memoryRelations?: Array<{ relationType: 'updates' | 'extends' | 'derives'; targetMemoryId: string; }> | null; parentMemoryId?: string | null; } ``` ### GraphNode Internal type for rendered nodes: ```typescript interface GraphNode { id: string; type: 'document' | 'memory'; x: number; y: number; data: DocumentWithMemories | MemoryEntry; size: number; color: string; isHovered: boolean; isDragging: boolean; } ``` ### GraphEdge Internal type for connections: ```typescript interface GraphEdge { id: string; source: string; target: string; similarity: number; edgeType: 'doc-memory' | 'doc-doc' | 'version'; relationType?: 'updates' | 'extends' | 'derives'; color: string; visualProps: { opacity: number; thickness: number; glow: number; pulseDuration: number; }; } ``` ## Exported Components Besides `MemoryGraph`, the package exports individual components for advanced use cases: ### GraphCanvas Low-level canvas renderer. Not recommended for direct use. ```typescript import { GraphCanvas } from '@supermemory/memory-graph'; ``` ### Legend Graph legend showing node types and counts. ```typescript import { Legend } from '@supermemory/memory-graph'; ``` ### LoadingIndicator Loading state indicator with progress counter. ```typescript import { LoadingIndicator } from '@supermemory/memory-graph'; ``` ### NodeDetailPanel Side panel showing node details when clicked. ```typescript import { NodeDetailPanel } from '@supermemory/memory-graph'; ``` ### SpacesDropdown Space filter dropdown. ```typescript import { SpacesDropdown } from '@supermemory/memory-graph'; ``` ## Exported Hooks ### useGraphData Processes documents into graph nodes and edges. ```typescript import { useGraphData } from '@supermemory/memory-graph'; const { nodes, edges } = useGraphData( data, selectedSpace, nodePositions, draggingNodeId, memoryLimit ); ``` ### useGraphInteractions Handles pan, zoom, and node interactions. ```typescript import { useGraphInteractions } from '@supermemory/memory-graph'; const { panX, panY, zoom, selectedNode, handlePanStart, handleWheel, // ... more interaction handlers } = useGraphInteractions('console'); ``` ## Constants ### colors Color palette used throughout the graph: ```typescript import { colors } from '@supermemory/memory-graph'; colors.document.primary; // Document fill color colors.memory.primary; // Memory fill color colors.connection.strong; // Strong edge color ``` ### GRAPH_SETTINGS Initial zoom and pan settings for variants: ```typescript import { GRAPH_SETTINGS } from '@supermemory/memory-graph'; GRAPH_SETTINGS.console.initialZoom; // 0.8 GRAPH_SETTINGS.consumer.initialZoom; // 0.5 ``` ### LAYOUT_CONSTANTS Spatial layout configuration: ```typescript import { LAYOUT_CONSTANTS } from '@supermemory/memory-graph'; LAYOUT_CONSTANTS.clusterRadius; // Memory orbit radius LAYOUT_CONSTANTS.documentSpacing; // Distance between documents ```