chatbot-template/components/custom/preview-attachment.tsx

44 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-10-11 18:00:22 +05:30
import { Attachment } from "ai";
import { LoaderIcon } from "./icons";
export const PreviewAttachment = ({
attachment,
isUploading = false,
}: {
attachment: Attachment;
isUploading?: boolean;
}) => {
const { name, url, contentType } = attachment;
return (
2024-10-23 12:21:30 -04:00
(<div className="flex flex-col gap-2 max-w-16">
2024-10-11 18:00:22 +05:30
<div className="h-20 w-16 bg-muted rounded-md relative flex flex-col items-center justify-center">
{contentType ? (
contentType.startsWith("image") ? (
// NOTE: it is recommended to use next/image for images
// eslint-disable-next-line @next/next/no-img-element
2024-10-23 12:21:30 -04:00
(<img
2024-10-11 18:00:22 +05:30
key={url}
src={url}
alt={name ?? "An image attachment"}
className="rounded-md size-full object-cover"
2024-10-23 12:21:30 -04:00
/>)
2024-10-11 18:00:22 +05:30
) : (
<div className=""></div>
)
) : (
<div className=""></div>
)}
{isUploading && (
<div className="animate-spin absolute text-zinc-500">
<LoaderIcon />
</div>
)}
</div>
<div className="text-xs text-zinc-500 max-w-16 truncate">{name}</div>
2024-10-23 12:21:30 -04:00
</div>)
2024-10-11 18:00:22 +05:30
);
};