customer-support-agent/components/FullSourceModal.tsx (45 lines of code) (raw):
import React from "react";
import ReactMarkdown from "react-markdown";
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
import { Button } from "@/components/ui/button";
import { RAGSource } from "@/app/lib/utils";
interface FullSourceModalProps {
isOpen: boolean;
onClose: () => void;
source: RAGSource | null;
}
const FullSourceModal: React.FC<FullSourceModalProps> = ({
isOpen,
onClose,
source,
}) => {
return (
<Dialog open={isOpen} onOpenChange={onClose}>
<DialogContent className="max-w-[600px] max-h-[80vh] overflow-y-auto">
<DialogHeader>
<DialogTitle>{source?.fileName || "Full Source"}</DialogTitle>
</DialogHeader>
{source ? (
<>
<div className="mb-4">
<span className="font-bold">Score: </span>
{(source.score * 100).toFixed(2)}%
</div>
<ReactMarkdown className="max-h-[60vh] overflow-y-auto mb-4">
{source.snippet}
</ReactMarkdown>
</>
) : (
<p>No source selected</p>
)}
<Button onClick={onClose}>Close</Button>
</DialogContent>
</Dialog>
);
};
export default FullSourceModal;