sheer / src /pages /chat /components /DocumentBadge.tsx
barreloflube's picture
refactor: improve chat page and manager with new features and optimizations
12621bc
import React from "react";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { X } from "lucide-react";
import { IDocument } from "@/lib/document/types";
interface DocumentBadgeProps {
document: IDocument;
onPreview: () => void;
onRemove: () => void;
removeable?: boolean;
}
export const DocumentBadge = React.memo(({
document,
onPreview,
onRemove,
removeable = true
}: DocumentBadgeProps) => (
<Badge
key={document.id}
className="gap-1 cursor-pointer justify-between max-w-[200px] w-fit truncate bg-muted-foreground/20 hover:bg-primary/5"
onClick={onPreview}
>
<span className="truncate">{document.name}</span>
{removeable && (
<Button
variant="ghost"
size="icon"
className="h-4 w-4"
onClick={(e) => {
e.stopPropagation();
onRemove();
}}
>
<X className="h-3 w-3" />
</Button>
)}
</Badge>
));
DocumentBadge.displayName = "DocumentBadge";