ragflow/web/src/components/icon-font.tsx

30 lines
692 B
TypeScript
Raw Normal View History

import { FileIconMap } from '@/constants/file';
import { cn } from '@/lib/utils';
import { getExtension } from '@/utils/document-util';
type IconFontType = {
name: string;
className?: string;
};
export const IconFont = ({ name, className }: IconFontType) => (
<svg className={cn('fill-current size-4', className)}>
<use xlinkHref={`#icon-${name}`} />
</svg>
);
export function FileIcon({
name,
className,
type,
}: IconFontType & { type?: string }) {
const isFolder = type === 'folder';
return (
<span className={cn('size-4', className)}>
<IconFont
name={isFolder ? 'file-sub' : FileIconMap[getExtension(name)]}
></IconFont>
</span>
);
}