'use client'; import { useMemo } from 'react'; import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, Cell } from 'recharts'; import { getCategoryColor } from '@/lib/category-colors'; import type { MemoryStats, MemoryCategory } from '@/types/memory'; interface KnowledgeMapPanelProps { stats: MemoryStats; onNavigate: (filter: { category?: string }) => void; } export function KnowledgeMapPanel({ stats, onNavigate }: KnowledgeMapPanelProps) { const data = useMemo(() => { return Object.entries(stats.byCategory) .map(([category, count]) => ({ category, count, color: getCategoryColor(category as MemoryCategory), thin: count < 3, })) .sort((a, b) => b.count - a.count); }, [stats.byCategory]); if (data.length === 0) { return (
No category data available.
); } return (
{ if (index !== undefined && data[index]) { onNavigate({ category: data[index].category }); } }} > {data.map((entry, index) => ( ))} {/* Thin coverage warnings */} {data.some(d => d.thin) && (
{data.filter(d => d.thin).map(d => ( ⚠ {d.category} ({d.count}) ))}
)}
); }