@szum-tech/design-system
Version:
Szum-Tech design system with tailwindcss support
1 lines • 17.6 kB
JavaScript
'use strict';var chunkERFTRXVE_cjs=require('./chunk-ERFTRXVE.cjs'),chunkD5PAWOAZ_cjs=require('./chunk-D5PAWOAZ.cjs'),v=require('react'),radixUi=require('radix-ui'),jsxRuntime=require('react/jsx-runtime'),classVarianceAuthority=require('class-variance-authority'),lucideReact=require('lucide-react');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var v__namespace=/*#__PURE__*/_interopNamespace(v);var Y="FileUpload",pe="FileUploadDropzone",be="FileUploadTrigger",Ie="FileUploadList",ee="FileUploadItem",ue="FileUploadItemPreview",fe="FileUploadItemMetadata",Pe="FileUploadItemProgress",me="FileUploadItemDelete",ge="FileUploadClear";var Fe=v__namespace.createContext(null);function C(s){let e=v__namespace.useContext(Fe);if(!e)throw new Error(`\`${s}\` must be used within \`${Y}\``);return e}var ve=v__namespace.createContext(null);function H(s){let e=v__namespace.useContext(ve);if(!e)throw new Error(`\`${s}\` must be used within \`${Y}\``);return e}function P(s){let e=H("useFileUploadStore"),o=chunkERFTRXVE_cjs.a(()=>null),u=v__namespace.useCallback(()=>{let p=e.getState(),l=o.current;if(l&&l.state===p)return l.value;let d=s(p);return o.current={value:d,state:p},d},[e,s,o]);return v__namespace.useSyncExternalStore(e.subscribe,u,u)}function Ue(s,e,o,u,p){let l={files:e,dragOver:false,invalid:p};function d(t,i){switch(i.type){case "ADD_FILES":{for(let a of i.files)e.set(a,{file:a,progress:0,status:"idle"});if(u.current.onValueChange){let a=Array.from(e.values()).map(c=>c.file);u.current.onValueChange(a);}return {...t,files:e}}case "SET_FILES":{let a=new Set(i.files);for(let c of e.keys())a.has(c)||e.delete(c);for(let c of i.files)e.get(c)||e.set(c,{file:c,progress:0,status:"idle"});return {...t,files:e}}case "SET_PROGRESS":{let a=e.get(i.file);return a&&e.set(i.file,{...a,progress:i.progress,status:"uploading"}),{...t,files:e}}case "SET_SUCCESS":{let a=e.get(i.file);return a&&e.set(i.file,{...a,progress:100,status:"success"}),{...t,files:e}}case "SET_ERROR":{let a=e.get(i.file);return a&&e.set(i.file,{...a,error:i.error,status:"error"}),{...t,files:e}}case "REMOVE_FILE":{let a=o.get(i.file);if(a&&(URL.revokeObjectURL(a),o.delete(i.file)),e.delete(i.file),u.current.onValueChange){let c=Array.from(e.values()).map(r=>r.file);u.current.onValueChange(c);}return {...t,files:e}}case "SET_DRAG_OVER":return {...t,dragOver:i.dragOver};case "SET_INVALID":return {...t,invalid:i.invalid};case "CLEAR":{for(let a of e.keys()){let c=o.get(a);c&&(URL.revokeObjectURL(c),o.delete(a));}return e.clear(),u.current.onValueChange&&u.current.onValueChange([]),{...t,files:e,invalid:false}}default:return t}}return {getState:()=>l,dispatch:t=>{l=d(l,t);for(let i of s)i();},subscribe:t=>(s.add(t),()=>s.delete(t))}}function Ut(s){let{value:e,defaultValue:o,onValueChange:u,onAccept:p,onFileAccept:l,onFileReject:d,onFileValidate:t,onUpload:i,accept:a,maxFiles:c,maxSize:r,dir:m,label:y,name:W,asChild:S,disabled:D=false,invalid:U=false,multiple:X=false,required:le=false,children:ne,className:se,...ce}=s,q=v__namespace.useId(),n=v__namespace.useId(),E=v__namespace.useId(),I=v__namespace.useId(),M=radixUi.Direction.useDirection(m),z=chunkERFTRXVE_cjs.a(()=>new Set).current,T=chunkERFTRXVE_cjs.a(()=>new Map).current,_=chunkERFTRXVE_cjs.a(()=>new WeakMap).current,Z=v__namespace.useRef(null),J=e!==void 0,g=chunkERFTRXVE_cjs.c({onValueChange:u,onAccept:p,onFileAccept:l,onFileReject:d,onFileValidate:t,onUpload:i}),F=v__namespace.useMemo(()=>Ue(z,T,_,g,U),[z,T,_,g]);v__namespace.useEffect(()=>{F.dispatch({type:"SET_INVALID",invalid:U});},[F,U]);let de=v__namespace.useMemo(()=>a?.split(",").map(x=>x.trim())??null,[a]),xe=chunkERFTRXVE_cjs.a(()=>{let x=0;return (f,h)=>{x||(x=requestAnimationFrame(()=>{x=0,F.dispatch({type:"SET_PROGRESS",file:f,progress:Math.min(Math.max(0,h),100)});}));}}).current;v__namespace.useEffect(()=>{J?F.dispatch({type:"SET_FILES",files:e}):o&&o.length>0&&!F.getState().files.size&&F.dispatch({type:"SET_FILES",files:o});},[e,o,J,F]),v__namespace.useEffect(()=>()=>{for(let x of T.keys()){let f=_.get(x);f&&URL.revokeObjectURL(f);}},[T,_]);let Ee=v__namespace.useCallback(async x=>{try{for(let f of x)F.dispatch({type:"SET_PROGRESS",file:f,progress:0});if(g.current.onUpload)await g.current.onUpload(x,{onProgress:xe,onSuccess:f=>{F.dispatch({type:"SET_SUCCESS",file:f});},onError:(f,h)=>{F.dispatch({type:"SET_ERROR",file:f,error:h.message??"Upload failed"});}});else for(let f of x)F.dispatch({type:"SET_SUCCESS",file:f});}catch(f){let h=f instanceof Error?f.message:"Upload failed";for(let k of x)F.dispatch({type:"SET_ERROR",file:k,error:h});}},[F,g,xe]),Ce=v__namespace.useCallback(x=>{if(D)return;let f=[...x],h=false;if(c){let b=F.getState().files.size,A=Math.max(0,c-b);if(A<f.length){let O=f.slice(A);h=true,f=f.slice(0,A);for(let N of O){let Q=`Maximum ${c} files allowed`;if(g.current.onFileValidate){let $=g.current.onFileValidate(N);$&&(Q=$);}g.current.onFileReject?.(N,Q);}}}let k=[];for(let b of f){let A=false,O="";if(g.current.onFileValidate){let N=g.current.onFileValidate(b);if(N){O=N,g.current.onFileReject?.(b,O),A=true,h=true;continue}}if(de){let N=b.type,Q=`.${b.name.split(".").pop()}`;de.some($=>$===N||$===Q||$.includes("/*")&&N.startsWith($.replace("/*","/")))||(O="File type not accepted",g.current.onFileReject?.(b,O),A=true,h=true);}r&&b.size>r&&(O="File too large",g.current.onFileReject?.(b,O),A=true,h=true),A||k.push(b);}if(h&&(F.dispatch({type:"SET_INVALID",invalid:true}),setTimeout(()=>{F.dispatch({type:"SET_INVALID",invalid:false});},2e3)),k.length>0){if(F.dispatch({type:"ADD_FILES",files:k}),J&&g.current.onValueChange){let b=Array.from(F.getState().files.values()).map(A=>A.file);g.current.onValueChange([...b]);}g.current.onAccept&&g.current.onAccept(k);for(let b of k)g.current.onFileAccept?.(b);g.current.onUpload&&requestAnimationFrame(()=>{Ee(k);});}},[F,J,g,Ee,c,de,r,D]),Le=v__namespace.useCallback(x=>{let f=Array.from(x.target.files??[]);Ce(f),x.target.value="";},[Ce]),ke=v__namespace.useMemo(()=>({dropzoneId:n,inputId:q,listId:E,labelId:I,dir:M,disabled:D,inputRef:Z,urlCache:_}),[n,q,E,I,M,D,_]),Oe=S?radixUi.Slot.Slot:"div";return jsxRuntime.jsx(ve.Provider,{value:F,children:jsxRuntime.jsx(Fe.Provider,{value:ke,children:jsxRuntime.jsxs(Oe,{"data-disabled":D?"":void 0,"data-slot":"file-upload",dir:M,...ce,className:chunkD5PAWOAZ_cjs.a("relative flex flex-col gap-2",se),children:[ne,jsxRuntime.jsx("input",{type:"file",id:q,"aria-labelledby":I,"aria-describedby":n,ref:Z,tabIndex:-1,accept:a,name:W,className:"sr-only",disabled:D,multiple:X,required:le,onChange:Le}),jsxRuntime.jsx("div",{id:I,className:"sr-only",children:y??"File upload"})]})})})}function kt(s){let{asChild:e,className:o,onClick:u,onDragOver:p,onDragEnter:l,onDragLeave:d,onDrop:t,onPaste:i,onKeyDown:a,...c}=s,r=C(pe),m=H(pe),y=P(n=>n.dragOver),W=P(n=>n.invalid),S=chunkERFTRXVE_cjs.c({onClick:u,onDragOver:p,onDragEnter:l,onDragLeave:d,onDrop:t,onPaste:i,onKeyDown:a}),D=v__namespace.useCallback(n=>{if(S.current.onClick?.(n),n.defaultPrevented)return;let E=n.target;E instanceof HTMLElement&&E.closest('[data-slot="file-upload-trigger"]')||r.inputRef.current?.click();},[r.inputRef,S]),U=v__namespace.useCallback(n=>{S.current.onDragOver?.(n),!n.defaultPrevented&&(n.preventDefault(),m.dispatch({type:"SET_DRAG_OVER",dragOver:true}));},[m,S]),X=v__namespace.useCallback(n=>{S.current.onDragEnter?.(n),!n.defaultPrevented&&(n.preventDefault(),m.dispatch({type:"SET_DRAG_OVER",dragOver:true}));},[m,S]),le=v__namespace.useCallback(n=>{if(S.current.onDragLeave?.(n),n.defaultPrevented)return;let E=n.relatedTarget;E&&E instanceof Node&&n.currentTarget.contains(E)||(n.preventDefault(),m.dispatch({type:"SET_DRAG_OVER",dragOver:false}));},[m,S]),ne=v__namespace.useCallback(n=>{if(S.current.onDrop?.(n),n.defaultPrevented)return;n.preventDefault(),m.dispatch({type:"SET_DRAG_OVER",dragOver:false});let E=Array.from(n.dataTransfer.files),I=r.inputRef.current;if(!I)return;let M=new DataTransfer;for(let z of E)M.items.add(z);I.files=M.files,I.dispatchEvent(new Event("change",{bubbles:true}));},[m,r.inputRef,S]),se=v__namespace.useCallback(n=>{if(S.current.onPaste?.(n),n.defaultPrevented)return;n.preventDefault(),m.dispatch({type:"SET_DRAG_OVER",dragOver:false});let E=n.clipboardData?.items;if(!E)return;let I=[];for(let T=0;T<E.length;T++){let _=E[T];if(_?.kind==="file"){let Z=_.getAsFile();Z&&I.push(Z);}}if(I.length===0)return;let M=r.inputRef.current;if(!M)return;let z=new DataTransfer;for(let T of I)z.items.add(T);M.files=z.files,M.dispatchEvent(new Event("change",{bubbles:true}));},[m,r.inputRef,S]),ce=v__namespace.useCallback(n=>{S.current.onKeyDown?.(n),!n.defaultPrevented&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),r.inputRef.current?.click());},[r.inputRef,S]),q=e?radixUi.Slot.Slot:"div";return jsxRuntime.jsx(q,{role:"region",id:r.dropzoneId,"aria-controls":`${r.inputId} ${r.listId}`,"aria-disabled":r.disabled,"aria-invalid":W,"data-disabled":r.disabled?"":void 0,"data-dragging":y?"":void 0,"data-invalid":W?"":void 0,"data-slot":"file-upload-dropzone",dir:r.dir,tabIndex:r.disabled?void 0:0,...c,className:chunkD5PAWOAZ_cjs.a("hover:bg-accent/30 focus-visible:border-ring/50 data-dragging:border-primary/30 data-invalid:border-error data-dragging:bg-accent/30 data-invalid:ring-error/20 relative flex flex-col items-center justify-center gap-2 rounded border-2 border-dashed p-6 transition-colors outline-none select-none data-disabled:pointer-events-none",o),onClick:D,onDragEnter:X,onDragLeave:le,onDragOver:U,onDrop:ne,onKeyDown:ce,onPaste:se})}function Gt(s){let{asChild:e,onClick:o,...u}=s,p=C(be),l=chunkERFTRXVE_cjs.c({onClick:o}),d=v__namespace.useCallback(i=>{l.current.onClick?.(i),!i.defaultPrevented&&p.inputRef.current?.click();},[p.inputRef,l]),t=e?radixUi.Slot.Slot:"button";return jsxRuntime.jsx(t,{type:"button","aria-controls":p.inputId,"data-disabled":p.disabled?"":void 0,"data-slot":"file-upload-trigger",...u,disabled:p.disabled,onClick:d})}var ye=classVarianceAuthority.cva("data-[state=inactive]:fade-out-0 data-[state=active]:fade-in-0 data-[state=inactive]:slide-out-to-top-2 data-[state=active]:slide-in-from-top-2 data-[state=active]:animate-in data-[state=inactive]:animate-out flex flex-col gap-2",{variants:{orientation:{vertical:"",horizontal:"flex-row overflow-x-auto p-1.5"}},defaultVariants:{orientation:"vertical"}});function Yt(s){let{className:e,orientation:o="vertical",asChild:u,forceMount:p,...l}=s,d=C(Ie),t=P(c=>c.files.size),i=p||t>0;if(!i)return null;let a=u?radixUi.Slot.Slot:"div";return jsxRuntime.jsx(a,{role:"list",id:d.listId,"aria-orientation":o,"data-orientation":o,"data-slot":"file-upload-list","data-state":i?"active":"inactive",dir:d.dir,...l,className:chunkD5PAWOAZ_cjs.a(ye({orientation:o}),e)})}var Se=v__namespace.createContext(null);function L(s){let e=v__namespace.useContext(Se);if(!e)throw new Error(`\`${s}\` must be used within \`${ee}\``);return e}function po(s){let{value:e,asChild:o,className:u,...p}=s,l=v__namespace.useId(),d=`${l}-status`,t=`${l}-name`,i=`${l}-size`,a=`${l}-message`,c=C(ee),r=P(U=>U.files.get(e)),m=P(U=>U.files.size),y=P(U=>Array.from(U.files.keys()).indexOf(e)+1),W=v__namespace.useMemo(()=>({id:l,fileState:r,nameId:t,sizeId:i,statusId:d,messageId:a}),[l,r,d,t,i,a]);if(!r)return null;let S=r.error?`Error: ${r.error}`:r.status==="uploading"?`Uploading: ${r.progress}% complete`:r.status==="success"?"Upload complete":"Ready to upload",D=o?radixUi.Slot.Slot:"div";return jsxRuntime.jsx(Se.Provider,{value:W,children:jsxRuntime.jsxs(D,{role:"listitem",id:l,"aria-setsize":m,"aria-posinset":y,"aria-describedby":`${t} ${i} ${d} ${r.error?a:""}`,"aria-labelledby":t,"data-slot":"file-upload-item",dir:c.dir,...p,className:chunkD5PAWOAZ_cjs.a("relative flex items-center gap-2.5 rounded border p-3",u),children:[s.children,jsxRuntime.jsx("span",{id:d,className:"sr-only",children:S})]})})}function Me(s){if(s===0)return "0 B";let e=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(s)/Math.log(1024));return `${(s/1024**o).toFixed(o?1:0)} ${e[o]}`}function Te(s){let e=s.type,o=s.name.split(".").pop()?.toLowerCase()??"";return e.startsWith("video/")?jsxRuntime.jsx(lucideReact.FileVideoIcon,{}):e.startsWith("audio/")?jsxRuntime.jsx(lucideReact.FileAudioIcon,{}):e.startsWith("text/")||["txt","md","rtf","pdf"].includes(o)?jsxRuntime.jsx(lucideReact.FileTextIcon,{}):["html","css","js","jsx","ts","tsx","json","xml","php","py","rb","java","c","cpp","cs"].includes(o)?jsxRuntime.jsx(lucideReact.FileCodeIcon,{}):["zip","rar","7z","tar","gz","bz2"].includes(o)?jsxRuntime.jsx(lucideReact.FileArchiveIcon,{}):["exe","msi","app","apk","deb","rpm"].includes(o)||e.startsWith("application/")?jsxRuntime.jsx(lucideReact.FileCogIcon,{}):jsxRuntime.jsx(lucideReact.FileIcon,{})}function bo(s){let{render:e,asChild:o,children:u,className:p,...l}=s,d=L(ue),t=C(ue),i=v__namespace.useCallback(r=>{if(d.fileState?.file.type.startsWith("image/")){let m=t.urlCache.get(r);return m||(m=URL.createObjectURL(r),t.urlCache.set(r,m)),jsxRuntime.jsx("img",{src:m,alt:r.name,className:"size-full object-cover"})}return Te(r)},[d.fileState?.file.type,t.urlCache]),a=v__namespace.useCallback(r=>e?e(r,()=>i(r)):i(r),[e,i]);if(!d.fileState)return null;let c=o?radixUi.Slot.Slot:"div";return jsxRuntime.jsxs(c,{"aria-labelledby":d.nameId,"data-slot":"file-upload-preview",...l,className:chunkD5PAWOAZ_cjs.a("bg-accent/50 relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded border [&>svg]:size-10",p),children:[a(d.fileState.file),u]})}function Ao(s){let{asChild:e,size:o="default",children:u,className:p,...l}=s,d=C(fe),t=L(fe);if(!t.fileState)return null;let i=e?radixUi.Slot.Slot:"div";return jsxRuntime.jsx(i,{"data-slot":"file-upload-metadata",dir:d.dir,...l,className:chunkD5PAWOAZ_cjs.a("flex min-w-0 flex-1 flex-col",p),children:u??jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{id:t.nameId,className:chunkD5PAWOAZ_cjs.a("truncate text-sm font-medium",o==="sm"&&"text-[13px] leading-snug font-normal"),children:t.fileState.file.name}),jsxRuntime.jsx("span",{id:t.sizeId,className:chunkD5PAWOAZ_cjs.a("text-muted-foreground truncate text-xs",o==="sm"&&"text-[11px] leading-snug"),children:Me(t.fileState.file.size)}),t.fileState.error&&jsxRuntime.jsx("span",{id:t.messageId,className:"text-destructive text-xs",children:t.fileState.error})]})})}function wo(s){let{variant:e="linear",size:o=40,asChild:u,forceMount:p,className:l,...d}=s,t=L(Pe);if(!t.fileState||!(p||t.fileState.progress!==100))return null;let a=u?radixUi.Slot.Slot:"div";switch(e){case "circular":{let c=2*Math.PI*((o-4)/2),r=c-t.fileState.progress/100*c;return jsxRuntime.jsx(a,{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":t.fileState.progress,"aria-valuetext":`${t.fileState.progress}%`,"aria-labelledby":t.nameId,"data-slot":"file-upload-progress",...d,className:chunkD5PAWOAZ_cjs.a("absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",l),children:jsxRuntime.jsxs("svg",{className:"-rotate-90 transform",width:o,height:o,viewBox:`0 0 ${o} ${o}`,fill:"none",stroke:"currentColor",children:[jsxRuntime.jsx("circle",{className:"text-primary/20",strokeWidth:"2",cx:o/2,cy:o/2,r:(o-4)/2}),jsxRuntime.jsx("circle",{className:"text-primary transition-[stroke-dashoffset] duration-300 ease-linear",strokeWidth:"2",strokeLinecap:"round",strokeDasharray:c,strokeDashoffset:r,cx:o/2,cy:o/2,r:(o-4)/2})]})})}case "fill":{let c=t.fileState.progress,r=100-c;return jsxRuntime.jsx(a,{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c,"aria-valuetext":`${c}%`,"aria-labelledby":t.nameId,"data-slot":"file-upload-progress",...d,className:chunkD5PAWOAZ_cjs.a("bg-primary/50 absolute inset-0 transition-[clip-path] duration-300 ease-linear",l),style:{clipPath:`inset(${r}% 0% 0% 0%)`}})}default:return jsxRuntime.jsx(a,{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":t.fileState.progress,"aria-valuetext":`${t.fileState.progress}%`,"aria-labelledby":t.nameId,"data-slot":"file-upload-progress",...d,className:chunkD5PAWOAZ_cjs.a("bg-primary/20 relative h-1.5 w-full overflow-hidden rounded-full",l),children:jsxRuntime.jsx("div",{className:"bg-primary h-full w-full flex-1 transition-transform duration-300 ease-linear",style:{transform:`translateX(-${100-t.fileState.progress}%)`}})})}}function Bo(s){let{asChild:e,onClick:o,...u}=s,p=H(me),l=L(me),d=v__namespace.useCallback(i=>{o?.(i),!(!l.fileState||i.defaultPrevented)&&p.dispatch({type:"REMOVE_FILE",file:l.fileState.file});},[p,l.fileState,o]);if(!l.fileState)return null;let t=e?radixUi.Slot.Slot:"button";return jsxRuntime.jsx(t,{type:"button","aria-controls":l.id,"aria-describedby":l.nameId,"data-slot":"file-upload-item-delete",...u,onClick:d})}function Yo(s){let{asChild:e,forceMount:o,disabled:u,onClick:p,...l}=s,d=C(ge),t=H(ge),i=P(y=>y.files.size),a=u||d.disabled,c=v__namespace.useCallback(y=>{p?.(y),!y.defaultPrevented&&t.dispatch({type:"CLEAR"});},[t,p]);if(!(o||i>0))return null;let m=e?radixUi.Slot.Slot:"button";return jsxRuntime.jsx(m,{type:"button","aria-controls":d.listId,"data-slot":"file-upload-clear","data-disabled":a?"":void 0,...l,disabled:a,onClick:c})}exports.a=C;exports.b=P;exports.c=Ut;exports.d=kt;exports.e=Gt;exports.f=Yt;exports.g=L;exports.h=po;exports.i=bo;exports.j=Ao;exports.k=wo;exports.l=Bo;exports.m=Yo;