| import { Spinner, FileIcon } from '@librechat/client'; | |
| import type { TFile } from 'librechat-data-provider'; | |
| import type { ExtendedFile } from '~/common'; | |
| import SourceIcon from './SourceIcon'; | |
| import { cn } from '~/utils'; | |
| const FilePreview = ({ | |
| file, | |
| fileType, | |
| className = '', | |
| }: { | |
| file?: Partial<ExtendedFile | TFile>; | |
| fileType: { | |
| paths: React.FC; | |
| fill: string; | |
| title: string; | |
| }; | |
| className?: string; | |
| }) => { | |
| return ( | |
| <div className={cn('relative size-10 shrink-0 overflow-hidden rounded-xl', className)}> | |
| <FileIcon file={file} fileType={fileType} /> | |
| <SourceIcon source={file?.source} isCodeFile={!!file?.['metadata']?.fileIdentifier} /> | |
| {typeof file?.['progress'] === 'number' && file?.['progress'] < 1 && ( | |
| <Spinner | |
| bgOpacity={0.2} | |
| color="white" | |
| className="absolute inset-0 m-2.5 flex items-center justify-center" | |
| /> | |
| )} | |
| </div> | |
| ); | |
| }; | |
| export default FilePreview; | |