@retinalabsllc/zairusjs 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -25
- package/dist/index.mjs +33 -30
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -895,6 +895,7 @@ interface UniversalDriveViewProps {
|
|
|
895
895
|
onMoveToTrash: (ids: string[]) => Promise<void>;
|
|
896
896
|
onClearUploadQueue?: () => void;
|
|
897
897
|
onPageChange: (page: number) => void;
|
|
898
|
+
onRefresh: () => void;
|
|
898
899
|
onFetchFoldersForExplorer: (folderId: string | null) => Promise<{
|
|
899
900
|
folders: DriveItem[];
|
|
900
901
|
breadcrumbs: any[];
|
package/dist/index.d.ts
CHANGED
|
@@ -895,6 +895,7 @@ interface UniversalDriveViewProps {
|
|
|
895
895
|
onMoveToTrash: (ids: string[]) => Promise<void>;
|
|
896
896
|
onClearUploadQueue?: () => void;
|
|
897
897
|
onPageChange: (page: number) => void;
|
|
898
|
+
onRefresh: () => void;
|
|
898
899
|
onFetchFoldersForExplorer: (folderId: string | null) => Promise<{
|
|
899
900
|
folders: DriveItem[];
|
|
900
901
|
breadcrumbs: any[];
|
package/dist/index.js
CHANGED
|
@@ -3321,36 +3321,36 @@ var import_core_free_icons21 = require("@hugeicons/core-free-icons");
|
|
|
3321
3321
|
var FileIconMapper = ({ type, mimeType }) => {
|
|
3322
3322
|
const mime = mimeType?.toLowerCase() || "";
|
|
3323
3323
|
if (type === "FOLDER") {
|
|
3324
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FolderIcon, size:
|
|
3324
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FolderIcon, size: 19, className: "text-black" });
|
|
3325
3325
|
}
|
|
3326
3326
|
if (type === "SHEET" || mime.includes("excel") || mime.includes("spreadsheet") || mime.includes("csv")) {
|
|
3327
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.TableIcon, size:
|
|
3327
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.TableIcon, size: 19, className: "text-black" });
|
|
3328
3328
|
}
|
|
3329
3329
|
if (type === "IMAGE" || mime.startsWith("image/")) {
|
|
3330
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.ImageIcon, size:
|
|
3330
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.ImageIcon, size: 19, className: "text-black" });
|
|
3331
3331
|
}
|
|
3332
3332
|
if (type === "VIDEO" || mime.startsWith("video/")) {
|
|
3333
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileVideoIcon, size:
|
|
3333
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileVideoIcon, size: 19, className: "text-black" });
|
|
3334
3334
|
}
|
|
3335
3335
|
if (type === "AUDIO" || mime.startsWith("audio/")) {
|
|
3336
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileAudioIcon, size:
|
|
3336
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileAudioIcon, size: 19, className: "text-black" });
|
|
3337
3337
|
}
|
|
3338
3338
|
if (type === "CODE" || mime.includes("json") || mime.includes("javascript") || mime.includes("html")) {
|
|
3339
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.DocumentCodeIcon, size:
|
|
3339
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.DocumentCodeIcon, size: 19, className: "text-black" });
|
|
3340
3340
|
}
|
|
3341
3341
|
if (type === "ARCHIVE" || mime.includes("zip") || mime.includes("tar") || mime.includes("rar")) {
|
|
3342
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileZipIcon, size:
|
|
3342
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileZipIcon, size: 19, className: "text-black" });
|
|
3343
3343
|
}
|
|
3344
3344
|
if (type === "DOC" || mime.includes("word")) {
|
|
3345
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.Doc01Icon, size:
|
|
3345
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.Doc01Icon, size: 19, className: "text-black" });
|
|
3346
3346
|
}
|
|
3347
3347
|
if (type === "PDF" || mime.includes("pdf")) {
|
|
3348
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.Pdf01Icon, size:
|
|
3348
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.Pdf01Icon, size: 19, className: "text-black" });
|
|
3349
3349
|
}
|
|
3350
3350
|
if (type === "TXT" || mime.includes("text/plain")) {
|
|
3351
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.Txt01Icon, size:
|
|
3351
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.Txt01Icon, size: 19, className: "text-black" });
|
|
3352
3352
|
}
|
|
3353
|
-
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileEmpty02Icon, size:
|
|
3353
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react64.HugeiconsIcon, { icon: import_core_free_icons21.FileEmpty02Icon, size: 19, className: "text-black" });
|
|
3354
3354
|
};
|
|
3355
3355
|
|
|
3356
3356
|
// src/components/UniversalDriveView.tsx
|
|
@@ -3370,6 +3370,7 @@ var UniversalDriveView = ({
|
|
|
3370
3370
|
onMoveToTrash,
|
|
3371
3371
|
onClearUploadQueue,
|
|
3372
3372
|
onPageChange,
|
|
3373
|
+
onRefresh,
|
|
3373
3374
|
onFetchFoldersForExplorer,
|
|
3374
3375
|
onExecuteMoveCopy,
|
|
3375
3376
|
onOpenFile,
|
|
@@ -3406,11 +3407,7 @@ var UniversalDriveView = ({
|
|
|
3406
3407
|
return parseFloat((num / Math.pow(k, i)).toFixed(1)) + " " + sizes[i];
|
|
3407
3408
|
};
|
|
3408
3409
|
const formatDate3 = (dateString) => {
|
|
3409
|
-
return new Date(dateString).toLocaleDateString("en-US", {
|
|
3410
|
-
month: "short",
|
|
3411
|
-
day: "numeric",
|
|
3412
|
-
year: "numeric"
|
|
3413
|
-
});
|
|
3410
|
+
return new Date(dateString).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
|
|
3414
3411
|
};
|
|
3415
3412
|
const handleRowClick = (id, e) => {
|
|
3416
3413
|
if (e.ctrlKey || e.metaKey) {
|
|
@@ -3419,6 +3416,10 @@ var UniversalDriveView = ({
|
|
|
3419
3416
|
setSelectedIds([id]);
|
|
3420
3417
|
}
|
|
3421
3418
|
};
|
|
3419
|
+
const handleSelectAll = () => {
|
|
3420
|
+
if (selectedIds.length === items.length && items.length > 0) setSelectedIds([]);
|
|
3421
|
+
else setSelectedIds(items.map((i) => i.id));
|
|
3422
|
+
};
|
|
3422
3423
|
const handleItemDoubleClick = (item) => {
|
|
3423
3424
|
if (item.type === "FOLDER") {
|
|
3424
3425
|
setSelectedIds([]);
|
|
@@ -3448,26 +3449,26 @@ var UniversalDriveView = ({
|
|
|
3448
3449
|
const globalProgress = uploadQueue.length > 0 ? Math.round(uploadQueue.reduce((acc, job) => acc + job.progress, 0) / (uploadQueue.length * 100) * 100) : 0;
|
|
3449
3450
|
const isUILocked = isLoading || isSubmitting;
|
|
3450
3451
|
const lockClass = isUILocked ? "pointer-events-none opacity-60" : "";
|
|
3451
|
-
return /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex flex-col gap-6 max-w-5xl w-full mx-auto p-6 bg-white rounded-2xl animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react65.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react65.default.createElement("div", { className: `flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-4 border-b border-neutral-100 transition-opacity ${lockClass}` }, /* @__PURE__ */ import_react65.default.createElement("div", null, /* @__PURE__ */ import_react65.default.createElement("h1", { className: "text-xl text-black tracking-tight mb-1" }, "Drive"), /* @__PURE__ */ import_react65.default.createElement("p", { className: "text-xs text-neutral-500" }, "Secure cloud storage optimized for your workspace.")), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center gap-2 shrink-0" }, selectedIds.length > 0 && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, selectedIds.length === 1 && /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => {
|
|
3452
|
+
return /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex flex-col gap-6 max-w-5xl w-full mx-auto p-6 bg-white rounded-2xl animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react65.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react65.default.createElement("div", { className: `flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-4 border-b border-neutral-100 transition-opacity ${lockClass}` }, /* @__PURE__ */ import_react65.default.createElement("div", null, /* @__PURE__ */ import_react65.default.createElement("h1", { className: "text-xl text-black tracking-tight mb-1" }, "Drive"), /* @__PURE__ */ import_react65.default.createElement("p", { className: "text-xs text-neutral-500" }, "Secure cloud storage optimized for your workspace.")), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center gap-2 shrink-0" }, /* @__PURE__ */ import_react65.default.createElement("button", { onClick: onRefresh, title: "Refresh Directory", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.RefreshIcon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-px h-6 bg-neutral-200 mx-1" }), selectedIds.length > 0 && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, selectedIds.length === 1 && /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => {
|
|
3452
3453
|
const item = items.find((i) => i.id === selectedIds[0]);
|
|
3453
3454
|
if (item) setRenameModal({ isOpen: true, id: item.id, name: item.name });
|
|
3454
3455
|
setFolderInputVal(item?.name || "");
|
|
3455
|
-
}, title: "Rename", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.FileEditIcon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => onShareItems(items.filter((i) => selectedIds.includes(i.id))), title: "Share", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.
|
|
3456
|
+
}, title: "Rename", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.FileEditIcon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => onShareItems(items.filter((i) => selectedIds.includes(i.id))), title: "Share", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Share03Icon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => openExplorer("copy"), title: "Copy", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Copy01Icon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => openExplorer("move"), title: "Move", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.ArrowRight02Icon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-px h-6 bg-neutral-200 mx-1" })), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => {
|
|
3456
3457
|
setFolderInputVal("");
|
|
3457
3458
|
setIsNewFolderModalOpen(true);
|
|
3458
|
-
}, title: "New Folder", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.FolderAddIcon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("label", { title: "Upload Files", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full cursor-pointer transition-all" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.
|
|
3459
|
+
}, title: "New Folder", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.FolderAddIcon, size: 18 })), /* @__PURE__ */ import_react65.default.createElement("label", { title: "Upload Files", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full cursor-pointer transition-all" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.CloudUploadIcon, size: 18 }), /* @__PURE__ */ import_react65.default.createElement("input", { type: "file", multiple: true, className: "hidden", onChange: (e) => e.target.files && onUploadFiles(e.target.files) })))), /* @__PURE__ */ import_react65.default.createElement("div", { className: `flex flex-col sm:flex-row sm:items-center justify-between gap-4 ${lockClass}` }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-full sm:max-w-xs relative" }, /* @__PURE__ */ import_react65.default.createElement("input", { type: "text", placeholder: "Search Drive...", value: localSearch, onChange: (e) => setLocalSearch(e.target.value), className: "w-full pl-4 pr-10 py-2.5 text-xs border border-neutral-100 rounded-full outline-none focus:border-black transition-colors" })), selectedIds.length > 0 && /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center gap-3 bg-neutral-50 px-4 py-2 rounded-full animate-in fade-in duration-200" }, /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-500 uppercase" }, selectedIds.length, " Selected"), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => {
|
|
3459
3460
|
onMoveToTrash(selectedIds);
|
|
3460
3461
|
setSelectedIds([]);
|
|
3461
|
-
}, className: "text-neutral-500 hover:text-red-600 p-1 flex items-center gap-1.5 text-xs outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Delete02Icon, size: 14 }), " Move to Trash"))), /* @__PURE__ */ import_react65.default.createElement("div", { className: `flex items-center gap-1.5 overflow-x-auto text-xs py-1
|
|
3462
|
+
}, className: "text-neutral-500 hover:text-red-600 p-1 flex items-center gap-1.5 text-xs outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Delete02Icon, size: 14 }), " Move to Trash"))), /* @__PURE__ */ import_react65.default.createElement("div", { className: `flex items-center gap-1.5 overflow-x-auto text-xs py-1 text-neutral-400 whitespace-nowrap ${lockClass}` }, folderBreadcrumbs.map((crumb, idx) => /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, { key: idx }, idx > 0 && /* @__PURE__ */ import_react65.default.createElement("span", null, "/"), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => {
|
|
3462
3463
|
setSelectedIds([]);
|
|
3463
3464
|
onNavigateFolder(crumb.id);
|
|
3464
|
-
}, className: `hover:text-black transition-colors outline-none ${idx === folderBreadcrumbs.length - 1 ? "text-black
|
|
3465
|
+
}, className: `hover:text-black transition-colors outline-none ${idx === folderBreadcrumbs.length - 1 ? "text-black " : ""}` }, crumb.name)))), /* @__PURE__ */ import_react65.default.createElement("div", { className: `w-full overflow-x-auto select-none flex-1 relative min-h-75 ${lockClass}` }, /* @__PURE__ */ import_react65.default.createElement("table", { className: "w-full text-left border-collapse min-w-full relative z-10" }, /* @__PURE__ */ import_react65.default.createElement("thead", null, /* @__PURE__ */ import_react65.default.createElement("tr", { className: "border-b border-neutral-100 bg-white" }, /* @__PURE__ */ import_react65.default.createElement("th", { className: "w-10 p-3" }, /* @__PURE__ */ import_react65.default.createElement("input", { type: "checkbox", checked: selectedIds.length === items.length && items.length > 0, onChange: () => items.length > 0 && (selectedIds.length === items.length ? setSelectedIds([]) : setSelectedIds(items.map((i) => i.id))), className: "rounded border-neutral-300 w-4 h-4 text-black focus:ring-black accent-black cursor-pointer" })), /* @__PURE__ */ import_react65.default.createElement("th", { className: "text-[11px] font-light tracking-[0.2em] text-neutral-400 p-3" }, "Name"), /* @__PURE__ */ import_react65.default.createElement("th", { className: "text-[11px] font-light tracking-[0.2em] text-neutral-400 p-3" }, "Modified"), /* @__PURE__ */ import_react65.default.createElement("th", { className: "text-[11px] font-light tracking-[0.2em] text-neutral-400 p-3 text-right" }, "Size"))), /* @__PURE__ */ import_react65.default.createElement("tbody", { className: "divide-y divide-neutral-50" }, items.length === 0 && !isLoading && /* @__PURE__ */ import_react65.default.createElement("tr", null, /* @__PURE__ */ import_react65.default.createElement("td", { colSpan: 4, className: "py-24 text-center" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex flex-col items-center justify-center" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.FolderIcon, size: 40, className: "text-neutral-200 mb-3" }), /* @__PURE__ */ import_react65.default.createElement("p", { className: "text-xs text-neutral-400" }, "This directory is empty.")))), items.map((item) => {
|
|
3465
3466
|
const isChecked = selectedIds.includes(item.id);
|
|
3466
3467
|
return /* @__PURE__ */ import_react65.default.createElement("tr", { key: item.id, onClick: (e) => handleRowClick(item.id, e), onDoubleClick: () => handleItemDoubleClick(item), onContextMenu: (e) => {
|
|
3467
3468
|
e.preventDefault();
|
|
3468
3469
|
setSelectedIds([item.id]);
|
|
3469
|
-
}, className: `hover:bg-neutral-50/70 transition-colors cursor-pointer group ${isChecked ? "bg-neutral-50" : ""}` }, /* @__PURE__ */ import_react65.default.createElement("td", { className: "p-3", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react65.default.createElement("input", { type: "checkbox", checked: isChecked, onChange: () => handleRowClick(item.id, { ctrlKey: true }), className: "rounded border-neutral-300 w-4 h-4 text-black focus:ring-black accent-black cursor-pointer" })), /* @__PURE__ */ import_react65.default.createElement("td", { className: "p-3 flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-
|
|
3470
|
-
})))
|
|
3470
|
+
}, className: `hover:bg-neutral-50/70 transition-colors cursor-pointer group ${isChecked ? "bg-neutral-50" : ""}` }, /* @__PURE__ */ import_react65.default.createElement("td", { className: "p-3", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react65.default.createElement("input", { type: "checkbox", checked: isChecked, onChange: () => handleRowClick(item.id, { ctrlKey: true }), className: "rounded border-neutral-300 w-4 h-4 text-black focus:ring-black accent-black cursor-pointer" })), /* @__PURE__ */ import_react65.default.createElement("td", { className: "p-3 flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-9 h-9 shrink-0 flex items-center justify-center relative" }, /* @__PURE__ */ import_react65.default.createElement(FileIconMapper, { type: item.type, mimeType: item.mimeType })), /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-xs text-black truncate pr-4" }, item.name)), /* @__PURE__ */ import_react65.default.createElement("td", { className: "p-3 text-xs text-neutral-500 whitespace-nowrap" }, formatDate3(item.updatedAt)), /* @__PURE__ */ import_react65.default.createElement("td", { className: "p-3 text-xs text-neutral-500 text-right whitespace-nowrap" }, formatBytes(item.size)));
|
|
3471
|
+
}))), isLoading && /* @__PURE__ */ import_react65.default.createElement("div", { className: "absolute inset-0 top-12 z-20 bg-white flex items-start justify-center pt-20" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Loading03Icon, className: "animate-spin text-neutral-400", size: 24 }))), /* @__PURE__ */ import_react65.default.createElement("div", { className: `flex items-center justify-between pt-4 ${lockClass}` }, /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] " }, "Page ", currentPage, " of ", Math.max(1, totalPages)), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage <= 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black disabled:opacity-30 transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black disabled:opacity-30 transition-all outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.ArrowRight01Icon, size: 14 })))), activeJobs.length > 0 && /* @__PURE__ */ import_react65.default.createElement("div", { className: "fixed bottom-6 right-6 w-80 bg-white shadow-2xl rounded-xl z-100 overflow-hidden flex flex-col animate-in slide-in-from-bottom-4 duration-300" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "p-4 bg-neutral-50 flex items-center justify-between" }, /* @__PURE__ */ import_react65.default.createElement("div", null, /* @__PURE__ */ import_react65.default.createElement("h4", { className: "text-xs text-black " }, "Uploading Elements"), /* @__PURE__ */ import_react65.default.createElement("p", { className: "text-[10px] text-neutral-500 mt-0.5" }, "Processing ", activeJobs.length, " streams")), onClearUploadQueue && activeJobs.length === 0 && /* @__PURE__ */ import_react65.default.createElement("button", { onClick: onClearUploadQueue, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Cancel01Icon, size: 14 }))), /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-full h-1 bg-neutral-100 relative" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "h-full transition-all duration-500 ease-out", style: { width: `${globalProgress}%`, background: "linear-gradient(to right, #f64b4d, #ffa360)" } })), /* @__PURE__ */ import_react65.default.createElement("div", { className: "max-h-40 overflow-y-auto p-2" }, uploadQueue.map((job) => /* @__PURE__ */ import_react65.default.createElement("div", { key: job.id, className: "flex items-center justify-between p-2 text-[11px] gap-4" }, /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-black truncate flex-1 pr-2" }, job.name), /* @__PURE__ */ import_react65.default.createElement("div", { className: "shrink-0 whitespace-nowrap flex items-center gap-2" }, job.status === "COMPLETED" ? /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Tick01Icon, size: 12, className: "text-green-600" }) : job.status === "FAILED" ? /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-red-600 text-[10px]" }, "Failed") : /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-neutral-500 text-[10px]" }, job.progress, "%")))))), (isNewFolderModalOpen || renameModal.isOpen) && /* @__PURE__ */ import_react65.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "absolute inset-0 bg-black/30 ", onClick: () => !isSubmitting && (setIsNewFolderModalOpen(false), setRenameModal({ isOpen: false, id: "", name: "" })) }), /* @__PURE__ */ import_react65.default.createElement("form", { onSubmit: async (e) => {
|
|
3471
3472
|
e.preventDefault();
|
|
3472
3473
|
if (!folderInputVal.trim() || isSubmitting) return;
|
|
3473
3474
|
setIsSubmitting(true);
|
|
@@ -3480,7 +3481,7 @@ var UniversalDriveView = ({
|
|
|
3480
3481
|
}, className: "relative w-full max-w-sm bg-white shadow-2xl rounded-2xl p-8 flex flex-col gap-6 animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react65.default.createElement("div", null, /* @__PURE__ */ import_react65.default.createElement("h3", { className: "text-lg text-black tracking-tight mb-1" }, isNewFolderModalOpen ? "Create Directory" : "Rename Element"), /* @__PURE__ */ import_react65.default.createElement("p", { className: "text-[11px] text-neutral-400" }, "Please provide a valid alphanumeric name.")), /* @__PURE__ */ import_react65.default.createElement(TextInput, { placeholder: "Name (e.g., Q3 Invoices)", value: folderInputVal, onChange: setFolderInputVal }), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center justify-end gap-3 mt-2" }, /* @__PURE__ */ import_react65.default.createElement("button", { type: "button", onClick: () => {
|
|
3481
3482
|
setIsNewFolderModalOpen(false);
|
|
3482
3483
|
setRenameModal({ isOpen: false, id: "", name: "" });
|
|
3483
|
-
}, disabled: isSubmitting, className: "px-6 py-2.5 text-xs text-neutral-500 hover:bg-neutral-50 rounded-full outline-none disabled:opacity-50 transition-colors" }, "Cancel"), /* @__PURE__ */ import_react65.default.createElement(ThreeDActionButton, { type: "submit", isLoading: isSubmitting, disabled: !folderInputVal.trim() }, isNewFolderModalOpen ? "Create" : "Rename")))), explorer.isOpen && /* @__PURE__ */ import_react65.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "absolute inset-0 bg-black/40
|
|
3484
|
+
}, disabled: isSubmitting, className: "px-6 py-2.5 text-xs text-neutral-500 hover:bg-neutral-50 rounded-full outline-none disabled:opacity-50 transition-colors" }, "Cancel"), /* @__PURE__ */ import_react65.default.createElement(ThreeDActionButton, { type: "submit", isLoading: isSubmitting, disabled: !folderInputVal.trim() }, isNewFolderModalOpen ? "Create" : "Rename")))), explorer.isOpen && /* @__PURE__ */ import_react65.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isSubmitting && setExplorer((p) => ({ ...p, isOpen: false })) }), /* @__PURE__ */ import_react65.default.createElement("div", { className: "relative w-full max-w-md bg-white shadow-2xl rounded-2xl p-6 flex flex-col gap-4 animate-in zoom-in-95 duration-200 min-h-100" }, /* @__PURE__ */ import_react65.default.createElement("div", null, /* @__PURE__ */ import_react65.default.createElement("h3", { className: "text-lg text-black tracking-tight mb-1 capitalize" }, explorer.action, " Items"), /* @__PURE__ */ import_react65.default.createElement("p", { className: "text-[11px] text-neutral-400" }, "Select destination directory.")), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center gap-1.5 overflow-x-auto text-xs py-2 text-neutral-400 whitespace-nowrap" }, explorer.breadcrumbs.map((crumb, idx) => /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, { key: idx }, idx > 0 && /* @__PURE__ */ import_react65.default.createElement("span", null, "/"), /* @__PURE__ */ import_react65.default.createElement("button", { disabled: explorer.loading, onClick: () => navigateExplorer(crumb.id), className: `hover:text-black outline-none ${idx === explorer.breadcrumbs.length - 1 ? "text-black " : ""}` }, crumb.name)))), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex-1 overflow-y-auto rounded-xl" }, explorer.loading ? /* @__PURE__ */ import_react65.default.createElement("div", { className: "h-full flex items-center justify-center p-10" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.Loading03Icon, className: "animate-spin text-neutral-400", size: 20 })) : explorer.folders.length === 0 ? /* @__PURE__ */ import_react65.default.createElement("div", { className: "h-full flex items-center justify-center p-10 text-xs text-neutral-400" }, "No sub-directories.") : /* @__PURE__ */ import_react65.default.createElement("div", { className: "divide-y divide-neutral-50" }, explorer.folders.map((f) => /* @__PURE__ */ import_react65.default.createElement("div", { key: f.id, onClick: () => navigateExplorer(f.id), className: "flex items-center gap-3 p-3 hover:bg-neutral-50 cursor-pointer transition-colors" }, /* @__PURE__ */ import_react65.default.createElement(import_react66.HugeiconsIcon, { icon: import_core_free_icons22.FolderIcon, size: 16, className: "text-black" }), /* @__PURE__ */ import_react65.default.createElement("span", { className: "text-sm text-black truncate" }, f.name))))), /* @__PURE__ */ import_react65.default.createElement("div", { className: "flex items-center justify-end gap-3 mt-2" }, /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => setExplorer((p) => ({ ...p, isOpen: false })), disabled: isSubmitting, className: "px-6 py-2.5 text-xs text-neutral-500 hover:bg-neutral-50 rounded-full outline-none disabled:opacity-50 transition-colors" }, "Cancel"), /* @__PURE__ */ import_react65.default.createElement(ThreeDActionButton, { onClick: executeExplorerAction, isLoading: isSubmitting }, "Paste Here")))));
|
|
3484
3485
|
};
|
|
3485
3486
|
|
|
3486
3487
|
// src/components/DriveItemOpener.tsx
|
|
@@ -3511,7 +3512,7 @@ var DriveItemOpener = ({ item, onClose }) => {
|
|
|
3511
3512
|
var import_react69 = __toESM(require("react"));
|
|
3512
3513
|
var DriveShareModal = ({ items, onClose }) => {
|
|
3513
3514
|
if (!items || items.length === 0) return null;
|
|
3514
|
-
return /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 bg-black/30
|
|
3515
|
+
return /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 bg-black/30 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-white w-full max-w-md rounded-2xl p-6 shadow-2xl flex flex-col gap-6 animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react69.default.createElement("div", null, /* @__PURE__ */ import_react69.default.createElement("h3", { className: "text-lg text-black tracking-tight mb-1" }, "Share Access"), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-neutral-500" }, "Managing permissions for ", items.length, " selected item(s).")), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex justify-end gap-3 mt-2" }, /* @__PURE__ */ import_react69.default.createElement(
|
|
3515
3516
|
"button",
|
|
3516
3517
|
{
|
|
3517
3518
|
onClick: onClose,
|
package/dist/index.mjs
CHANGED
|
@@ -3272,17 +3272,19 @@ import React40, { useState as useState24, useEffect as useEffect16 } from "react
|
|
|
3272
3272
|
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3273
3273
|
import {
|
|
3274
3274
|
Delete02Icon as Delete02Icon2,
|
|
3275
|
-
|
|
3275
|
+
CloudUploadIcon,
|
|
3276
3276
|
FolderAddIcon,
|
|
3277
3277
|
FolderIcon as FolderIcon2,
|
|
3278
3278
|
Loading03Icon as Loading03Icon12,
|
|
3279
3279
|
ArrowLeft01Icon as ArrowLeft01Icon8,
|
|
3280
3280
|
ArrowRight01Icon as ArrowRight01Icon7,
|
|
3281
3281
|
Copy01Icon,
|
|
3282
|
-
|
|
3282
|
+
Share03Icon,
|
|
3283
3283
|
Tick01Icon,
|
|
3284
3284
|
FileEditIcon,
|
|
3285
|
-
ArrowRight02Icon
|
|
3285
|
+
ArrowRight02Icon,
|
|
3286
|
+
Cancel01Icon as Cancel01Icon3,
|
|
3287
|
+
RefreshIcon
|
|
3286
3288
|
} from "@hugeicons/core-free-icons";
|
|
3287
3289
|
|
|
3288
3290
|
// src/components/FileIconMapper.tsx
|
|
@@ -3304,36 +3306,36 @@ import {
|
|
|
3304
3306
|
var FileIconMapper = ({ type, mimeType }) => {
|
|
3305
3307
|
const mime = mimeType?.toLowerCase() || "";
|
|
3306
3308
|
if (type === "FOLDER") {
|
|
3307
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FolderIcon, size:
|
|
3309
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FolderIcon, size: 19, className: "text-black" });
|
|
3308
3310
|
}
|
|
3309
3311
|
if (type === "SHEET" || mime.includes("excel") || mime.includes("spreadsheet") || mime.includes("csv")) {
|
|
3310
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: TableIcon, size:
|
|
3312
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: TableIcon, size: 19, className: "text-black" });
|
|
3311
3313
|
}
|
|
3312
3314
|
if (type === "IMAGE" || mime.startsWith("image/")) {
|
|
3313
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: ImageIcon, size:
|
|
3315
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: ImageIcon, size: 19, className: "text-black" });
|
|
3314
3316
|
}
|
|
3315
3317
|
if (type === "VIDEO" || mime.startsWith("video/")) {
|
|
3316
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileVideoIcon, size:
|
|
3318
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileVideoIcon, size: 19, className: "text-black" });
|
|
3317
3319
|
}
|
|
3318
3320
|
if (type === "AUDIO" || mime.startsWith("audio/")) {
|
|
3319
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileAudioIcon, size:
|
|
3321
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileAudioIcon, size: 19, className: "text-black" });
|
|
3320
3322
|
}
|
|
3321
3323
|
if (type === "CODE" || mime.includes("json") || mime.includes("javascript") || mime.includes("html")) {
|
|
3322
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: DocumentCodeIcon, size:
|
|
3324
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: DocumentCodeIcon, size: 19, className: "text-black" });
|
|
3323
3325
|
}
|
|
3324
3326
|
if (type === "ARCHIVE" || mime.includes("zip") || mime.includes("tar") || mime.includes("rar")) {
|
|
3325
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileZipIcon, size:
|
|
3327
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileZipIcon, size: 19, className: "text-black" });
|
|
3326
3328
|
}
|
|
3327
3329
|
if (type === "DOC" || mime.includes("word")) {
|
|
3328
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: Doc01Icon, size:
|
|
3330
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: Doc01Icon, size: 19, className: "text-black" });
|
|
3329
3331
|
}
|
|
3330
3332
|
if (type === "PDF" || mime.includes("pdf")) {
|
|
3331
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: Pdf01Icon, size:
|
|
3333
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: Pdf01Icon, size: 19, className: "text-black" });
|
|
3332
3334
|
}
|
|
3333
3335
|
if (type === "TXT" || mime.includes("text/plain")) {
|
|
3334
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: Txt01Icon, size:
|
|
3336
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: Txt01Icon, size: 19, className: "text-black" });
|
|
3335
3337
|
}
|
|
3336
|
-
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileEmpty02Icon, size:
|
|
3338
|
+
return /* @__PURE__ */ React39.createElement(HugeiconsIcon25, { icon: FileEmpty02Icon, size: 19, className: "text-black" });
|
|
3337
3339
|
};
|
|
3338
3340
|
|
|
3339
3341
|
// src/components/UniversalDriveView.tsx
|
|
@@ -3353,6 +3355,7 @@ var UniversalDriveView = ({
|
|
|
3353
3355
|
onMoveToTrash,
|
|
3354
3356
|
onClearUploadQueue,
|
|
3355
3357
|
onPageChange,
|
|
3358
|
+
onRefresh,
|
|
3356
3359
|
onFetchFoldersForExplorer,
|
|
3357
3360
|
onExecuteMoveCopy,
|
|
3358
3361
|
onOpenFile,
|
|
@@ -3389,11 +3392,7 @@ var UniversalDriveView = ({
|
|
|
3389
3392
|
return parseFloat((num / Math.pow(k, i)).toFixed(1)) + " " + sizes[i];
|
|
3390
3393
|
};
|
|
3391
3394
|
const formatDate3 = (dateString) => {
|
|
3392
|
-
return new Date(dateString).toLocaleDateString("en-US", {
|
|
3393
|
-
month: "short",
|
|
3394
|
-
day: "numeric",
|
|
3395
|
-
year: "numeric"
|
|
3396
|
-
});
|
|
3395
|
+
return new Date(dateString).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
|
|
3397
3396
|
};
|
|
3398
3397
|
const handleRowClick = (id, e) => {
|
|
3399
3398
|
if (e.ctrlKey || e.metaKey) {
|
|
@@ -3402,6 +3401,10 @@ var UniversalDriveView = ({
|
|
|
3402
3401
|
setSelectedIds([id]);
|
|
3403
3402
|
}
|
|
3404
3403
|
};
|
|
3404
|
+
const handleSelectAll = () => {
|
|
3405
|
+
if (selectedIds.length === items.length && items.length > 0) setSelectedIds([]);
|
|
3406
|
+
else setSelectedIds(items.map((i) => i.id));
|
|
3407
|
+
};
|
|
3405
3408
|
const handleItemDoubleClick = (item) => {
|
|
3406
3409
|
if (item.type === "FOLDER") {
|
|
3407
3410
|
setSelectedIds([]);
|
|
@@ -3431,26 +3434,26 @@ var UniversalDriveView = ({
|
|
|
3431
3434
|
const globalProgress = uploadQueue.length > 0 ? Math.round(uploadQueue.reduce((acc, job) => acc + job.progress, 0) / (uploadQueue.length * 100) * 100) : 0;
|
|
3432
3435
|
const isUILocked = isLoading || isSubmitting;
|
|
3433
3436
|
const lockClass = isUILocked ? "pointer-events-none opacity-60" : "";
|
|
3434
|
-
return /* @__PURE__ */ React40.createElement("div", { className: "flex flex-col gap-6 max-w-5xl w-full mx-auto p-6 bg-white rounded-2xl animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React40.createElement(ManagedToaster, null), /* @__PURE__ */ React40.createElement("div", { className: `flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-4 border-b border-neutral-100 transition-opacity ${lockClass}` }, /* @__PURE__ */ React40.createElement("div", null, /* @__PURE__ */ React40.createElement("h1", { className: "text-xl text-black tracking-tight mb-1" }, "Drive"), /* @__PURE__ */ React40.createElement("p", { className: "text-xs text-neutral-500" }, "Secure cloud storage optimized for your workspace.")), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-2 shrink-0" }, selectedIds.length > 0 && /* @__PURE__ */ React40.createElement(React40.Fragment, null, selectedIds.length === 1 && /* @__PURE__ */ React40.createElement("button", { onClick: () => {
|
|
3437
|
+
return /* @__PURE__ */ React40.createElement("div", { className: "flex flex-col gap-6 max-w-5xl w-full mx-auto p-6 bg-white rounded-2xl animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React40.createElement(ManagedToaster, null), /* @__PURE__ */ React40.createElement("div", { className: `flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-4 border-b border-neutral-100 transition-opacity ${lockClass}` }, /* @__PURE__ */ React40.createElement("div", null, /* @__PURE__ */ React40.createElement("h1", { className: "text-xl text-black tracking-tight mb-1" }, "Drive"), /* @__PURE__ */ React40.createElement("p", { className: "text-xs text-neutral-500" }, "Secure cloud storage optimized for your workspace.")), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-2 shrink-0" }, /* @__PURE__ */ React40.createElement("button", { onClick: onRefresh, title: "Refresh Directory", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: RefreshIcon, size: 18 })), /* @__PURE__ */ React40.createElement("div", { className: "w-px h-6 bg-neutral-200 mx-1" }), selectedIds.length > 0 && /* @__PURE__ */ React40.createElement(React40.Fragment, null, selectedIds.length === 1 && /* @__PURE__ */ React40.createElement("button", { onClick: () => {
|
|
3435
3438
|
const item = items.find((i) => i.id === selectedIds[0]);
|
|
3436
3439
|
if (item) setRenameModal({ isOpen: true, id: item.id, name: item.name });
|
|
3437
3440
|
setFolderInputVal(item?.name || "");
|
|
3438
|
-
}, title: "Rename", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: FileEditIcon, size: 18 })), /* @__PURE__ */ React40.createElement("button", { onClick: () => onShareItems(items.filter((i) => selectedIds.includes(i.id))), title: "Share", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon:
|
|
3441
|
+
}, title: "Rename", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: FileEditIcon, size: 18 })), /* @__PURE__ */ React40.createElement("button", { onClick: () => onShareItems(items.filter((i) => selectedIds.includes(i.id))), title: "Share", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Share03Icon, size: 18 })), /* @__PURE__ */ React40.createElement("button", { onClick: () => openExplorer("copy"), title: "Copy", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Copy01Icon, size: 18 })), /* @__PURE__ */ React40.createElement("button", { onClick: () => openExplorer("move"), title: "Move", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: ArrowRight02Icon, size: 18 })), /* @__PURE__ */ React40.createElement("div", { className: "w-px h-6 bg-neutral-200 mx-1" })), /* @__PURE__ */ React40.createElement("button", { onClick: () => {
|
|
3439
3442
|
setFolderInputVal("");
|
|
3440
3443
|
setIsNewFolderModalOpen(true);
|
|
3441
|
-
}, title: "New Folder", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: FolderAddIcon, size: 18 })), /* @__PURE__ */ React40.createElement("label", { title: "Upload Files", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full cursor-pointer transition-all" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon:
|
|
3444
|
+
}, title: "New Folder", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: FolderAddIcon, size: 18 })), /* @__PURE__ */ React40.createElement("label", { title: "Upload Files", className: "p-2.5 bg-neutral-50 text-neutral-500 hover:text-black hover:bg-neutral-100 rounded-full cursor-pointer transition-all" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: CloudUploadIcon, size: 18 }), /* @__PURE__ */ React40.createElement("input", { type: "file", multiple: true, className: "hidden", onChange: (e) => e.target.files && onUploadFiles(e.target.files) })))), /* @__PURE__ */ React40.createElement("div", { className: `flex flex-col sm:flex-row sm:items-center justify-between gap-4 ${lockClass}` }, /* @__PURE__ */ React40.createElement("div", { className: "w-full sm:max-w-xs relative" }, /* @__PURE__ */ React40.createElement("input", { type: "text", placeholder: "Search Drive...", value: localSearch, onChange: (e) => setLocalSearch(e.target.value), className: "w-full pl-4 pr-10 py-2.5 text-xs border border-neutral-100 rounded-full outline-none focus:border-black transition-colors" })), selectedIds.length > 0 && /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-3 bg-neutral-50 px-4 py-2 rounded-full animate-in fade-in duration-200" }, /* @__PURE__ */ React40.createElement("span", { className: "text-[11px] tracking-widest text-neutral-500 uppercase" }, selectedIds.length, " Selected"), /* @__PURE__ */ React40.createElement("button", { onClick: () => {
|
|
3442
3445
|
onMoveToTrash(selectedIds);
|
|
3443
3446
|
setSelectedIds([]);
|
|
3444
|
-
}, className: "text-neutral-500 hover:text-red-600 p-1 flex items-center gap-1.5 text-xs outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Delete02Icon2, size: 14 }), " Move to Trash"))), /* @__PURE__ */ React40.createElement("div", { className: `flex items-center gap-1.5 overflow-x-auto text-xs py-1
|
|
3447
|
+
}, className: "text-neutral-500 hover:text-red-600 p-1 flex items-center gap-1.5 text-xs outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Delete02Icon2, size: 14 }), " Move to Trash"))), /* @__PURE__ */ React40.createElement("div", { className: `flex items-center gap-1.5 overflow-x-auto text-xs py-1 text-neutral-400 whitespace-nowrap ${lockClass}` }, folderBreadcrumbs.map((crumb, idx) => /* @__PURE__ */ React40.createElement(React40.Fragment, { key: idx }, idx > 0 && /* @__PURE__ */ React40.createElement("span", null, "/"), /* @__PURE__ */ React40.createElement("button", { onClick: () => {
|
|
3445
3448
|
setSelectedIds([]);
|
|
3446
3449
|
onNavigateFolder(crumb.id);
|
|
3447
|
-
}, className: `hover:text-black transition-colors outline-none ${idx === folderBreadcrumbs.length - 1 ? "text-black
|
|
3450
|
+
}, className: `hover:text-black transition-colors outline-none ${idx === folderBreadcrumbs.length - 1 ? "text-black " : ""}` }, crumb.name)))), /* @__PURE__ */ React40.createElement("div", { className: `w-full overflow-x-auto select-none flex-1 relative min-h-75 ${lockClass}` }, /* @__PURE__ */ React40.createElement("table", { className: "w-full text-left border-collapse min-w-full relative z-10" }, /* @__PURE__ */ React40.createElement("thead", null, /* @__PURE__ */ React40.createElement("tr", { className: "border-b border-neutral-100 bg-white" }, /* @__PURE__ */ React40.createElement("th", { className: "w-10 p-3" }, /* @__PURE__ */ React40.createElement("input", { type: "checkbox", checked: selectedIds.length === items.length && items.length > 0, onChange: () => items.length > 0 && (selectedIds.length === items.length ? setSelectedIds([]) : setSelectedIds(items.map((i) => i.id))), className: "rounded border-neutral-300 w-4 h-4 text-black focus:ring-black accent-black cursor-pointer" })), /* @__PURE__ */ React40.createElement("th", { className: "text-[11px] font-light tracking-[0.2em] text-neutral-400 p-3" }, "Name"), /* @__PURE__ */ React40.createElement("th", { className: "text-[11px] font-light tracking-[0.2em] text-neutral-400 p-3" }, "Modified"), /* @__PURE__ */ React40.createElement("th", { className: "text-[11px] font-light tracking-[0.2em] text-neutral-400 p-3 text-right" }, "Size"))), /* @__PURE__ */ React40.createElement("tbody", { className: "divide-y divide-neutral-50" }, items.length === 0 && !isLoading && /* @__PURE__ */ React40.createElement("tr", null, /* @__PURE__ */ React40.createElement("td", { colSpan: 4, className: "py-24 text-center" }, /* @__PURE__ */ React40.createElement("div", { className: "flex flex-col items-center justify-center" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: FolderIcon2, size: 40, className: "text-neutral-200 mb-3" }), /* @__PURE__ */ React40.createElement("p", { className: "text-xs text-neutral-400" }, "This directory is empty.")))), items.map((item) => {
|
|
3448
3451
|
const isChecked = selectedIds.includes(item.id);
|
|
3449
3452
|
return /* @__PURE__ */ React40.createElement("tr", { key: item.id, onClick: (e) => handleRowClick(item.id, e), onDoubleClick: () => handleItemDoubleClick(item), onContextMenu: (e) => {
|
|
3450
3453
|
e.preventDefault();
|
|
3451
3454
|
setSelectedIds([item.id]);
|
|
3452
|
-
}, className: `hover:bg-neutral-50/70 transition-colors cursor-pointer group ${isChecked ? "bg-neutral-50" : ""}` }, /* @__PURE__ */ React40.createElement("td", { className: "p-3", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React40.createElement("input", { type: "checkbox", checked: isChecked, onChange: () => handleRowClick(item.id, { ctrlKey: true }), className: "rounded border-neutral-300 w-4 h-4 text-black focus:ring-black accent-black cursor-pointer" })), /* @__PURE__ */ React40.createElement("td", { className: "p-3 flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React40.createElement("div", { className: "w-
|
|
3453
|
-
})))
|
|
3455
|
+
}, className: `hover:bg-neutral-50/70 transition-colors cursor-pointer group ${isChecked ? "bg-neutral-50" : ""}` }, /* @__PURE__ */ React40.createElement("td", { className: "p-3", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React40.createElement("input", { type: "checkbox", checked: isChecked, onChange: () => handleRowClick(item.id, { ctrlKey: true }), className: "rounded border-neutral-300 w-4 h-4 text-black focus:ring-black accent-black cursor-pointer" })), /* @__PURE__ */ React40.createElement("td", { className: "p-3 flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React40.createElement("div", { className: "w-9 h-9 shrink-0 flex items-center justify-center relative" }, /* @__PURE__ */ React40.createElement(FileIconMapper, { type: item.type, mimeType: item.mimeType })), /* @__PURE__ */ React40.createElement("span", { className: "text-xs text-black truncate pr-4" }, item.name)), /* @__PURE__ */ React40.createElement("td", { className: "p-3 text-xs text-neutral-500 whitespace-nowrap" }, formatDate3(item.updatedAt)), /* @__PURE__ */ React40.createElement("td", { className: "p-3 text-xs text-neutral-500 text-right whitespace-nowrap" }, formatBytes(item.size)));
|
|
3456
|
+
}))), isLoading && /* @__PURE__ */ React40.createElement("div", { className: "absolute inset-0 top-12 z-20 bg-white flex items-start justify-center pt-20" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Loading03Icon12, className: "animate-spin text-neutral-400", size: 24 }))), /* @__PURE__ */ React40.createElement("div", { className: `flex items-center justify-between pt-4 ${lockClass}` }, /* @__PURE__ */ React40.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] " }, "Page ", currentPage, " of ", Math.max(1, totalPages)), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React40.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage <= 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black disabled:opacity-30 transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: ArrowLeft01Icon8, size: 14 })), /* @__PURE__ */ React40.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black disabled:opacity-30 transition-all outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: ArrowRight01Icon7, size: 14 })))), activeJobs.length > 0 && /* @__PURE__ */ React40.createElement("div", { className: "fixed bottom-6 right-6 w-80 bg-white shadow-2xl rounded-xl z-100 overflow-hidden flex flex-col animate-in slide-in-from-bottom-4 duration-300" }, /* @__PURE__ */ React40.createElement("div", { className: "p-4 bg-neutral-50 flex items-center justify-between" }, /* @__PURE__ */ React40.createElement("div", null, /* @__PURE__ */ React40.createElement("h4", { className: "text-xs text-black " }, "Uploading Elements"), /* @__PURE__ */ React40.createElement("p", { className: "text-[10px] text-neutral-500 mt-0.5" }, "Processing ", activeJobs.length, " streams")), onClearUploadQueue && activeJobs.length === 0 && /* @__PURE__ */ React40.createElement("button", { onClick: onClearUploadQueue, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Cancel01Icon3, size: 14 }))), /* @__PURE__ */ React40.createElement("div", { className: "w-full h-1 bg-neutral-100 relative" }, /* @__PURE__ */ React40.createElement("div", { className: "h-full transition-all duration-500 ease-out", style: { width: `${globalProgress}%`, background: "linear-gradient(to right, #f64b4d, #ffa360)" } })), /* @__PURE__ */ React40.createElement("div", { className: "max-h-40 overflow-y-auto p-2" }, uploadQueue.map((job) => /* @__PURE__ */ React40.createElement("div", { key: job.id, className: "flex items-center justify-between p-2 text-[11px] gap-4" }, /* @__PURE__ */ React40.createElement("span", { className: "text-black truncate flex-1 pr-2" }, job.name), /* @__PURE__ */ React40.createElement("div", { className: "shrink-0 whitespace-nowrap flex items-center gap-2" }, job.status === "COMPLETED" ? /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Tick01Icon, size: 12, className: "text-green-600" }) : job.status === "FAILED" ? /* @__PURE__ */ React40.createElement("span", { className: "text-red-600 text-[10px]" }, "Failed") : /* @__PURE__ */ React40.createElement("span", { className: "text-neutral-500 text-[10px]" }, job.progress, "%")))))), (isNewFolderModalOpen || renameModal.isOpen) && /* @__PURE__ */ React40.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React40.createElement("div", { className: "absolute inset-0 bg-black/30 ", onClick: () => !isSubmitting && (setIsNewFolderModalOpen(false), setRenameModal({ isOpen: false, id: "", name: "" })) }), /* @__PURE__ */ React40.createElement("form", { onSubmit: async (e) => {
|
|
3454
3457
|
e.preventDefault();
|
|
3455
3458
|
if (!folderInputVal.trim() || isSubmitting) return;
|
|
3456
3459
|
setIsSubmitting(true);
|
|
@@ -3463,7 +3466,7 @@ var UniversalDriveView = ({
|
|
|
3463
3466
|
}, className: "relative w-full max-w-sm bg-white shadow-2xl rounded-2xl p-8 flex flex-col gap-6 animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React40.createElement("div", null, /* @__PURE__ */ React40.createElement("h3", { className: "text-lg text-black tracking-tight mb-1" }, isNewFolderModalOpen ? "Create Directory" : "Rename Element"), /* @__PURE__ */ React40.createElement("p", { className: "text-[11px] text-neutral-400" }, "Please provide a valid alphanumeric name.")), /* @__PURE__ */ React40.createElement(TextInput, { placeholder: "Name (e.g., Q3 Invoices)", value: folderInputVal, onChange: setFolderInputVal }), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center justify-end gap-3 mt-2" }, /* @__PURE__ */ React40.createElement("button", { type: "button", onClick: () => {
|
|
3464
3467
|
setIsNewFolderModalOpen(false);
|
|
3465
3468
|
setRenameModal({ isOpen: false, id: "", name: "" });
|
|
3466
|
-
}, disabled: isSubmitting, className: "px-6 py-2.5 text-xs text-neutral-500 hover:bg-neutral-50 rounded-full outline-none disabled:opacity-50 transition-colors" }, "Cancel"), /* @__PURE__ */ React40.createElement(ThreeDActionButton, { type: "submit", isLoading: isSubmitting, disabled: !folderInputVal.trim() }, isNewFolderModalOpen ? "Create" : "Rename")))), explorer.isOpen && /* @__PURE__ */ React40.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4" }, /* @__PURE__ */ React40.createElement("div", { className: "absolute inset-0 bg-black/40
|
|
3469
|
+
}, disabled: isSubmitting, className: "px-6 py-2.5 text-xs text-neutral-500 hover:bg-neutral-50 rounded-full outline-none disabled:opacity-50 transition-colors" }, "Cancel"), /* @__PURE__ */ React40.createElement(ThreeDActionButton, { type: "submit", isLoading: isSubmitting, disabled: !folderInputVal.trim() }, isNewFolderModalOpen ? "Create" : "Rename")))), explorer.isOpen && /* @__PURE__ */ React40.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4" }, /* @__PURE__ */ React40.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isSubmitting && setExplorer((p) => ({ ...p, isOpen: false })) }), /* @__PURE__ */ React40.createElement("div", { className: "relative w-full max-w-md bg-white shadow-2xl rounded-2xl p-6 flex flex-col gap-4 animate-in zoom-in-95 duration-200 min-h-100" }, /* @__PURE__ */ React40.createElement("div", null, /* @__PURE__ */ React40.createElement("h3", { className: "text-lg text-black tracking-tight mb-1 capitalize" }, explorer.action, " Items"), /* @__PURE__ */ React40.createElement("p", { className: "text-[11px] text-neutral-400" }, "Select destination directory.")), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-1.5 overflow-x-auto text-xs py-2 text-neutral-400 whitespace-nowrap" }, explorer.breadcrumbs.map((crumb, idx) => /* @__PURE__ */ React40.createElement(React40.Fragment, { key: idx }, idx > 0 && /* @__PURE__ */ React40.createElement("span", null, "/"), /* @__PURE__ */ React40.createElement("button", { disabled: explorer.loading, onClick: () => navigateExplorer(crumb.id), className: `hover:text-black outline-none ${idx === explorer.breadcrumbs.length - 1 ? "text-black " : ""}` }, crumb.name)))), /* @__PURE__ */ React40.createElement("div", { className: "flex-1 overflow-y-auto rounded-xl" }, explorer.loading ? /* @__PURE__ */ React40.createElement("div", { className: "h-full flex items-center justify-center p-10" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: Loading03Icon12, className: "animate-spin text-neutral-400", size: 20 })) : explorer.folders.length === 0 ? /* @__PURE__ */ React40.createElement("div", { className: "h-full flex items-center justify-center p-10 text-xs text-neutral-400" }, "No sub-directories.") : /* @__PURE__ */ React40.createElement("div", { className: "divide-y divide-neutral-50" }, explorer.folders.map((f) => /* @__PURE__ */ React40.createElement("div", { key: f.id, onClick: () => navigateExplorer(f.id), className: "flex items-center gap-3 p-3 hover:bg-neutral-50 cursor-pointer transition-colors" }, /* @__PURE__ */ React40.createElement(HugeiconsIcon26, { icon: FolderIcon2, size: 16, className: "text-black" }), /* @__PURE__ */ React40.createElement("span", { className: "text-sm text-black truncate" }, f.name))))), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center justify-end gap-3 mt-2" }, /* @__PURE__ */ React40.createElement("button", { onClick: () => setExplorer((p) => ({ ...p, isOpen: false })), disabled: isSubmitting, className: "px-6 py-2.5 text-xs text-neutral-500 hover:bg-neutral-50 rounded-full outline-none disabled:opacity-50 transition-colors" }, "Cancel"), /* @__PURE__ */ React40.createElement(ThreeDActionButton, { onClick: executeExplorerAction, isLoading: isSubmitting }, "Paste Here")))));
|
|
3467
3470
|
};
|
|
3468
3471
|
|
|
3469
3472
|
// src/components/DriveItemOpener.tsx
|
|
@@ -3494,7 +3497,7 @@ var DriveItemOpener = ({ item, onClose }) => {
|
|
|
3494
3497
|
import React42 from "react";
|
|
3495
3498
|
var DriveShareModal = ({ items, onClose }) => {
|
|
3496
3499
|
if (!items || items.length === 0) return null;
|
|
3497
|
-
return /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 bg-black/30
|
|
3500
|
+
return /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 bg-black/30 animate-in fade-in duration-200" }, /* @__PURE__ */ React42.createElement("div", { className: "bg-white w-full max-w-md rounded-2xl p-6 shadow-2xl flex flex-col gap-6 animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React42.createElement("div", null, /* @__PURE__ */ React42.createElement("h3", { className: "text-lg text-black tracking-tight mb-1" }, "Share Access"), /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-neutral-500" }, "Managing permissions for ", items.length, " selected item(s).")), /* @__PURE__ */ React42.createElement("div", { className: "flex justify-end gap-3 mt-2" }, /* @__PURE__ */ React42.createElement(
|
|
3498
3501
|
"button",
|
|
3499
3502
|
{
|
|
3500
3503
|
onClick: onClose,
|
|
@@ -3537,13 +3540,13 @@ var AiStageCheck = ({ tasks }) => {
|
|
|
3537
3540
|
// src/components/Stagger.tsx
|
|
3538
3541
|
import React45 from "react";
|
|
3539
3542
|
import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
|
|
3540
|
-
import { Briefcase02Icon, Upload01Icon as Upload01Icon2, FileSyncIcon, CloudUploadIcon } from "@hugeicons/core-free-icons";
|
|
3543
|
+
import { Briefcase02Icon, Upload01Icon as Upload01Icon2, FileSyncIcon, CloudUploadIcon as CloudUploadIcon2 } from "@hugeicons/core-free-icons";
|
|
3541
3544
|
var Stagger = ({ steps, currentStep }) => {
|
|
3542
3545
|
const getIconForStep = (stepName) => {
|
|
3543
3546
|
const lowerName = stepName.toLowerCase();
|
|
3544
3547
|
if (lowerName.includes("document")) return Upload01Icon2;
|
|
3545
3548
|
if (lowerName.includes("review")) return FileSyncIcon;
|
|
3546
|
-
if (lowerName.includes("submit")) return
|
|
3549
|
+
if (lowerName.includes("submit")) return CloudUploadIcon2;
|
|
3547
3550
|
return Briefcase02Icon;
|
|
3548
3551
|
};
|
|
3549
3552
|
return /* @__PURE__ */ React45.createElement("div", { className: "w-full flex items-center justify-between relative z-0" }, /* @__PURE__ */ React45.createElement("div", { className: "absolute left-0 top-1/2 -translate-y-1/2 w-full h-px bg-neutral-100 -z-10" }), /* @__PURE__ */ React45.createElement("div", { className: "absolute left-0 top-1/2 -translate-y-1/2 h-px bg-emerald-500 -z-10 transition-all duration-500", style: { width: `${currentStep / (steps.length - 1) * 100}%` } }), steps.map((step, idx) => {
|