@untitledui/file-icons
Version:
Official React library for Untitled UI File Icons
2 lines (1 loc) • 1.74 kB
JavaScript
import c,{Suspense as x,useMemo as g}from"react";const r={},T=t=>t.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),h=["json","javascript","x-javascript","typescript","typescriptreact","xml","html","css","yaml","x-yaml","toml","x-toml","markdown","php","x-php","java","python","ruby","x-ruby","swift","go","x-go","c","x-c","cpp","x-cpp","csharp","x-csharp"],v=["pdf","msword","vnd.openxmlformats-officedocument.wordprocessingml.document","vnd.ms-excel","vnd.openxmlformats-officedocument.spreadsheetml.sheet","vnd.ms-powerpoint","vnd.openxmlformats-officedocument.presentationml.presentation"];function S(t){const[e,o]=t.split("/");if(!e||!o)return"unknown";switch(e){case"image":return"image";case"audio":return"audio";case"video":return"video";case"application":case"text":if(h.includes(o))return"code";if(v.includes(o))return"document";break}return"unknown"}const m=["audio","code","document","empty","folder","image","img","spreadsheets","video","video-01","video-02","aep","ai","avi","css","csv","dmg","doc","docx","eps","exe","fig","gif","html","indd","java","jpeg","jpg","js","json","mkv","mp3","mp4","mpeg","pdf","pdf-simple","png","ppt","pptx","psd","rar","rss","sql","svg","tiff","txt","wav","webp","xls","xlsx","xml","zip"],P=({type:t,variant:e="default",theme:o="light",...l})=>{const s=t.includes("/"),a=s?S(t):void 0,d=(s?t.split("/")[1]:void 0)??t,u=m.includes(d),y=s?m.includes(a):!1,p=u?d:y?a:"empty",n=`${e}_${p}`,f=g(()=>(r[n]||(r[n]=c.lazy(()=>import(`./${e==="default"?"":`${e}/`}${p}.mjs`).then(i=>({default:i[T(p)]})).catch(i=>{throw i}))),r[n]),[n]);return c.createElement(x,{fallback:null},c.createElement(f,{...l,theme:o}))};export{P as FileIcon,m as SUPPORTED_FILE_TYPES,S as categorizeMimeType};