"use client"; import { useState } from "react"; import type { SourceChunk } from "./ChatPanel"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { ChevronDown, ChevronUp, FileText, Eye } from "lucide-react"; interface Props { sources: SourceChunk[]; onPageClick: (page: number) => void; } export default function SourceCard({ sources, onPageClick }: Props) { const [expanded, setExpanded] = useState(false); if (sources.length === 0) return null; return (
{/* ── Header ──────────────────────────────────── */} {/* ── Collapsed: Mini badges ──────────────────── */} {!expanded && (
{sources.map((src, i) => ( onPageClick(src.page)} > p.{src.page} • {src.confidence}% ))}
)} {/* ── Expanded: Full source cards ─────────────── */} {expanded && (
{sources.map((src, i) => (
{src.filename} Page {src.page} = 80 ? "text-emerald-400 bg-emerald-400/10" : src.confidence >= 50 ? "text-yellow-400 bg-yellow-400/10" : "text-muted-foreground" }`} > {src.confidence}% match

{src.text}

))}
)}
); }