'use client' import type { FC } from 'react' import type { FileAppearanceType } from '@/app/components/base/file-uploader/types' import { RiCloseLine } from '@remixicon/react' import * as React from 'react' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import FileTypeIcon from '@/app/components/base/file-uploader/file-type-icon' import { cn } from '@/utils/classnames' import { getFileIconType } from './utils/file-utils' type FileTabItemProps = { fileId: string name: string isActive: boolean isDirty: boolean isPreview: boolean onClick: (fileId: string) => void onClose: (fileId: string) => void onDoubleClick: (fileId: string) => void } const FileTabItem: FC = ({ fileId, name, isActive, isDirty, isPreview, onClick, onClose, onDoubleClick, }) => { const { t } = useTranslation() const iconType = getFileIconType(name) const handleClick = useCallback(() => { onClick(fileId) }, [onClick, fileId]) const handleDoubleClick = useCallback(() => { if (isPreview) onDoubleClick(fileId) }, [onDoubleClick, fileId, isPreview]) const handleClose = useCallback((e: React.MouseEvent) => { e.stopPropagation() onClose(fileId) }, [onClose, fileId]) return (
) } export default React.memo(FileTabItem)