File Type

FileTypeIcon 按后缀映射 21 种文件图标,FileCard 封装图标 + 文件名 + 大小 + 状态。

FileTypeIcon

按文件名后缀解析图标。支持 pdf / doc / xls / ppt / 图片 / 视频 / 音频 / 压缩包 / 设计稿 / folder 等 22 种。

Import

import { FileTypeIcon, FileCard } from "@forge-ui/react";

Usage

fileName,组件自己取 ext 查表。未知后缀回落到 txt。

fig
1<FileTypeIcon fileName="design.fig" />

Design & Image

fig.fig
psd.psd
ai.ai
eps.eps
jpg.jpg
png.png
gif.gif
svg.svg

Document

pdf.pdf
doc.doc
txt.txt
xls.xls
ppt.ppt
zip.zip
rar.rar

Media

mp3.mp3
mp4.mp4
wav.wav
mkv.mkv
avi.avi
mov.mov

Folder

folderfolder

Dim

dim 让图标半透明,用于上传中态。

fig
1<FileTypeIcon fileName="design.fig" dim />

API

AttributeTypeDefaultDescription
fileNamestring文件名,取后缀查表映射图标。未知后缀回落到 txt,可传 "folder" 取文件夹图标。
dimbooleanfalse半透明态,用于 uploading 进度过渡。
classNamestring''额外 className。

FileCard

单行文件卡:图标 + 文件名 + 大小 + 状态 action。4 种 state:uploaded / success / uploading / error。

Usage

pdf
brief.pdf
2.4 MB
1<FileCard file={{ id: "1", name: "brief.pdf", size: "2.4 MB", state: "uploaded" }} />

States

uploading 显示进度条,success 绿勾,error 显示重试。

pdf
upload.pdf
1.2 MB-
Uploading
pdf
success.pdf
1.2 MB-
Uploaded
pdf
error.pdf
1.2 MB-
Failed
1<FileCard file={{ id: "1", name: "upload.pdf", size: "1.2 MB", state: "uploading" }} />
2<FileCard file={{ id: "2", name: "success.pdf", size: "1.2 MB", state: "success" }} />
3<FileCard file={{ id: "3", name: "error.pdf", size: "1.2 MB", state: "error" }} onRetry={() => {}} />

API

AttributeTypeDefaultDescription
fileFileItem单个文件对象 { id, name, size, state? }。
file.state'uploaded' | 'success' | 'uploading' | 'error''uploaded'文件当前状态,决定右侧显示的图标或操作。
onRemove(id: string) => void点击关闭按钮时回调。
onRetry(id: string) => voiderror 状态下点击重试回调。
classNamestring''额外 className。