import type { VariantProps } from 'class-variance-authority' import { cva } from 'class-variance-authority' import * as React from 'react' import { useCallback } from 'react' import { cn } from '@/utils/classnames' import { FileTypeIcon } from '../file-uploader' import { getFileAppearanceType } from '../file-uploader/utils' import Tooltip from '../tooltip' import ImageRender from './image-render' const FileThumbVariants = cva( 'flex items-center justify-center cursor-pointer', { variants: { size: { sm: 'size-6', md: 'size-8', }, }, defaultVariants: { size: 'sm', }, }, ) export type FileEntity = { name: string size: number extension: string mimeType: string sourceUrl: string } type FileThumbProps = { file: FileEntity className?: string onClick?: (file: FileEntity) => void } & VariantProps const FileThumb = ({ file, size, className, onClick, }: FileThumbProps) => { const { name, mimeType, sourceUrl } = file const isImage = mimeType.startsWith('image/') const handleClick = useCallback((e: React.MouseEvent) => { e.stopPropagation() e.preventDefault() onClick?.(file) }, [onClick, file]) return (
{ isImage ? ( ) : ( ) }
) } export default React.memo(FileThumb)