'use client';
import { useState } from 'react';
import { Eye, Clock, Copy, AlertTriangle, ChevronDown, ChevronRight } from 'lucide-react';
import { useQuality, useContradictions } from '@/hooks/useMemories';
interface QualityPanelProps {
project?: string;
}
function Section({
icon: Icon,
title,
count,
children,
}: {
icon: React.ComponentType<{ className?: string; size?: number }>;
title: string;
count: number;
children: React.ReactNode;
}) {
const [expanded, setExpanded] = useState(false);
return (
{expanded &&
{children}
}
);
}
export function QualityPanel({ project }: QualityPanelProps) {
const { data: quality } = useQuality(project);
const { data: contradictionsData } = useContradictions(project);
const neverAccessed = quality?.neverAccessed;
const stale = quality?.stale;
const duplicates = quality?.duplicates;
const contradictions = contradictionsData?.contradictions ?? [];
return (
{neverAccessed?.items?.length ? (
neverAccessed.items.map((item, i) => (
{String(item.title || 'Untitled')}
{item.created_at ? (
{String(item.created_at).slice(0, 10)}
) : null}
))
) : (
None found
)}
{stale?.items?.length ? (
stale.items.map((item, i) => {
const score = Number(item.decayed_score ?? 0);
const color = score < 0.3 ? 'text-red-400' : score < 0.5 ? 'text-amber-400' : 'text-slate-400';
return (
{score.toFixed(2)}
{String(item.title || 'Untitled')}
);
})
) : (
None found
)}
{duplicates?.items?.length ? (
duplicates.items.map((item, i) => (
{String(item.title_a || 'Untitled')}
↔
{String(item.title_b || 'Untitled')}
))
) : (
None found
)}
{contradictions.length ? (
contradictions.map((c, i) => (
{c.score.toFixed(2)}
{c.memoryATitle}
↔
{c.memoryBTitle}
{c.reason &&
{c.reason}
}
))
) : (
None found
)}
);
}