"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}
))}
)}
);
}