@unciatech/file-manager 0.0.26 → 0.0.27
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.cjs +470 -512
- package/dist/index.js +464 -506
- package/dist/styles.css +1 -3
- package/package.json +2 -2
- package/styles.css +1 -3
package/dist/index.cjs
CHANGED
|
@@ -3256,7 +3256,7 @@ function VideoCardMetadata({ file }) {
|
|
|
3256
3256
|
|
|
3257
3257
|
// components/cards/audio-card.tsx
|
|
3258
3258
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
3259
|
-
function AudioCard({ className }) {
|
|
3259
|
+
function AudioCard({ file, className }) {
|
|
3260
3260
|
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-full h-full flex items-center justify-center bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "text-center", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "text-4xl", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Icons, { type: "audio", className }) }) }) });
|
|
3261
3261
|
}
|
|
3262
3262
|
function AudioCardMetadata({ file }) {
|
|
@@ -3383,9 +3383,12 @@ function UploadModal() {
|
|
|
3383
3383
|
const newUploadItems = newFiles.map((file) => {
|
|
3384
3384
|
const existingFile = uploadItems.find((existing) => existing.id === file.id);
|
|
3385
3385
|
if (existingFile) {
|
|
3386
|
-
return __spreadValues(__spreadValues({}, existingFile), file)
|
|
3386
|
+
return __spreadProps(__spreadValues(__spreadValues({}, existingFile), file), {
|
|
3387
|
+
file: file.file
|
|
3388
|
+
});
|
|
3387
3389
|
} else {
|
|
3388
3390
|
return __spreadProps(__spreadValues({}, file), {
|
|
3391
|
+
file: file.file,
|
|
3389
3392
|
progress: 100,
|
|
3390
3393
|
status: "completed"
|
|
3391
3394
|
});
|
|
@@ -4140,61 +4143,8 @@ function MoveModal() {
|
|
|
4140
4143
|
// components/modals/image-modal.tsx
|
|
4141
4144
|
var import_react14 = require("react");
|
|
4142
4145
|
|
|
4143
|
-
// components/ui/scroll-area.tsx
|
|
4144
|
-
var import_radix_ui3 = require("radix-ui");
|
|
4145
|
-
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
4146
|
-
function ScrollArea(_a) {
|
|
4147
|
-
var _b = _a, {
|
|
4148
|
-
className,
|
|
4149
|
-
viewportClassName,
|
|
4150
|
-
children,
|
|
4151
|
-
viewportRef
|
|
4152
|
-
} = _b, props = __objRest(_b, [
|
|
4153
|
-
"className",
|
|
4154
|
-
"viewportClassName",
|
|
4155
|
-
"children",
|
|
4156
|
-
"viewportRef"
|
|
4157
|
-
]);
|
|
4158
|
-
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_radix_ui3.ScrollArea.Root, __spreadProps(__spreadValues({ "data-slot": "scroll-area", className: cn("relative overflow-hidden", className) }, props), { children: [
|
|
4159
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
4160
|
-
import_radix_ui3.ScrollArea.Viewport,
|
|
4161
|
-
{
|
|
4162
|
-
ref: viewportRef,
|
|
4163
|
-
className: cn("h-full w-full rounded-[inherit]", viewportClassName),
|
|
4164
|
-
children
|
|
4165
|
-
}
|
|
4166
|
-
),
|
|
4167
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ScrollBar, {}),
|
|
4168
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_radix_ui3.ScrollArea.Corner, {})
|
|
4169
|
-
] }));
|
|
4170
|
-
}
|
|
4171
|
-
function ScrollBar(_a) {
|
|
4172
|
-
var _b = _a, {
|
|
4173
|
-
className,
|
|
4174
|
-
orientation = "vertical"
|
|
4175
|
-
} = _b, props = __objRest(_b, [
|
|
4176
|
-
"className",
|
|
4177
|
-
"orientation"
|
|
4178
|
-
]);
|
|
4179
|
-
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
4180
|
-
import_radix_ui3.ScrollArea.ScrollAreaScrollbar,
|
|
4181
|
-
__spreadProps(__spreadValues({
|
|
4182
|
-
"data-slot": "scroll-area-scrollbar",
|
|
4183
|
-
orientation,
|
|
4184
|
-
className: cn(
|
|
4185
|
-
"flex touch-none select-none transition-colors",
|
|
4186
|
-
orientation === "vertical" && "h-full w-2 border-l border-l-transparent p-[1px]",
|
|
4187
|
-
orientation === "horizontal" && "h-2 flex-col border-t border-t-transparent p-[1px]",
|
|
4188
|
-
className
|
|
4189
|
-
)
|
|
4190
|
-
}, props), {
|
|
4191
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_radix_ui3.ScrollArea.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
4192
|
-
})
|
|
4193
|
-
);
|
|
4194
|
-
}
|
|
4195
|
-
|
|
4196
4146
|
// components/file-details/details-layout.tsx
|
|
4197
|
-
var
|
|
4147
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
4198
4148
|
function DetailsLayout({
|
|
4199
4149
|
title,
|
|
4200
4150
|
open,
|
|
@@ -4203,26 +4153,34 @@ function DetailsLayout({
|
|
|
4203
4153
|
metadataSection,
|
|
4204
4154
|
footer
|
|
4205
4155
|
}) {
|
|
4206
|
-
return /* @__PURE__ */ (0,
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Dialog, { open, onOpenChange: (isOpen) => !isOpen && onClose(), children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
4157
|
+
DialogContent,
|
|
4158
|
+
{
|
|
4159
|
+
className: "p-0 max-w-6xl w-full m-auto h-[80vh] flex flex-col overflow-hidden",
|
|
4160
|
+
variant: "fullscreen",
|
|
4161
|
+
showCloseButton: false,
|
|
4162
|
+
children: [
|
|
4163
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DialogHeader, { className: "pt-5 pb-3 border-b border-border shrink-0", children: [
|
|
4164
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DialogTitle, { className: "px-6 text-base", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex w-full items-center justify-between gap-2", children: [
|
|
4165
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "truncate", children: title }),
|
|
4166
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(CloseButton, { onClick: onClose })
|
|
4167
|
+
] }) }),
|
|
4168
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DialogDescription, {})
|
|
4169
|
+
] }),
|
|
4170
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "flex-1 min-h-0", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "grid grid-cols-1 lg:grid-cols-2 h-full", children: [
|
|
4171
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "p-6 border-b lg:border-b-0 lg:border-r border-slate-200 dark:border-zinc-700 overflow-auto", children: previewSection }),
|
|
4172
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "p-6 overflow-auto", children: metadataSection })
|
|
4173
|
+
] }) }),
|
|
4174
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DialogFooter, { className: "px-6 py-4 border-t border-border shrink-0", children: footer })
|
|
4175
|
+
]
|
|
4176
|
+
}
|
|
4177
|
+
) });
|
|
4220
4178
|
}
|
|
4221
4179
|
|
|
4222
4180
|
// components/file-details/file-action-buttons.tsx
|
|
4223
4181
|
var import_sonner3 = require("sonner");
|
|
4224
4182
|
var import_react12 = require("react");
|
|
4225
|
-
var
|
|
4183
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
4226
4184
|
function FileDeleteButton({ file }) {
|
|
4227
4185
|
const { provider, setFileDetailsModalFile, refreshData } = useFileManager();
|
|
4228
4186
|
const [deleting, setDeleting] = (0, import_react12.useState)(false);
|
|
@@ -4240,7 +4198,7 @@ function FileDeleteButton({ file }) {
|
|
|
4240
4198
|
setDeleting(false);
|
|
4241
4199
|
}
|
|
4242
4200
|
};
|
|
4243
|
-
return /* @__PURE__ */ (0,
|
|
4201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4244
4202
|
Button,
|
|
4245
4203
|
{
|
|
4246
4204
|
variant: "outline",
|
|
@@ -4250,7 +4208,7 @@ function FileDeleteButton({ file }) {
|
|
|
4250
4208
|
className: "border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 hover:text-red-600 dark:hover:text-red-400 hover:border-red-300 dark:hover:border-red-700 hover:bg-red-50 dark:hover:bg-red-900/40 active:scale-95 transition-all duration-200",
|
|
4251
4209
|
onClick: handleDelete,
|
|
4252
4210
|
disabled: deleting,
|
|
4253
|
-
children: deleting ? /* @__PURE__ */ (0,
|
|
4211
|
+
children: deleting ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Loader2Icon, { className: "size-5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TrashIcon, { className: "size-5" })
|
|
4254
4212
|
}
|
|
4255
4213
|
);
|
|
4256
4214
|
}
|
|
@@ -4272,7 +4230,7 @@ function FileDownloadButton({ file }) {
|
|
|
4272
4230
|
setDownloading(false);
|
|
4273
4231
|
}
|
|
4274
4232
|
};
|
|
4275
|
-
return /* @__PURE__ */ (0,
|
|
4233
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4276
4234
|
Button,
|
|
4277
4235
|
{
|
|
4278
4236
|
variant: "outline",
|
|
@@ -4282,7 +4240,7 @@ function FileDownloadButton({ file }) {
|
|
|
4282
4240
|
className: "border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 hover:text-blue-600 dark:hover:text-blue-400 hover:border-blue-300 dark:hover:border-blue-700 hover:bg-blue-50 dark:hover:bg-blue-900/40 active:scale-95 transition-all duration-200",
|
|
4283
4241
|
title: "Download",
|
|
4284
4242
|
disabled: downloading,
|
|
4285
|
-
children: downloading ? /* @__PURE__ */ (0,
|
|
4243
|
+
children: downloading ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Loader2Icon, { className: "size-5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(DownloadIcon, { className: "size-5", strokeWidth: 2.5 })
|
|
4286
4244
|
}
|
|
4287
4245
|
);
|
|
4288
4246
|
}
|
|
@@ -4300,7 +4258,7 @@ function FileCopyLinkButton({ file }) {
|
|
|
4300
4258
|
import_sonner3.toast.error("Failed to copy link");
|
|
4301
4259
|
}
|
|
4302
4260
|
};
|
|
4303
|
-
return /* @__PURE__ */ (0,
|
|
4261
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4304
4262
|
Button,
|
|
4305
4263
|
{
|
|
4306
4264
|
variant: "outline",
|
|
@@ -4311,12 +4269,12 @@ function FileCopyLinkButton({ file }) {
|
|
|
4311
4269
|
${copied ? "text-green-700 dark:text-green-400 border-green-400 dark:border-green-700 bg-green-100 dark:bg-green-900/40 font-bold" : "hover:text-orange-600 dark:hover:text-orange-400 hover:border-orange-300 dark:hover:border-orange-700 hover:bg-orange-50 dark:hover:bg-orange-900/40"}`,
|
|
4312
4270
|
title: "Copy Link",
|
|
4313
4271
|
disabled: copied,
|
|
4314
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
4272
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CheckIcon, { className: "size-5 animate-in zoom-in duration-200", strokeWidth: 3 }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LinkIcon, { className: "size-5", strokeWidth: 2.5 })
|
|
4315
4273
|
}
|
|
4316
4274
|
);
|
|
4317
4275
|
}
|
|
4318
4276
|
function FileFullscreenButton({ onFullscreen }) {
|
|
4319
|
-
return /* @__PURE__ */ (0,
|
|
4277
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4320
4278
|
Button,
|
|
4321
4279
|
{
|
|
4322
4280
|
variant: "outline",
|
|
@@ -4325,14 +4283,14 @@ function FileFullscreenButton({ onFullscreen }) {
|
|
|
4325
4283
|
onClick: onFullscreen,
|
|
4326
4284
|
className: "border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 hover:text-purple-600 dark:hover:text-purple-400 hover:border-purple-300 dark:hover:border-purple-700 hover:bg-purple-50 dark:hover:bg-purple-900/40 active:scale-95 transition-all duration-200",
|
|
4327
4285
|
title: "Fullscreen",
|
|
4328
|
-
children: /* @__PURE__ */ (0,
|
|
4286
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(FullscreenIcon, { className: "size-5", strokeWidth: 1 })
|
|
4329
4287
|
}
|
|
4330
4288
|
);
|
|
4331
4289
|
}
|
|
4332
4290
|
|
|
4333
4291
|
// components/ui/textarea.tsx
|
|
4334
4292
|
var import_class_variance_authority5 = require("class-variance-authority");
|
|
4335
|
-
var
|
|
4293
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
4336
4294
|
var textareaVariants = (0, import_class_variance_authority5.cva)(
|
|
4337
4295
|
`
|
|
4338
4296
|
w-full bg-background border border-input bg-background text-foreground shadow-xs shadow-black/5 transition-[color,box-shadow]
|
|
@@ -4361,13 +4319,13 @@ function Textarea(_a) {
|
|
|
4361
4319
|
"className",
|
|
4362
4320
|
"variant"
|
|
4363
4321
|
]);
|
|
4364
|
-
return /* @__PURE__ */ (0,
|
|
4322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("textarea", __spreadValues({ "data-slot": "textarea", className: cn(textareaVariants({ variant }), className) }, props));
|
|
4365
4323
|
}
|
|
4366
4324
|
|
|
4367
4325
|
// components/ui/label.tsx
|
|
4368
4326
|
var import_class_variance_authority6 = require("class-variance-authority");
|
|
4369
|
-
var
|
|
4370
|
-
var
|
|
4327
|
+
var import_radix_ui3 = require("radix-ui");
|
|
4328
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
4371
4329
|
var labelVariants = (0, import_class_variance_authority6.cva)(
|
|
4372
4330
|
"text-sm leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
4373
4331
|
{
|
|
@@ -4390,7 +4348,7 @@ function Label(_a) {
|
|
|
4390
4348
|
"className",
|
|
4391
4349
|
"variant"
|
|
4392
4350
|
]);
|
|
4393
|
-
return /* @__PURE__ */ (0,
|
|
4351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_radix_ui3.Label.Root, __spreadValues({ "data-slot": "label", className: cn(labelVariants({ variant }), className) }, props));
|
|
4394
4352
|
}
|
|
4395
4353
|
|
|
4396
4354
|
// lib/format-utils.ts
|
|
@@ -4410,7 +4368,7 @@ function formatDuration(seconds) {
|
|
|
4410
4368
|
// components/ui/field.tsx
|
|
4411
4369
|
var import_react13 = require("react");
|
|
4412
4370
|
var import_class_variance_authority7 = require("class-variance-authority");
|
|
4413
|
-
var
|
|
4371
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
4414
4372
|
var fieldVariants = (0, import_class_variance_authority7.cva)(
|
|
4415
4373
|
"group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
|
|
4416
4374
|
{
|
|
@@ -4442,7 +4400,7 @@ function Field(_a) {
|
|
|
4442
4400
|
"className",
|
|
4443
4401
|
"orientation"
|
|
4444
4402
|
]);
|
|
4445
|
-
return /* @__PURE__ */ (0,
|
|
4403
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
4446
4404
|
"div",
|
|
4447
4405
|
__spreadValues({
|
|
4448
4406
|
role: "group",
|
|
@@ -4458,7 +4416,7 @@ function FieldLabel(_a) {
|
|
|
4458
4416
|
} = _b, props = __objRest(_b, [
|
|
4459
4417
|
"className"
|
|
4460
4418
|
]);
|
|
4461
|
-
return /* @__PURE__ */ (0,
|
|
4419
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
4462
4420
|
Label,
|
|
4463
4421
|
__spreadValues({
|
|
4464
4422
|
"data-slot": "field-label",
|
|
@@ -4474,10 +4432,10 @@ function FieldLabel(_a) {
|
|
|
4474
4432
|
|
|
4475
4433
|
// components/ui/input-group.tsx
|
|
4476
4434
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
4477
|
-
var
|
|
4435
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
4478
4436
|
function InputGroup(_a) {
|
|
4479
4437
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4480
|
-
return /* @__PURE__ */ (0,
|
|
4438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
4481
4439
|
"div",
|
|
4482
4440
|
__spreadValues({
|
|
4483
4441
|
"data-slot": "input-group",
|
|
@@ -4523,7 +4481,7 @@ function InputGroupAddon(_a) {
|
|
|
4523
4481
|
"className",
|
|
4524
4482
|
"align"
|
|
4525
4483
|
]);
|
|
4526
|
-
return /* @__PURE__ */ (0,
|
|
4484
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
4527
4485
|
"div",
|
|
4528
4486
|
__spreadValues({
|
|
4529
4487
|
role: "group",
|
|
@@ -4558,7 +4516,7 @@ var inputGroupButtonVariants = (0, import_class_variance_authority8.cva)(
|
|
|
4558
4516
|
);
|
|
4559
4517
|
function InputGroupText(_a) {
|
|
4560
4518
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4561
|
-
return /* @__PURE__ */ (0,
|
|
4519
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
4562
4520
|
"span",
|
|
4563
4521
|
__spreadValues({
|
|
4564
4522
|
className: cn(
|
|
@@ -4574,7 +4532,7 @@ function InputGroupInput(_a) {
|
|
|
4574
4532
|
} = _b, props = __objRest(_b, [
|
|
4575
4533
|
"className"
|
|
4576
4534
|
]);
|
|
4577
|
-
return /* @__PURE__ */ (0,
|
|
4535
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
4578
4536
|
Input,
|
|
4579
4537
|
__spreadValues({
|
|
4580
4538
|
"data-slot": "input-group-control",
|
|
@@ -4587,7 +4545,7 @@ function InputGroupInput(_a) {
|
|
|
4587
4545
|
}
|
|
4588
4546
|
|
|
4589
4547
|
// components/modals/image-modal.tsx
|
|
4590
|
-
var
|
|
4548
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
4591
4549
|
function ImageModal({ file, onClose, onSave }) {
|
|
4592
4550
|
var _a;
|
|
4593
4551
|
const [isSaving, setIsSaving] = (0, import_react14.useState)(false);
|
|
@@ -4607,14 +4565,14 @@ function ImageModal({ file, onClose, onSave }) {
|
|
|
4607
4565
|
setIsSaving(false);
|
|
4608
4566
|
}
|
|
4609
4567
|
};
|
|
4610
|
-
const previewSection = /* @__PURE__ */ (0,
|
|
4611
|
-
/* @__PURE__ */ (0,
|
|
4612
|
-
/* @__PURE__ */ (0,
|
|
4613
|
-
/* @__PURE__ */ (0,
|
|
4614
|
-
/* @__PURE__ */ (0,
|
|
4615
|
-
/* @__PURE__ */ (0,
|
|
4568
|
+
const previewSection = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
4569
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex gap-2 mb-4", children: [
|
|
4570
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(FileDeleteButton, { file }),
|
|
4571
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(FileDownloadButton, { file }),
|
|
4572
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(FileCopyLinkButton, { file }),
|
|
4573
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(FileFullscreenButton, { onFullscreen: () => window.open(file.url, "_blank") })
|
|
4616
4574
|
] }),
|
|
4617
|
-
/* @__PURE__ */ (0,
|
|
4575
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
4618
4576
|
"div",
|
|
4619
4577
|
{
|
|
4620
4578
|
className: "flex-1 flex items-center justify-center bg-gray-50 rounded-lg overflow-hidden",
|
|
@@ -4628,7 +4586,7 @@ function ImageModal({ file, onClose, onSave }) {
|
|
|
4628
4586
|
backgroundSize: "20px 20px",
|
|
4629
4587
|
backgroundPosition: "0 0, 0 10px, 10px -10px, -10px 0px"
|
|
4630
4588
|
},
|
|
4631
|
-
children: /* @__PURE__ */ (0,
|
|
4589
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
4632
4590
|
"img",
|
|
4633
4591
|
{
|
|
4634
4592
|
src: file.previewUrl || file.url,
|
|
@@ -4639,36 +4597,36 @@ function ImageModal({ file, onClose, onSave }) {
|
|
|
4639
4597
|
}
|
|
4640
4598
|
)
|
|
4641
4599
|
] });
|
|
4642
|
-
const metadataSection = /* @__PURE__ */ (0,
|
|
4643
|
-
/* @__PURE__ */ (0,
|
|
4644
|
-
/* @__PURE__ */ (0,
|
|
4645
|
-
/* @__PURE__ */ (0,
|
|
4646
|
-
/* @__PURE__ */ (0,
|
|
4600
|
+
const metadataSection = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "space-y-6", children: [
|
|
4601
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
4602
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { children: [
|
|
4603
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Size" }),
|
|
4604
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-bold text-primary", children: getFileSize(file.size) })
|
|
4647
4605
|
] }),
|
|
4648
|
-
/* @__PURE__ */ (0,
|
|
4649
|
-
/* @__PURE__ */ (0,
|
|
4650
|
-
/* @__PURE__ */ (0,
|
|
4606
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { children: [
|
|
4607
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Dimensions" }),
|
|
4608
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-bold text-primary", children: file.width && file.height ? `${file.width}\xD7${file.height}` : "N/A" })
|
|
4651
4609
|
] }),
|
|
4652
|
-
/* @__PURE__ */ (0,
|
|
4653
|
-
/* @__PURE__ */ (0,
|
|
4654
|
-
/* @__PURE__ */ (0,
|
|
4610
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { children: [
|
|
4611
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Date" }),
|
|
4612
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-bold text-primary", children: formatDate(file.createdAt) })
|
|
4655
4613
|
] }),
|
|
4656
|
-
/* @__PURE__ */ (0,
|
|
4657
|
-
/* @__PURE__ */ (0,
|
|
4658
|
-
/* @__PURE__ */ (0,
|
|
4614
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { children: [
|
|
4615
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Extension" }),
|
|
4616
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs font-bold text-primary", children: ((_a = file.ext) == null ? void 0 : _a.replace(".", "")) || "N/A" })
|
|
4659
4617
|
] })
|
|
4660
4618
|
] }),
|
|
4661
|
-
/* @__PURE__ */ (0,
|
|
4662
|
-
/* @__PURE__ */ (0,
|
|
4663
|
-
/* @__PURE__ */ (0,
|
|
4664
|
-
/* @__PURE__ */ (0,
|
|
4665
|
-
/* @__PURE__ */ (0,
|
|
4666
|
-
/* @__PURE__ */ (0,
|
|
4619
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "space-y-4 pt-4 border-t border-border", children: [
|
|
4620
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "space-y-2", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Field, { className: "gap-0", children: [
|
|
4621
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(FieldLabel, { htmlFor: "fileName", children: "File name" }),
|
|
4622
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(InputGroup, { children: [
|
|
4623
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InputGroupInput, { id: "fileName", placeholder: "Enter file name", value: fileName.replace(file.ext || "", ""), onChange: (e) => setFileName(e.target.value) }),
|
|
4624
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InputGroupAddon, { align: "inline-end", className: "pr-1", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InputGroupText, { className: "font-bold bg-accent rounded-lg py-1 px-3", children: file.ext }) })
|
|
4667
4625
|
] })
|
|
4668
4626
|
] }) }),
|
|
4669
|
-
/* @__PURE__ */ (0,
|
|
4670
|
-
/* @__PURE__ */ (0,
|
|
4671
|
-
/* @__PURE__ */ (0,
|
|
4627
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "space-y-2", children: [
|
|
4628
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Label, { htmlFor: "altText", children: "Alternative text" }),
|
|
4629
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
4672
4630
|
Textarea,
|
|
4673
4631
|
{
|
|
4674
4632
|
id: "altText",
|
|
@@ -4678,11 +4636,11 @@ function ImageModal({ file, onClose, onSave }) {
|
|
|
4678
4636
|
rows: 3
|
|
4679
4637
|
}
|
|
4680
4638
|
),
|
|
4681
|
-
/* @__PURE__ */ (0,
|
|
4639
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { className: "text-xs text-muted-foreground", children: "This text will be displayed if the asset can't be shown." })
|
|
4682
4640
|
] }),
|
|
4683
|
-
/* @__PURE__ */ (0,
|
|
4684
|
-
/* @__PURE__ */ (0,
|
|
4685
|
-
/* @__PURE__ */ (0,
|
|
4641
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "space-y-2", children: [
|
|
4642
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Label, { htmlFor: "caption", children: "Caption" }),
|
|
4643
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
4686
4644
|
Textarea,
|
|
4687
4645
|
{
|
|
4688
4646
|
id: "caption",
|
|
@@ -4695,14 +4653,14 @@ function ImageModal({ file, onClose, onSave }) {
|
|
|
4695
4653
|
] })
|
|
4696
4654
|
] })
|
|
4697
4655
|
] });
|
|
4698
|
-
const footer = /* @__PURE__ */ (0,
|
|
4699
|
-
/* @__PURE__ */ (0,
|
|
4700
|
-
/* @__PURE__ */ (0,
|
|
4701
|
-
isSaving && /* @__PURE__ */ (0,
|
|
4656
|
+
const footer = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex w-full justify-between items-center flex-col sm:flex-row gap-2 ", children: [
|
|
4657
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Button, { className: "w-full md:w-auto", variant: "outline", onClick: onClose, radius: "full", disabled: isSaving, children: "Cancel" }),
|
|
4658
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { className: "w-full md:w-auto", onClick: handleSave, radius: "full", disabled: isSaving, children: [
|
|
4659
|
+
isSaving && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Loader2Icon, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
4702
4660
|
"Finish"
|
|
4703
4661
|
] })
|
|
4704
4662
|
] });
|
|
4705
|
-
return /* @__PURE__ */ (0,
|
|
4663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
4706
4664
|
DetailsLayout,
|
|
4707
4665
|
{
|
|
4708
4666
|
title: "Details",
|
|
@@ -4717,7 +4675,7 @@ function ImageModal({ file, onClose, onSave }) {
|
|
|
4717
4675
|
|
|
4718
4676
|
// components/modals/video-modal.tsx
|
|
4719
4677
|
var import_react15 = require("react");
|
|
4720
|
-
var
|
|
4678
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
4721
4679
|
function VideoModal({ file, onClose, onSave }) {
|
|
4722
4680
|
var _a, _b, _c;
|
|
4723
4681
|
const [isSaving, setIsSaving] = (0, import_react15.useState)(false);
|
|
@@ -4735,13 +4693,13 @@ function VideoModal({ file, onClose, onSave }) {
|
|
|
4735
4693
|
setIsSaving(false);
|
|
4736
4694
|
}
|
|
4737
4695
|
};
|
|
4738
|
-
const previewSection = /* @__PURE__ */ (0,
|
|
4739
|
-
/* @__PURE__ */ (0,
|
|
4740
|
-
/* @__PURE__ */ (0,
|
|
4741
|
-
/* @__PURE__ */ (0,
|
|
4742
|
-
/* @__PURE__ */ (0,
|
|
4696
|
+
const previewSection = /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
4697
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex gap-2 mb-4", children: [
|
|
4698
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FileDeleteButton, { file }),
|
|
4699
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FileDownloadButton, { file }),
|
|
4700
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FileCopyLinkButton, { file })
|
|
4743
4701
|
] }),
|
|
4744
|
-
/* @__PURE__ */ (0,
|
|
4702
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "flex-1 flex items-center justify-center bg-black rounded-lg overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
4745
4703
|
"video",
|
|
4746
4704
|
{
|
|
4747
4705
|
src: file.url,
|
|
@@ -4752,44 +4710,44 @@ function VideoModal({ file, onClose, onSave }) {
|
|
|
4752
4710
|
}
|
|
4753
4711
|
) })
|
|
4754
4712
|
] });
|
|
4755
|
-
const metadataSection = /* @__PURE__ */ (0,
|
|
4756
|
-
/* @__PURE__ */ (0,
|
|
4757
|
-
/* @__PURE__ */ (0,
|
|
4758
|
-
/* @__PURE__ */ (0,
|
|
4759
|
-
/* @__PURE__ */ (0,
|
|
4713
|
+
const metadataSection = /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "space-y-6", children: [
|
|
4714
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
4715
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { children: [
|
|
4716
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Size" }),
|
|
4717
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-bold text-primary", children: getFileSize(file.size) })
|
|
4760
4718
|
] }),
|
|
4761
|
-
/* @__PURE__ */ (0,
|
|
4762
|
-
/* @__PURE__ */ (0,
|
|
4763
|
-
/* @__PURE__ */ (0,
|
|
4719
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { children: [
|
|
4720
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Dimensions" }),
|
|
4721
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-bold text-primary", children: file.width && file.height ? `${file.width}\xD7${file.height}` : "N/A" })
|
|
4764
4722
|
] }),
|
|
4765
|
-
/* @__PURE__ */ (0,
|
|
4766
|
-
/* @__PURE__ */ (0,
|
|
4767
|
-
/* @__PURE__ */ (0,
|
|
4723
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { children: [
|
|
4724
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Duration" }),
|
|
4725
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-bold text-primary", children: ((_a = file.metaData) == null ? void 0 : _a.duration) ? formatDuration(file.metaData.duration) : "N/A" })
|
|
4768
4726
|
] }),
|
|
4769
|
-
/* @__PURE__ */ (0,
|
|
4770
|
-
/* @__PURE__ */ (0,
|
|
4771
|
-
/* @__PURE__ */ (0,
|
|
4727
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { children: [
|
|
4728
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Date" }),
|
|
4729
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-bold text-primary", children: formatDate(file.createdAt) })
|
|
4772
4730
|
] }),
|
|
4773
|
-
/* @__PURE__ */ (0,
|
|
4774
|
-
/* @__PURE__ */ (0,
|
|
4775
|
-
/* @__PURE__ */ (0,
|
|
4731
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { children: [
|
|
4732
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Extension" }),
|
|
4733
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-bold text-primary", children: ((_b = file.ext) == null ? void 0 : _b.replace(".", "")) || "N/A" })
|
|
4776
4734
|
] }),
|
|
4777
|
-
/* @__PURE__ */ (0,
|
|
4778
|
-
/* @__PURE__ */ (0,
|
|
4779
|
-
/* @__PURE__ */ (0,
|
|
4735
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { children: [
|
|
4736
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Video Source" }),
|
|
4737
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "text-xs font-bold text-primary capitalize", children: ((_c = file.metaData) == null ? void 0 : _c.videoSource) || "local" })
|
|
4780
4738
|
] })
|
|
4781
4739
|
] }),
|
|
4782
|
-
/* @__PURE__ */ (0,
|
|
4783
|
-
/* @__PURE__ */ (0,
|
|
4784
|
-
/* @__PURE__ */ (0,
|
|
4785
|
-
/* @__PURE__ */ (0,
|
|
4786
|
-
/* @__PURE__ */ (0,
|
|
4787
|
-
/* @__PURE__ */ (0,
|
|
4740
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "space-y-4 pt-4 border-t border-border", children: [
|
|
4741
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "space-y-2", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Field, { className: "gap-0", children: [
|
|
4742
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FieldLabel, { htmlFor: "fileName", children: "File name" }),
|
|
4743
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(InputGroup, { children: [
|
|
4744
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(InputGroupInput, { id: "fileName", placeholder: "Enter file name", value: fileName.replace(file.ext || "", ""), onChange: (e) => setFileName(e.target.value) }),
|
|
4745
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(InputGroupAddon, { align: "inline-end", className: "pr-1", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(InputGroupText, { className: "font-bold bg-accent rounded-lg py-1 px-3", children: file.ext }) })
|
|
4788
4746
|
] })
|
|
4789
4747
|
] }) }),
|
|
4790
|
-
/* @__PURE__ */ (0,
|
|
4791
|
-
/* @__PURE__ */ (0,
|
|
4792
|
-
/* @__PURE__ */ (0,
|
|
4748
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "space-y-2", children: [
|
|
4749
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Label, { htmlFor: "caption", children: "Caption" }),
|
|
4750
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
4793
4751
|
Textarea,
|
|
4794
4752
|
{
|
|
4795
4753
|
id: "caption",
|
|
@@ -4802,14 +4760,14 @@ function VideoModal({ file, onClose, onSave }) {
|
|
|
4802
4760
|
] })
|
|
4803
4761
|
] })
|
|
4804
4762
|
] });
|
|
4805
|
-
const footer = /* @__PURE__ */ (0,
|
|
4806
|
-
/* @__PURE__ */ (0,
|
|
4807
|
-
/* @__PURE__ */ (0,
|
|
4808
|
-
isSaving && /* @__PURE__ */ (0,
|
|
4763
|
+
const footer = /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex w-full sm:justify-between justify-center items-center flex-col sm:flex-row gap-2 ", children: [
|
|
4764
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Button, { variant: "outline", onClick: onClose, radius: "full", className: "w-full md:w-auto", disabled: isSaving, children: "Cancel" }),
|
|
4765
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Button, { onClick: handleSave, radius: "full", className: "w-full md:w-auto", disabled: isSaving, children: [
|
|
4766
|
+
isSaving && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Loader2Icon, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
4809
4767
|
"Finish"
|
|
4810
4768
|
] })
|
|
4811
4769
|
] });
|
|
4812
|
-
return /* @__PURE__ */ (0,
|
|
4770
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
4813
4771
|
DetailsLayout,
|
|
4814
4772
|
{
|
|
4815
4773
|
title: "Details",
|
|
@@ -4824,7 +4782,7 @@ function VideoModal({ file, onClose, onSave }) {
|
|
|
4824
4782
|
|
|
4825
4783
|
// components/modals/audio-modal.tsx
|
|
4826
4784
|
var import_react16 = require("react");
|
|
4827
|
-
var
|
|
4785
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
4828
4786
|
function AudioModal({ file, onClose, onSave }) {
|
|
4829
4787
|
var _a, _b, _c;
|
|
4830
4788
|
const [isSaving, setIsSaving] = (0, import_react16.useState)(false);
|
|
@@ -4842,62 +4800,62 @@ function AudioModal({ file, onClose, onSave }) {
|
|
|
4842
4800
|
setIsSaving(false);
|
|
4843
4801
|
}
|
|
4844
4802
|
};
|
|
4845
|
-
const previewSection = /* @__PURE__ */ (0,
|
|
4846
|
-
/* @__PURE__ */ (0,
|
|
4847
|
-
/* @__PURE__ */ (0,
|
|
4848
|
-
/* @__PURE__ */ (0,
|
|
4849
|
-
/* @__PURE__ */ (0,
|
|
4803
|
+
const previewSection = /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
4804
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex gap-2 mb-4", children: [
|
|
4805
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(FileDeleteButton, { file }),
|
|
4806
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(FileDownloadButton, { file }),
|
|
4807
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(FileCopyLinkButton, { file })
|
|
4850
4808
|
] }),
|
|
4851
|
-
/* @__PURE__ */ (0,
|
|
4852
|
-
/* @__PURE__ */ (0,
|
|
4853
|
-
/* @__PURE__ */ (0,
|
|
4809
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex-1 flex flex-col items-center justify-center bg-linear-to-br from-purple-50 to-blue-50 dark:from-purple-950 dark:to-blue-950 rounded-lg p-8", children: [
|
|
4810
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "mb-8", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "w-32 h-32 rounded-full bg-white dark:bg-gray-800 shadow-lg flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(MusicIcon, { className: "w-16 h-16 text-purple-600 dark:text-purple-400" }) }) }),
|
|
4811
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "w-full max-w-md", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
4854
4812
|
"audio",
|
|
4855
4813
|
{
|
|
4856
4814
|
src: file.url,
|
|
4857
4815
|
controls: true,
|
|
4858
4816
|
className: "w-full",
|
|
4859
4817
|
children: [
|
|
4860
|
-
/* @__PURE__ */ (0,
|
|
4818
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("track", { kind: "captions", srcLang: "en", label: "English" }),
|
|
4861
4819
|
"Your browser does not support the audio tag."
|
|
4862
4820
|
]
|
|
4863
4821
|
}
|
|
4864
4822
|
) })
|
|
4865
4823
|
] })
|
|
4866
4824
|
] });
|
|
4867
|
-
const metadataSection = /* @__PURE__ */ (0,
|
|
4868
|
-
/* @__PURE__ */ (0,
|
|
4869
|
-
/* @__PURE__ */ (0,
|
|
4870
|
-
/* @__PURE__ */ (0,
|
|
4871
|
-
/* @__PURE__ */ (0,
|
|
4825
|
+
const metadataSection = /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "space-y-6", children: [
|
|
4826
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
4827
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { children: [
|
|
4828
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Size" }),
|
|
4829
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-bold text-primary", children: getFileSize(file.size) })
|
|
4872
4830
|
] }),
|
|
4873
|
-
/* @__PURE__ */ (0,
|
|
4874
|
-
/* @__PURE__ */ (0,
|
|
4875
|
-
/* @__PURE__ */ (0,
|
|
4831
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { children: [
|
|
4832
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Duration" }),
|
|
4833
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-bold text-primary", children: ((_a = file.metaData) == null ? void 0 : _a.duration) ? formatDuration(file.metaData.duration) : "N/A" })
|
|
4876
4834
|
] }),
|
|
4877
|
-
/* @__PURE__ */ (0,
|
|
4878
|
-
/* @__PURE__ */ (0,
|
|
4879
|
-
/* @__PURE__ */ (0,
|
|
4835
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { children: [
|
|
4836
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Bitrate" }),
|
|
4837
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-bold text-primary", children: ((_b = file.metaData) == null ? void 0 : _b.bitrate) ? `${file.metaData.bitrate} kbps` : "N/A" })
|
|
4880
4838
|
] }),
|
|
4881
|
-
/* @__PURE__ */ (0,
|
|
4882
|
-
/* @__PURE__ */ (0,
|
|
4883
|
-
/* @__PURE__ */ (0,
|
|
4839
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { children: [
|
|
4840
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Date" }),
|
|
4841
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-bold text-primary", children: formatDate(file.createdAt) })
|
|
4884
4842
|
] }),
|
|
4885
|
-
/* @__PURE__ */ (0,
|
|
4886
|
-
/* @__PURE__ */ (0,
|
|
4887
|
-
/* @__PURE__ */ (0,
|
|
4843
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { children: [
|
|
4844
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Extension" }),
|
|
4845
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs font-bold text-primary", children: ((_c = file.ext) == null ? void 0 : _c.replace(".", "")) || "N/A" })
|
|
4888
4846
|
] })
|
|
4889
4847
|
] }),
|
|
4890
|
-
/* @__PURE__ */ (0,
|
|
4891
|
-
/* @__PURE__ */ (0,
|
|
4892
|
-
/* @__PURE__ */ (0,
|
|
4893
|
-
/* @__PURE__ */ (0,
|
|
4894
|
-
/* @__PURE__ */ (0,
|
|
4895
|
-
/* @__PURE__ */ (0,
|
|
4848
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "space-y-4 pt-4 border-t border-border", children: [
|
|
4849
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "space-y-2", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Field, { className: "gap-0", children: [
|
|
4850
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(FieldLabel, { htmlFor: "fileName", children: "File name" }),
|
|
4851
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(InputGroup, { children: [
|
|
4852
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InputGroupInput, { id: "fileName", placeholder: "Enter file name", value: fileName.replace(file.ext || "", ""), onChange: (e) => setFileName(e.target.value) }),
|
|
4853
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InputGroupAddon, { align: "inline-end", className: "pr-1", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InputGroupText, { className: "font-bold bg-accent rounded-lg py-1 px-3", children: file.ext }) })
|
|
4896
4854
|
] })
|
|
4897
4855
|
] }) }),
|
|
4898
|
-
/* @__PURE__ */ (0,
|
|
4899
|
-
/* @__PURE__ */ (0,
|
|
4900
|
-
/* @__PURE__ */ (0,
|
|
4856
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "space-y-2", children: [
|
|
4857
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Label, { htmlFor: "caption", children: "Caption" }),
|
|
4858
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
4901
4859
|
Textarea,
|
|
4902
4860
|
{
|
|
4903
4861
|
id: "caption",
|
|
@@ -4910,14 +4868,14 @@ function AudioModal({ file, onClose, onSave }) {
|
|
|
4910
4868
|
] })
|
|
4911
4869
|
] })
|
|
4912
4870
|
] });
|
|
4913
|
-
const footer = /* @__PURE__ */ (0,
|
|
4914
|
-
/* @__PURE__ */ (0,
|
|
4915
|
-
/* @__PURE__ */ (0,
|
|
4916
|
-
isSaving && /* @__PURE__ */ (0,
|
|
4871
|
+
const footer = /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex gap-2 w-full sm:justify-between justify-center items-center flex-col sm:flex-row ", children: [
|
|
4872
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { variant: "outline", onClick: onClose, radius: "full", className: "w-full md:w-auto", disabled: isSaving, children: "Cancel" }),
|
|
4873
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Button, { onClick: handleSave, radius: "full", className: "w-full md:w-auto", disabled: isSaving, children: [
|
|
4874
|
+
isSaving && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Loader2Icon, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
4917
4875
|
"Finish"
|
|
4918
4876
|
] })
|
|
4919
4877
|
] });
|
|
4920
|
-
return /* @__PURE__ */ (0,
|
|
4878
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
4921
4879
|
DetailsLayout,
|
|
4922
4880
|
{
|
|
4923
4881
|
title: "Details",
|
|
@@ -4932,7 +4890,7 @@ function AudioModal({ file, onClose, onSave }) {
|
|
|
4932
4890
|
|
|
4933
4891
|
// components/modals/file-modal.tsx
|
|
4934
4892
|
var import_react17 = require("react");
|
|
4935
|
-
var
|
|
4893
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
4936
4894
|
function FileModal({ file, onClose, onSave }) {
|
|
4937
4895
|
var _a, _b, _c, _d;
|
|
4938
4896
|
const [isSaving, setIsSaving] = (0, import_react17.useState)(false);
|
|
@@ -4954,54 +4912,54 @@ function FileModal({ file, onClose, onSave }) {
|
|
|
4954
4912
|
};
|
|
4955
4913
|
const ext = ((_b = file.ext) == null ? void 0 : _b.replace(".", "")) || "file";
|
|
4956
4914
|
const { component: FilePreviewComponent } = getFileComponents(file);
|
|
4957
|
-
const previewSection = /* @__PURE__ */ (0,
|
|
4958
|
-
/* @__PURE__ */ (0,
|
|
4959
|
-
/* @__PURE__ */ (0,
|
|
4960
|
-
/* @__PURE__ */ (0,
|
|
4961
|
-
/* @__PURE__ */ (0,
|
|
4915
|
+
const previewSection = /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
4916
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex gap-2 mb-4", children: [
|
|
4917
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FileDeleteButton, { file }),
|
|
4918
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FileDownloadButton, { file }),
|
|
4919
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FileCopyLinkButton, { file })
|
|
4962
4920
|
] }),
|
|
4963
|
-
/* @__PURE__ */ (0,
|
|
4964
|
-
/* @__PURE__ */ (0,
|
|
4965
|
-
/* @__PURE__ */ (0,
|
|
4921
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex-1 flex flex-col items-center justify-center bg-linear-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800 rounded-lg p-8", children: [
|
|
4922
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-4 w-32 h-32 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FilePreviewComponent, { file, metaData: file.metaData }) }),
|
|
4923
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("p", { className: "text-sm font-medium text-muted-foreground uppercase tracking-wider", children: [
|
|
4966
4924
|
ext,
|
|
4967
4925
|
" File"
|
|
4968
4926
|
] })
|
|
4969
4927
|
] })
|
|
4970
4928
|
] });
|
|
4971
|
-
const metadataSection = /* @__PURE__ */ (0,
|
|
4972
|
-
/* @__PURE__ */ (0,
|
|
4973
|
-
/* @__PURE__ */ (0,
|
|
4974
|
-
/* @__PURE__ */ (0,
|
|
4975
|
-
/* @__PURE__ */ (0,
|
|
4929
|
+
const metadataSection = /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "space-y-6", children: [
|
|
4930
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
4931
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { children: [
|
|
4932
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Size" }),
|
|
4933
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-bold text-blue-600 dark:text-blue-400", children: getFileSize(file.size) })
|
|
4976
4934
|
] }),
|
|
4977
|
-
/* @__PURE__ */ (0,
|
|
4978
|
-
/* @__PURE__ */ (0,
|
|
4979
|
-
/* @__PURE__ */ (0,
|
|
4935
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { children: [
|
|
4936
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Date" }),
|
|
4937
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-bold text-blue-600 dark:text-blue-400", children: formatDate(file.createdAt) })
|
|
4980
4938
|
] }),
|
|
4981
|
-
/* @__PURE__ */ (0,
|
|
4982
|
-
/* @__PURE__ */ (0,
|
|
4983
|
-
/* @__PURE__ */ (0,
|
|
4939
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { children: [
|
|
4940
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-medium text-muted-foreground tracking-wide mb-1", children: "Extension" }),
|
|
4941
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-bold text-blue-600 dark:text-blue-400", children: ext })
|
|
4984
4942
|
] }),
|
|
4985
|
-
((_c = file.metaData) == null ? void 0 : _c.pageCount) && /* @__PURE__ */ (0,
|
|
4986
|
-
/* @__PURE__ */ (0,
|
|
4987
|
-
/* @__PURE__ */ (0,
|
|
4943
|
+
((_c = file.metaData) == null ? void 0 : _c.pageCount) && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { children: [
|
|
4944
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Page Count" }),
|
|
4945
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-bold text-blue-600 dark:text-blue-400", children: file.metaData.pageCount })
|
|
4988
4946
|
] }),
|
|
4989
|
-
((_d = file.metaData) == null ? void 0 : _d.author) && /* @__PURE__ */ (0,
|
|
4990
|
-
/* @__PURE__ */ (0,
|
|
4991
|
-
/* @__PURE__ */ (0,
|
|
4947
|
+
((_d = file.metaData) == null ? void 0 : _d.author) && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { children: [
|
|
4948
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1", children: "Author" }),
|
|
4949
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs font-bold text-blue-600 dark:text-blue-400", children: file.metaData.author })
|
|
4992
4950
|
] })
|
|
4993
4951
|
] }),
|
|
4994
|
-
/* @__PURE__ */ (0,
|
|
4995
|
-
/* @__PURE__ */ (0,
|
|
4996
|
-
/* @__PURE__ */ (0,
|
|
4997
|
-
/* @__PURE__ */ (0,
|
|
4998
|
-
/* @__PURE__ */ (0,
|
|
4999
|
-
/* @__PURE__ */ (0,
|
|
4952
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "space-y-4 pt-4 border-t border-slate-200", children: [
|
|
4953
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "space-y-2", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(Field, { className: "gap-0", children: [
|
|
4954
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FieldLabel, { htmlFor: "fileName", children: "File name" }),
|
|
4955
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(InputGroup, { children: [
|
|
4956
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(InputGroupInput, { id: "fileName", placeholder: "Enter file name", value: fileName.replace(file.ext || "", ""), onChange: (e) => setFileName(e.target.value) }),
|
|
4957
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(InputGroupAddon, { align: "inline-end", className: "pr-1", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(InputGroupText, { className: "font-bold bg-gray-200 dark:bg-zinc-700 rounded-lg py-1 px-3", children: file.ext }) })
|
|
5000
4958
|
] })
|
|
5001
4959
|
] }) }),
|
|
5002
|
-
/* @__PURE__ */ (0,
|
|
5003
|
-
/* @__PURE__ */ (0,
|
|
5004
|
-
/* @__PURE__ */ (0,
|
|
4960
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "space-y-2", children: [
|
|
4961
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Label, { htmlFor: "description", children: "Description" }),
|
|
4962
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
5005
4963
|
Textarea,
|
|
5006
4964
|
{
|
|
5007
4965
|
id: "description",
|
|
@@ -5014,14 +4972,14 @@ function FileModal({ file, onClose, onSave }) {
|
|
|
5014
4972
|
] })
|
|
5015
4973
|
] })
|
|
5016
4974
|
] });
|
|
5017
|
-
const footer = /* @__PURE__ */ (0,
|
|
5018
|
-
/* @__PURE__ */ (0,
|
|
5019
|
-
/* @__PURE__ */ (0,
|
|
5020
|
-
isSaving && /* @__PURE__ */ (0,
|
|
4975
|
+
const footer = /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex w-full justify-between items-center flex-col sm:flex-row gap-2 ", children: [
|
|
4976
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Button, { className: "w-full md:w-auto", variant: "outline", onClick: onClose, radius: "full", disabled: isSaving, children: "Cancel" }),
|
|
4977
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(Button, { className: "w-full md:w-auto", onClick: handleSave, radius: "full", disabled: isSaving, children: [
|
|
4978
|
+
isSaving && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Loader2Icon, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
5021
4979
|
"Save"
|
|
5022
4980
|
] })
|
|
5023
4981
|
] });
|
|
5024
|
-
return /* @__PURE__ */ (0,
|
|
4982
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
5025
4983
|
DetailsLayout,
|
|
5026
4984
|
{
|
|
5027
4985
|
title: "Details",
|
|
@@ -5035,7 +4993,7 @@ function FileModal({ file, onClose, onSave }) {
|
|
|
5035
4993
|
}
|
|
5036
4994
|
|
|
5037
4995
|
// components/layout/overlays.tsx
|
|
5038
|
-
var
|
|
4996
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
5039
4997
|
function FileManagerOverlays({ className }) {
|
|
5040
4998
|
const {
|
|
5041
4999
|
fileDetailsModalFile,
|
|
@@ -5058,7 +5016,7 @@ function FileManagerOverlays({ className }) {
|
|
|
5058
5016
|
);
|
|
5059
5017
|
switch (fileType) {
|
|
5060
5018
|
case FILE_TYPE.IMAGE:
|
|
5061
|
-
return /* @__PURE__ */ (0,
|
|
5019
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
5062
5020
|
ImageModal,
|
|
5063
5021
|
{
|
|
5064
5022
|
file: fileDetailsModalFile,
|
|
@@ -5067,7 +5025,7 @@ function FileManagerOverlays({ className }) {
|
|
|
5067
5025
|
}
|
|
5068
5026
|
);
|
|
5069
5027
|
case FILE_TYPE.VIDEO:
|
|
5070
|
-
return /* @__PURE__ */ (0,
|
|
5028
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
5071
5029
|
VideoModal,
|
|
5072
5030
|
{
|
|
5073
5031
|
file: fileDetailsModalFile,
|
|
@@ -5076,7 +5034,7 @@ function FileManagerOverlays({ className }) {
|
|
|
5076
5034
|
}
|
|
5077
5035
|
);
|
|
5078
5036
|
case FILE_TYPE.AUDIO:
|
|
5079
|
-
return /* @__PURE__ */ (0,
|
|
5037
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
5080
5038
|
AudioModal,
|
|
5081
5039
|
{
|
|
5082
5040
|
file: fileDetailsModalFile,
|
|
@@ -5086,7 +5044,7 @@ function FileManagerOverlays({ className }) {
|
|
|
5086
5044
|
);
|
|
5087
5045
|
case FILE_TYPE.FILE:
|
|
5088
5046
|
default:
|
|
5089
|
-
return /* @__PURE__ */ (0,
|
|
5047
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
5090
5048
|
FileModal,
|
|
5091
5049
|
{
|
|
5092
5050
|
file: fileDetailsModalFile,
|
|
@@ -5096,23 +5054,23 @@ function FileManagerOverlays({ className }) {
|
|
|
5096
5054
|
);
|
|
5097
5055
|
}
|
|
5098
5056
|
};
|
|
5099
|
-
return /* @__PURE__ */ (0,
|
|
5100
|
-
/* @__PURE__ */ (0,
|
|
5101
|
-
/* @__PURE__ */ (0,
|
|
5102
|
-
/* @__PURE__ */ (0,
|
|
5057
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: cn("", className), children: [
|
|
5058
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UploadModal, {}),
|
|
5059
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(CreateFolderModal, {}),
|
|
5060
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(MoveModal, {}),
|
|
5103
5061
|
renderFileDetailsModal()
|
|
5104
5062
|
] });
|
|
5105
5063
|
}
|
|
5106
5064
|
|
|
5107
5065
|
// components/file-manager-root.tsx
|
|
5108
|
-
var
|
|
5066
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
5109
5067
|
function FileManagerPageProvider(_a) {
|
|
5110
5068
|
var _b = _a, {
|
|
5111
5069
|
children
|
|
5112
5070
|
} = _b, props = __objRest(_b, [
|
|
5113
5071
|
"children"
|
|
5114
5072
|
]);
|
|
5115
|
-
return /* @__PURE__ */ (0,
|
|
5073
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
5116
5074
|
FileManagerProvider,
|
|
5117
5075
|
__spreadProps(__spreadValues({
|
|
5118
5076
|
mode: MODE.PAGE,
|
|
@@ -5138,7 +5096,7 @@ function FileManagerModalProvider(_a) {
|
|
|
5138
5096
|
"onFilesSelected",
|
|
5139
5097
|
"onClose"
|
|
5140
5098
|
]);
|
|
5141
|
-
return /* @__PURE__ */ (0,
|
|
5099
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
5142
5100
|
FileManagerProvider,
|
|
5143
5101
|
__spreadProps(__spreadValues({
|
|
5144
5102
|
mode: MODE.MODAL,
|
|
@@ -5161,10 +5119,10 @@ var FileManagerComposition = {
|
|
|
5161
5119
|
};
|
|
5162
5120
|
|
|
5163
5121
|
// components/layout/bulk-actions-bar.tsx
|
|
5164
|
-
var
|
|
5122
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
5165
5123
|
function MoveButton() {
|
|
5166
5124
|
const { setIsMoveFileModalOpen } = useFileManager();
|
|
5167
|
-
return /* @__PURE__ */ (0,
|
|
5125
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
|
|
5168
5126
|
Button,
|
|
5169
5127
|
{
|
|
5170
5128
|
variant: "outline",
|
|
@@ -5173,15 +5131,15 @@ function MoveButton() {
|
|
|
5173
5131
|
onClick: () => setIsMoveFileModalOpen(true),
|
|
5174
5132
|
className: "text-md font-medium border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 hover:bg-blue-50 dark:hover:bg-blue-900/40 hover:text-blue-600 dark:hover:text-blue-400 hover:border-blue-300 dark:hover:border-blue-700 shadow-sm transition-all duration-200",
|
|
5175
5133
|
children: [
|
|
5176
|
-
/* @__PURE__ */ (0,
|
|
5177
|
-
/* @__PURE__ */ (0,
|
|
5134
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(MoveIcon, { className: "size-5" }),
|
|
5135
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "hidden sm:inline", children: "Move" })
|
|
5178
5136
|
]
|
|
5179
5137
|
}
|
|
5180
5138
|
);
|
|
5181
5139
|
}
|
|
5182
5140
|
function DeleteButton() {
|
|
5183
5141
|
const { bulkDelete } = useFileManager();
|
|
5184
|
-
return /* @__PURE__ */ (0,
|
|
5142
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
|
|
5185
5143
|
Button,
|
|
5186
5144
|
{
|
|
5187
5145
|
variant: "outline",
|
|
@@ -5190,15 +5148,15 @@ function DeleteButton() {
|
|
|
5190
5148
|
onClick: bulkDelete,
|
|
5191
5149
|
className: "text-md font-medium border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 hover:bg-red-50 dark:hover:bg-red-900/40 hover:text-red-600 dark:hover:text-red-400 hover:border-red-300 dark:hover:border-red-700 shadow-sm transition-all duration-200",
|
|
5192
5150
|
children: [
|
|
5193
|
-
/* @__PURE__ */ (0,
|
|
5194
|
-
/* @__PURE__ */ (0,
|
|
5151
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(TrashIcon, { className: "size-5" }),
|
|
5152
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "hidden", children: "Delete" })
|
|
5195
5153
|
]
|
|
5196
5154
|
}
|
|
5197
5155
|
);
|
|
5198
5156
|
}
|
|
5199
5157
|
function ClearSelectionButton() {
|
|
5200
5158
|
const { handleClearSelection } = useFileManager();
|
|
5201
|
-
return /* @__PURE__ */ (0,
|
|
5159
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
|
|
5202
5160
|
Button,
|
|
5203
5161
|
{
|
|
5204
5162
|
variant: "outline",
|
|
@@ -5206,7 +5164,7 @@ function ClearSelectionButton() {
|
|
|
5206
5164
|
onClick: handleClearSelection,
|
|
5207
5165
|
className: "rounded-full text-md font-medium border border-transparent text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/40 hover:border-blue-300 dark:hover:border-blue-700 hover:font-semibold transition-all duration-200",
|
|
5208
5166
|
children: [
|
|
5209
|
-
/* @__PURE__ */ (0,
|
|
5167
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(CrossIcon, { className: "size-5 transition-colors" }),
|
|
5210
5168
|
"Clear"
|
|
5211
5169
|
]
|
|
5212
5170
|
}
|
|
@@ -5219,12 +5177,12 @@ function BulkActionsStatic() {
|
|
|
5219
5177
|
} = useFileManager();
|
|
5220
5178
|
const totalSelected = selectedFiles.length + selectedFolders.length;
|
|
5221
5179
|
if (totalSelected === 0) return null;
|
|
5222
|
-
return /* @__PURE__ */ (0,
|
|
5223
|
-
/* @__PURE__ */ (0,
|
|
5224
|
-
/* @__PURE__ */ (0,
|
|
5225
|
-
/* @__PURE__ */ (0,
|
|
5180
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "flex flex-wrap items-center gap-2 sm:gap-3", children: [
|
|
5181
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "flex items-center gap-2 flex-1 sm:flex-initial", children: [
|
|
5182
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(MoveButton, {}),
|
|
5183
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(DeleteButton, {})
|
|
5226
5184
|
] }),
|
|
5227
|
-
/* @__PURE__ */ (0,
|
|
5185
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ClearSelectionButton, {})
|
|
5228
5186
|
] }) });
|
|
5229
5187
|
}
|
|
5230
5188
|
function BulkActionsFloating({ className }) {
|
|
@@ -5234,25 +5192,25 @@ function BulkActionsFloating({ className }) {
|
|
|
5234
5192
|
} = useFileManager();
|
|
5235
5193
|
const totalSelected = selectedFiles.length + selectedFolders.length;
|
|
5236
5194
|
if (totalSelected === 0) return null;
|
|
5237
|
-
return /* @__PURE__ */ (0,
|
|
5238
|
-
/* @__PURE__ */ (0,
|
|
5239
|
-
/* @__PURE__ */ (0,
|
|
5240
|
-
/* @__PURE__ */ (0,
|
|
5195
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: `fixed bottom-0 left-0 right-0 z-50 bg-white/80 dark:bg-zinc-900/80 backdrop-blur-sm border-t border-gray-200 dark:border-zinc-700 shadow-lg ${className || ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "px-4 sm:px-6 py-3 mx-auto", children: /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "flex flex-wrap items-center gap-2 sm:gap-3", children: [
|
|
5196
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "flex items-center gap-2 flex-1 sm:flex-initial", children: [
|
|
5197
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(MoveButton, {}),
|
|
5198
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(DeleteButton, {})
|
|
5241
5199
|
] }),
|
|
5242
|
-
/* @__PURE__ */ (0,
|
|
5200
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ClearSelectionButton, {})
|
|
5243
5201
|
] }) }) });
|
|
5244
5202
|
}
|
|
5245
5203
|
|
|
5246
5204
|
// components/ui/skeleton.tsx
|
|
5247
|
-
var
|
|
5205
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
5248
5206
|
function Skeleton(_a) {
|
|
5249
5207
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5250
|
-
return /* @__PURE__ */ (0,
|
|
5208
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", __spreadValues({ "data-slot": "skeleton", className: cn("animate-pulse rounded-md bg-accent", className) }, props));
|
|
5251
5209
|
}
|
|
5252
5210
|
|
|
5253
5211
|
// components/layout/header-navigation.tsx
|
|
5254
5212
|
var import_navigation3 = require("next/navigation");
|
|
5255
|
-
var
|
|
5213
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
5256
5214
|
function HeaderNavigation() {
|
|
5257
5215
|
const {
|
|
5258
5216
|
currentFolder,
|
|
@@ -5264,13 +5222,13 @@ function HeaderNavigation() {
|
|
|
5264
5222
|
router.back();
|
|
5265
5223
|
};
|
|
5266
5224
|
if (isLoading) {
|
|
5267
|
-
return /* @__PURE__ */ (0,
|
|
5268
|
-
/* @__PURE__ */ (0,
|
|
5269
|
-
/* @__PURE__ */ (0,
|
|
5225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex item-center w-full", children: [
|
|
5226
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Skeleton, { className: "rounded-full size-10 mr-2 shrink-0" }),
|
|
5227
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Skeleton, { className: "min-w-32 rounded-md h-full" })
|
|
5270
5228
|
] });
|
|
5271
5229
|
}
|
|
5272
|
-
return /* @__PURE__ */ (0,
|
|
5273
|
-
/* @__PURE__ */ (0,
|
|
5230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_jsx_runtime75.Fragment, { children: currentFolder ? /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex items-center flex-1 min-w-0 max-w-[calc(100%-40px)]", children: [
|
|
5231
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
5274
5232
|
Button,
|
|
5275
5233
|
{
|
|
5276
5234
|
variant: "outline",
|
|
@@ -5279,12 +5237,12 @@ function HeaderNavigation() {
|
|
|
5279
5237
|
disabled: isLoading,
|
|
5280
5238
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 mr-2",
|
|
5281
5239
|
onClick: handleBackClick,
|
|
5282
|
-
children: /* @__PURE__ */ (0,
|
|
5240
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(ChevronLeftIcon, { className: "size-5 text-gray-900 dark:text-zinc-100", strokeWidth: "1.5" })
|
|
5283
5241
|
}
|
|
5284
5242
|
),
|
|
5285
|
-
/* @__PURE__ */ (0,
|
|
5286
|
-
] }) : /* @__PURE__ */ (0,
|
|
5287
|
-
/* @__PURE__ */ (0,
|
|
5243
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("h1", { className: "text-lg flex-1 min-w-0 align-middle font-semibold", children: middleTruncate(currentFolder.name, 20) })
|
|
5244
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex items-center flex-1 min-w-0 max-w-[calc(100%-40px)]", children: [
|
|
5245
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
5288
5246
|
Button,
|
|
5289
5247
|
{
|
|
5290
5248
|
className: "mr-2 shrink-0",
|
|
@@ -5293,23 +5251,23 @@ function HeaderNavigation() {
|
|
|
5293
5251
|
mode: "icon",
|
|
5294
5252
|
size: "icon",
|
|
5295
5253
|
onClick: () => handleFolderClick(null),
|
|
5296
|
-
children: /* @__PURE__ */ (0,
|
|
5254
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(HomeIcon, { className: "size-6 text-gray-900 dark:text-zinc-100" })
|
|
5297
5255
|
}
|
|
5298
5256
|
),
|
|
5299
|
-
/* @__PURE__ */ (0,
|
|
5257
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("h1", { className: "text-lg flex-1 min-w-0 align-middle font-semibold", children: "Home" })
|
|
5300
5258
|
] }) });
|
|
5301
5259
|
}
|
|
5302
5260
|
|
|
5303
5261
|
// components/ui/dropdown-menu.tsx
|
|
5304
|
-
var
|
|
5305
|
-
var
|
|
5262
|
+
var import_radix_ui4 = require("radix-ui");
|
|
5263
|
+
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
5306
5264
|
function DropdownMenu(_a) {
|
|
5307
5265
|
var props = __objRest(_a, []);
|
|
5308
|
-
return /* @__PURE__ */ (0,
|
|
5266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_radix_ui4.DropdownMenu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
|
|
5309
5267
|
}
|
|
5310
5268
|
function DropdownMenuTrigger(_a) {
|
|
5311
5269
|
var props = __objRest(_a, []);
|
|
5312
|
-
return /* @__PURE__ */ (0,
|
|
5270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_radix_ui4.DropdownMenu.Trigger, __spreadValues({ className: "select-none", "data-slot": "dropdown-menu-trigger" }, props));
|
|
5313
5271
|
}
|
|
5314
5272
|
function DropdownMenuContent(_a) {
|
|
5315
5273
|
var _b = _a, {
|
|
@@ -5319,8 +5277,8 @@ function DropdownMenuContent(_a) {
|
|
|
5319
5277
|
"className",
|
|
5320
5278
|
"sideOffset"
|
|
5321
5279
|
]);
|
|
5322
|
-
return /* @__PURE__ */ (0,
|
|
5323
|
-
|
|
5280
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_radix_ui4.DropdownMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
5281
|
+
import_radix_ui4.DropdownMenu.Content,
|
|
5324
5282
|
__spreadValues({
|
|
5325
5283
|
"data-slot": "dropdown-menu-content",
|
|
5326
5284
|
sideOffset,
|
|
@@ -5341,8 +5299,8 @@ function DropdownMenuItem(_a) {
|
|
|
5341
5299
|
"inset",
|
|
5342
5300
|
"variant"
|
|
5343
5301
|
]);
|
|
5344
|
-
return /* @__PURE__ */ (0,
|
|
5345
|
-
|
|
5302
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
5303
|
+
import_radix_ui4.DropdownMenu.Item,
|
|
5346
5304
|
__spreadValues({
|
|
5347
5305
|
"data-slot": "dropdown-menu-item",
|
|
5348
5306
|
className: cn(
|
|
@@ -5358,8 +5316,8 @@ function DropdownMenuItem(_a) {
|
|
|
5358
5316
|
}
|
|
5359
5317
|
function DropdownMenuSeparator(_a) {
|
|
5360
5318
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5361
|
-
return /* @__PURE__ */ (0,
|
|
5362
|
-
|
|
5319
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
5320
|
+
import_radix_ui4.DropdownMenu.Separator,
|
|
5363
5321
|
__spreadValues({
|
|
5364
5322
|
"data-slot": "dropdown-menu-separator",
|
|
5365
5323
|
className: cn("-mx-2 my-1.5 h-px bg-muted", className)
|
|
@@ -5372,10 +5330,10 @@ var import_react19 = require("react");
|
|
|
5372
5330
|
|
|
5373
5331
|
// components/ui/command.tsx
|
|
5374
5332
|
var import_cmdk = require("cmdk");
|
|
5375
|
-
var
|
|
5333
|
+
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
5376
5334
|
function Command(_a) {
|
|
5377
5335
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5378
|
-
return /* @__PURE__ */ (0,
|
|
5336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
5379
5337
|
import_cmdk.Command,
|
|
5380
5338
|
__spreadValues({
|
|
5381
5339
|
className: cn(
|
|
@@ -5387,9 +5345,9 @@ function Command(_a) {
|
|
|
5387
5345
|
}
|
|
5388
5346
|
var CommandDialog = (_a) => {
|
|
5389
5347
|
var _b = _a, { children, className, shouldFilter } = _b, props = __objRest(_b, ["children", "className", "shouldFilter"]);
|
|
5390
|
-
return /* @__PURE__ */ (0,
|
|
5391
|
-
/* @__PURE__ */ (0,
|
|
5392
|
-
/* @__PURE__ */ (0,
|
|
5348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(Dialog, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(DialogContent, { className: cn("overflow-hidden p-0 shadow-lg", className), children: [
|
|
5349
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(DialogTitle, { className: "hidden" }),
|
|
5350
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
5393
5351
|
Command,
|
|
5394
5352
|
{
|
|
5395
5353
|
shouldFilter,
|
|
@@ -5401,13 +5359,13 @@ var CommandDialog = (_a) => {
|
|
|
5401
5359
|
};
|
|
5402
5360
|
function CommandInput(_a) {
|
|
5403
5361
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5404
|
-
return /* @__PURE__ */ (0,
|
|
5405
|
-
/* @__PURE__ */ (0,
|
|
5406
|
-
/* @__PURE__ */ (0,
|
|
5362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "flex items-center border-border border-b px-3", "cmdk-input-wrapper": "", "data-slot": "command-input", children: [
|
|
5363
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SearchIcon, { className: "me-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
5364
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
5407
5365
|
import_cmdk.Command.Input,
|
|
5408
5366
|
__spreadValues({
|
|
5409
5367
|
className: cn(
|
|
5410
|
-
"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-
|
|
5368
|
+
"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none! shadow-none! focus:outline-none focus:ring-0 focus-visible:outline-none focus-visible:ring-0 border-none text-foreground placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
5411
5369
|
className
|
|
5412
5370
|
)
|
|
5413
5371
|
}, props)
|
|
@@ -5416,7 +5374,7 @@ function CommandInput(_a) {
|
|
|
5416
5374
|
}
|
|
5417
5375
|
function CommandList(_a) {
|
|
5418
5376
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5419
|
-
return /* @__PURE__ */ (0,
|
|
5377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
5420
5378
|
import_cmdk.Command.List,
|
|
5421
5379
|
__spreadValues({
|
|
5422
5380
|
"data-slot": "command-list",
|
|
@@ -5426,11 +5384,11 @@ function CommandList(_a) {
|
|
|
5426
5384
|
}
|
|
5427
5385
|
function CommandEmpty(_a) {
|
|
5428
5386
|
var props = __objRest(_a, []);
|
|
5429
|
-
return /* @__PURE__ */ (0,
|
|
5387
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_cmdk.Command.Empty, __spreadValues({ "data-slot": "command-empty", className: "py-6 text-center text-sm" }, props));
|
|
5430
5388
|
}
|
|
5431
5389
|
function CommandGroup(_a) {
|
|
5432
5390
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5433
|
-
return /* @__PURE__ */ (0,
|
|
5391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
5434
5392
|
import_cmdk.Command.Group,
|
|
5435
5393
|
__spreadValues({
|
|
5436
5394
|
"data-slot": "command-group",
|
|
@@ -5443,7 +5401,7 @@ function CommandGroup(_a) {
|
|
|
5443
5401
|
}
|
|
5444
5402
|
function CommandItem(_a) {
|
|
5445
5403
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5446
|
-
return /* @__PURE__ */ (0,
|
|
5404
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
5447
5405
|
import_cmdk.Command.Item,
|
|
5448
5406
|
__spreadValues({
|
|
5449
5407
|
"data-slot": "command-item",
|
|
@@ -5473,7 +5431,7 @@ function useDebouncedValue(value, delay2 = 500) {
|
|
|
5473
5431
|
|
|
5474
5432
|
// components/modals/search-modal.tsx
|
|
5475
5433
|
var import_sonner4 = require("sonner");
|
|
5476
|
-
var
|
|
5434
|
+
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
5477
5435
|
function SearchDialog() {
|
|
5478
5436
|
const [searchQuery, setSearchQuery] = (0, import_react19.useState)("");
|
|
5479
5437
|
const [fileResults, setFileResults] = (0, import_react19.useState)([]);
|
|
@@ -5520,8 +5478,8 @@ function SearchDialog() {
|
|
|
5520
5478
|
setFolderResults([]);
|
|
5521
5479
|
}
|
|
5522
5480
|
};
|
|
5523
|
-
return /* @__PURE__ */ (0,
|
|
5524
|
-
/* @__PURE__ */ (0,
|
|
5481
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
5482
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
5525
5483
|
Button,
|
|
5526
5484
|
{
|
|
5527
5485
|
variant: "outline",
|
|
@@ -5530,13 +5488,13 @@ function SearchDialog() {
|
|
|
5530
5488
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900",
|
|
5531
5489
|
onClick: () => setIsSearchModalOpen(true),
|
|
5532
5490
|
children: [
|
|
5533
|
-
/* @__PURE__ */ (0,
|
|
5534
|
-
/* @__PURE__ */ (0,
|
|
5491
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(SearchIcon, { className: "size-4 text-gray-700 dark:text-zinc-300" }),
|
|
5492
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "hidden", children: "Search" })
|
|
5535
5493
|
]
|
|
5536
5494
|
}
|
|
5537
5495
|
),
|
|
5538
|
-
/* @__PURE__ */ (0,
|
|
5539
|
-
/* @__PURE__ */ (0,
|
|
5496
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(CommandDialog, { className: "max-w-4xl w-full", open: isSearchModalOpen, onOpenChange: handleModalOpenChange, shouldFilter: false, children: [
|
|
5497
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
5540
5498
|
CommandInput,
|
|
5541
5499
|
{
|
|
5542
5500
|
placeholder: "Type to search files or folders...",
|
|
@@ -5544,23 +5502,23 @@ function SearchDialog() {
|
|
|
5544
5502
|
onValueChange: handleInputChange
|
|
5545
5503
|
}
|
|
5546
5504
|
),
|
|
5547
|
-
/* @__PURE__ */ (0,
|
|
5548
|
-
loading && /* @__PURE__ */ (0,
|
|
5549
|
-
!loading && fileResults.length === 0 && folderResults.length === 0 && !searchQuery && /* @__PURE__ */ (0,
|
|
5550
|
-
/* @__PURE__ */ (0,
|
|
5551
|
-
/* @__PURE__ */ (0,
|
|
5552
|
-
/* @__PURE__ */ (0,
|
|
5553
|
-
/* @__PURE__ */ (0,
|
|
5554
|
-
/* @__PURE__ */ (0,
|
|
5505
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(CommandList, { children: [
|
|
5506
|
+
loading && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(CommandEmpty, { children: "Searching..." }),
|
|
5507
|
+
!loading && fileResults.length === 0 && folderResults.length === 0 && !searchQuery && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(CommandEmpty, { children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-col items-center justify-center py-8 px-4 text-center", children: [
|
|
5508
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(SearchIcon, { className: "size-12 text-gray-300 dark:text-zinc-600 mb-3" }),
|
|
5509
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-sm font-medium text-gray-900 dark:text-zinc-100 mb-1", children: "Search your files and folders" }),
|
|
5510
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-xs text-gray-500 dark:text-zinc-400", children: "Start typing to find what you're looking for" }),
|
|
5511
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-xs text-gray-500 dark:text-zinc-400 mt-2", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(KbdGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Kbd, { children: [
|
|
5512
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "text-lg", children: "\u2318" }),
|
|
5555
5513
|
" + K"
|
|
5556
5514
|
] }) }) })
|
|
5557
5515
|
] }) }),
|
|
5558
|
-
!loading && fileResults.length === 0 && folderResults.length === 0 && searchQuery && /* @__PURE__ */ (0,
|
|
5559
|
-
/* @__PURE__ */ (0,
|
|
5560
|
-
/* @__PURE__ */ (0,
|
|
5561
|
-
/* @__PURE__ */ (0,
|
|
5516
|
+
!loading && fileResults.length === 0 && folderResults.length === 0 && searchQuery && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(CommandEmpty, { children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-col items-center justify-center py-8 px-4 text-center", children: [
|
|
5517
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(SearchIcon, { className: "size-12 text-gray-300 dark:text-zinc-600 mb-3" }),
|
|
5518
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-sm font-medium text-gray-900 dark:text-zinc-100 mb-1", children: "No results found" }),
|
|
5519
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-xs text-gray-500 dark:text-zinc-400", children: "Try searching with different keywords" })
|
|
5562
5520
|
] }) }),
|
|
5563
|
-
folderResults.length > 0 && /* @__PURE__ */ (0,
|
|
5521
|
+
folderResults.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(CommandGroup, { heading: "Folders", children: folderResults.map((folder) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
5564
5522
|
CommandItem,
|
|
5565
5523
|
{
|
|
5566
5524
|
onSelect: () => {
|
|
@@ -5569,15 +5527,15 @@ function SearchDialog() {
|
|
|
5569
5527
|
handleFolderClick(folder);
|
|
5570
5528
|
},
|
|
5571
5529
|
children: [
|
|
5572
|
-
/* @__PURE__ */ (0,
|
|
5573
|
-
/* @__PURE__ */ (0,
|
|
5530
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(FolderIcon, { className: "size-4 mr-2 shrink-0", strokeWidth: 1.5 }),
|
|
5531
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { children: middleTruncate(folder.name, 60) })
|
|
5574
5532
|
]
|
|
5575
5533
|
},
|
|
5576
5534
|
folder.id
|
|
5577
5535
|
)) }),
|
|
5578
|
-
fileResults.length > 0 && /* @__PURE__ */ (0,
|
|
5536
|
+
fileResults.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(CommandGroup, { heading: "Files", children: fileResults.map((file) => {
|
|
5579
5537
|
const { component: FilePreviewComponent } = getFileComponents(file);
|
|
5580
|
-
return /* @__PURE__ */ (0,
|
|
5538
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
5581
5539
|
CommandItem,
|
|
5582
5540
|
{
|
|
5583
5541
|
onSelect: () => {
|
|
@@ -5585,8 +5543,8 @@ function SearchDialog() {
|
|
|
5585
5543
|
setFileDetailsModalFile(file);
|
|
5586
5544
|
},
|
|
5587
5545
|
children: [
|
|
5588
|
-
/* @__PURE__ */ (0,
|
|
5589
|
-
/* @__PURE__ */ (0,
|
|
5546
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "size-6 mr-2 shrink-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(FilePreviewComponent, { file, metaData: file.metaData }) }),
|
|
5547
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { children: middleTruncate(file.name, 60) })
|
|
5590
5548
|
]
|
|
5591
5549
|
},
|
|
5592
5550
|
file.id
|
|
@@ -5599,8 +5557,8 @@ function SearchDialog() {
|
|
|
5599
5557
|
|
|
5600
5558
|
// components/ui/checkbox.tsx
|
|
5601
5559
|
var import_class_variance_authority9 = require("class-variance-authority");
|
|
5602
|
-
var
|
|
5603
|
-
var
|
|
5560
|
+
var import_radix_ui5 = require("radix-ui");
|
|
5561
|
+
var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
5604
5562
|
var checkboxVariants = (0, import_class_variance_authority9.cva)(
|
|
5605
5563
|
`
|
|
5606
5564
|
group peer bg-background shrink-0 rounded-md border border-input ring-offset-background focus-visible:outline-none
|
|
@@ -5630,20 +5588,20 @@ function Checkbox(_a) {
|
|
|
5630
5588
|
"className",
|
|
5631
5589
|
"size"
|
|
5632
5590
|
]);
|
|
5633
|
-
return /* @__PURE__ */ (0,
|
|
5634
|
-
/* @__PURE__ */ (0,
|
|
5635
|
-
/* @__PURE__ */ (0,
|
|
5591
|
+
return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_radix_ui5.Checkbox.Root, __spreadProps(__spreadValues({ "data-slot": "checkbox", className: cn(checkboxVariants({ size }), className) }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_radix_ui5.Checkbox.Indicator, { className: cn("flex items-center justify-center text-current"), children: [
|
|
5592
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(CheckIcon, { className: "group-data-[state=indeterminate]:hidden" }),
|
|
5593
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(MinusIcon, { className: "hidden group-data-[state=indeterminate]:block" })
|
|
5636
5594
|
] }) }));
|
|
5637
5595
|
}
|
|
5638
5596
|
|
|
5639
5597
|
// components/layout/header-actions.tsx
|
|
5640
|
-
var
|
|
5598
|
+
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
5641
5599
|
function SearchAction() {
|
|
5642
|
-
return /* @__PURE__ */ (0,
|
|
5600
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(SearchDialog, {});
|
|
5643
5601
|
}
|
|
5644
5602
|
function UploadFileAction() {
|
|
5645
5603
|
const { setIsUploadModalOpen } = useFileManager();
|
|
5646
|
-
return /* @__PURE__ */ (0,
|
|
5604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
|
|
5647
5605
|
Button,
|
|
5648
5606
|
{
|
|
5649
5607
|
variant: "outline",
|
|
@@ -5652,15 +5610,15 @@ function UploadFileAction() {
|
|
|
5652
5610
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 text-md font-medium",
|
|
5653
5611
|
onClick: () => setIsUploadModalOpen(true),
|
|
5654
5612
|
children: [
|
|
5655
|
-
/* @__PURE__ */ (0,
|
|
5656
|
-
/* @__PURE__ */ (0,
|
|
5613
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(PlusIcon, { strokeWidth: 2, className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5614
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "hidden sm:inline", children: "Upload File" })
|
|
5657
5615
|
]
|
|
5658
5616
|
}
|
|
5659
5617
|
);
|
|
5660
5618
|
}
|
|
5661
5619
|
function CreateFolderAction() {
|
|
5662
5620
|
const { setIsCreateFolderModalOpen } = useFileManager();
|
|
5663
|
-
return /* @__PURE__ */ (0,
|
|
5621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
|
|
5664
5622
|
Button,
|
|
5665
5623
|
{
|
|
5666
5624
|
variant: "outline",
|
|
@@ -5669,8 +5627,8 @@ function CreateFolderAction() {
|
|
|
5669
5627
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900",
|
|
5670
5628
|
onClick: () => setIsCreateFolderModalOpen(true),
|
|
5671
5629
|
children: [
|
|
5672
|
-
/* @__PURE__ */ (0,
|
|
5673
|
-
/* @__PURE__ */ (0,
|
|
5630
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(UploadFolderIcon, { className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5631
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "hidden", children: "Create Folder" })
|
|
5674
5632
|
]
|
|
5675
5633
|
}
|
|
5676
5634
|
);
|
|
@@ -5680,9 +5638,9 @@ function CreateFolderAction() {
|
|
|
5680
5638
|
var import_react20 = require("react");
|
|
5681
5639
|
|
|
5682
5640
|
// components/icons/theme.tsx
|
|
5683
|
-
var
|
|
5641
|
+
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
5684
5642
|
function SunIcon(props) {
|
|
5685
|
-
return /* @__PURE__ */ (0,
|
|
5643
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
|
|
5686
5644
|
"svg",
|
|
5687
5645
|
__spreadProps(__spreadValues({
|
|
5688
5646
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5696,14 +5654,14 @@ function SunIcon(props) {
|
|
|
5696
5654
|
strokeLinejoin: "round"
|
|
5697
5655
|
}, props), {
|
|
5698
5656
|
children: [
|
|
5699
|
-
/* @__PURE__ */ (0,
|
|
5700
|
-
/* @__PURE__ */ (0,
|
|
5657
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("circle", { cx: "12", cy: "12", r: "4" }),
|
|
5658
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("path", { d: "M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41" })
|
|
5701
5659
|
]
|
|
5702
5660
|
})
|
|
5703
5661
|
);
|
|
5704
5662
|
}
|
|
5705
5663
|
function MoonIcon(props) {
|
|
5706
|
-
return /* @__PURE__ */ (0,
|
|
5664
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
5707
5665
|
"svg",
|
|
5708
5666
|
__spreadProps(__spreadValues({
|
|
5709
5667
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5716,13 +5674,13 @@ function MoonIcon(props) {
|
|
|
5716
5674
|
strokeLinecap: "round",
|
|
5717
5675
|
strokeLinejoin: "round"
|
|
5718
5676
|
}, props), {
|
|
5719
|
-
children: /* @__PURE__ */ (0,
|
|
5677
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" })
|
|
5720
5678
|
})
|
|
5721
5679
|
);
|
|
5722
5680
|
}
|
|
5723
5681
|
|
|
5724
5682
|
// components/layout/theme-toggle.tsx
|
|
5725
|
-
var
|
|
5683
|
+
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
5726
5684
|
function ThemeToggle() {
|
|
5727
5685
|
const [isDark, setIsDark] = (0, import_react20.useState)(false);
|
|
5728
5686
|
(0, import_react20.useEffect)(() => {
|
|
@@ -5737,7 +5695,7 @@ function ThemeToggle() {
|
|
|
5737
5695
|
document.documentElement.classList.toggle("dark", next);
|
|
5738
5696
|
localStorage.setItem("theme", next ? "dark" : "light");
|
|
5739
5697
|
};
|
|
5740
|
-
return /* @__PURE__ */ (0,
|
|
5698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
5741
5699
|
Button,
|
|
5742
5700
|
{
|
|
5743
5701
|
variant: "outline",
|
|
@@ -5746,64 +5704,64 @@ function ThemeToggle() {
|
|
|
5746
5704
|
onClick: toggle,
|
|
5747
5705
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900",
|
|
5748
5706
|
"aria-label": isDark ? "Switch to light mode" : "Switch to dark mode",
|
|
5749
|
-
children: isDark ? /* @__PURE__ */ (0,
|
|
5707
|
+
children: isDark ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SunIcon, { className: "size-4 text-yellow-500" }) : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(MoonIcon, { className: "size-4 text-gray-700 dark:text-zinc-300" })
|
|
5750
5708
|
}
|
|
5751
5709
|
);
|
|
5752
5710
|
}
|
|
5753
5711
|
|
|
5754
5712
|
// components/layout/header-actions-responsive.tsx
|
|
5755
|
-
var
|
|
5713
|
+
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
5756
5714
|
function ResponsiveHeaderActions() {
|
|
5757
5715
|
const { setIsUploadModalOpen, setIsCreateFolderModalOpen, setIsSearchModalOpen } = useFileManager();
|
|
5758
|
-
return /* @__PURE__ */ (0,
|
|
5759
|
-
/* @__PURE__ */ (0,
|
|
5760
|
-
/* @__PURE__ */ (0,
|
|
5761
|
-
/* @__PURE__ */ (0,
|
|
5762
|
-
/* @__PURE__ */ (0,
|
|
5763
|
-
/* @__PURE__ */ (0,
|
|
5716
|
+
return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_jsx_runtime83.Fragment, { children: [
|
|
5717
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "hidden md:flex gap-2", children: [
|
|
5718
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(UploadFileAction, {}),
|
|
5719
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(CreateFolderAction, {}),
|
|
5720
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SearchAction, {}),
|
|
5721
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ThemeToggle, {})
|
|
5764
5722
|
] }),
|
|
5765
|
-
/* @__PURE__ */ (0,
|
|
5766
|
-
/* @__PURE__ */ (0,
|
|
5723
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "flex md:hidden", children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(DropdownMenu, { children: [
|
|
5724
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
5767
5725
|
Button,
|
|
5768
5726
|
{
|
|
5769
5727
|
variant: "outline",
|
|
5770
5728
|
size: "icon",
|
|
5771
5729
|
radius: "full",
|
|
5772
5730
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900",
|
|
5773
|
-
children: /* @__PURE__ */ (0,
|
|
5731
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(MoveHorizontalIcon, { className: "size-5" })
|
|
5774
5732
|
}
|
|
5775
5733
|
) }),
|
|
5776
|
-
/* @__PURE__ */ (0,
|
|
5777
|
-
/* @__PURE__ */ (0,
|
|
5734
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(DropdownMenuContent, { align: "end", className: "w-56 rounded-2xl shadow-xl bg-white/50 dark:bg-zinc-900/80 backdrop-blur-2xl border-gray-200 dark:border-zinc-700", children: [
|
|
5735
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5778
5736
|
DropdownMenuItem,
|
|
5779
5737
|
{
|
|
5780
5738
|
onClick: () => setIsUploadModalOpen(true),
|
|
5781
5739
|
className: "cursor-pointer",
|
|
5782
5740
|
children: [
|
|
5783
|
-
/* @__PURE__ */ (0,
|
|
5784
|
-
/* @__PURE__ */ (0,
|
|
5741
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(PlusIcon, { className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5742
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "inline", children: "Upload File" })
|
|
5785
5743
|
]
|
|
5786
5744
|
}
|
|
5787
5745
|
),
|
|
5788
|
-
/* @__PURE__ */ (0,
|
|
5746
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5789
5747
|
DropdownMenuItem,
|
|
5790
5748
|
{
|
|
5791
5749
|
onClick: () => setIsCreateFolderModalOpen(true),
|
|
5792
5750
|
className: "cursor-pointer",
|
|
5793
5751
|
children: [
|
|
5794
|
-
/* @__PURE__ */ (0,
|
|
5795
|
-
/* @__PURE__ */ (0,
|
|
5752
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(UploadFolderIcon, { className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5753
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "inline", children: "Create Folder" })
|
|
5796
5754
|
]
|
|
5797
5755
|
}
|
|
5798
5756
|
),
|
|
5799
|
-
/* @__PURE__ */ (0,
|
|
5757
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5800
5758
|
DropdownMenuItem,
|
|
5801
5759
|
{
|
|
5802
5760
|
onClick: () => setIsSearchModalOpen(true),
|
|
5803
5761
|
className: "cursor-pointer",
|
|
5804
5762
|
children: [
|
|
5805
|
-
/* @__PURE__ */ (0,
|
|
5806
|
-
/* @__PURE__ */ (0,
|
|
5763
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SearchIcon, { className: "size-5 text-gray-700 dark:text-zinc-300" }),
|
|
5764
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "inline", children: "Search" })
|
|
5807
5765
|
]
|
|
5808
5766
|
}
|
|
5809
5767
|
)
|
|
@@ -5813,11 +5771,11 @@ function ResponsiveHeaderActions() {
|
|
|
5813
5771
|
}
|
|
5814
5772
|
function ModalResponsiveHeaderActions({ onSearchClick }) {
|
|
5815
5773
|
const { setIsUploadModalOpen, setIsCreateFolderModalOpen } = useFileManager();
|
|
5816
|
-
return /* @__PURE__ */ (0,
|
|
5817
|
-
/* @__PURE__ */ (0,
|
|
5818
|
-
/* @__PURE__ */ (0,
|
|
5819
|
-
/* @__PURE__ */ (0,
|
|
5820
|
-
onSearchClick ? /* @__PURE__ */ (0,
|
|
5774
|
+
return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_jsx_runtime83.Fragment, { children: [
|
|
5775
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "hidden md:flex gap-2", children: [
|
|
5776
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(UploadFileAction, {}),
|
|
5777
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(CreateFolderAction, {}),
|
|
5778
|
+
onSearchClick ? /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5821
5779
|
Button,
|
|
5822
5780
|
{
|
|
5823
5781
|
variant: "outline",
|
|
@@ -5826,54 +5784,54 @@ function ModalResponsiveHeaderActions({ onSearchClick }) {
|
|
|
5826
5784
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900",
|
|
5827
5785
|
onClick: onSearchClick,
|
|
5828
5786
|
children: [
|
|
5829
|
-
/* @__PURE__ */ (0,
|
|
5830
|
-
/* @__PURE__ */ (0,
|
|
5787
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SearchIcon, { className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5788
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "hidden", children: "Search" })
|
|
5831
5789
|
]
|
|
5832
5790
|
}
|
|
5833
5791
|
) : null
|
|
5834
5792
|
] }),
|
|
5835
|
-
/* @__PURE__ */ (0,
|
|
5836
|
-
/* @__PURE__ */ (0,
|
|
5793
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "flex md:hidden", children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(DropdownMenu, { children: [
|
|
5794
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
5837
5795
|
Button,
|
|
5838
5796
|
{
|
|
5839
5797
|
variant: "outline",
|
|
5840
5798
|
size: "icon",
|
|
5841
5799
|
radius: "full",
|
|
5842
5800
|
className: "border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900",
|
|
5843
|
-
children: /* @__PURE__ */ (0,
|
|
5801
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(MoveHorizontalIcon, { className: "size-5" })
|
|
5844
5802
|
}
|
|
5845
5803
|
) }),
|
|
5846
|
-
/* @__PURE__ */ (0,
|
|
5847
|
-
/* @__PURE__ */ (0,
|
|
5804
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(DropdownMenuContent, { align: "end", className: "w-48", children: [
|
|
5805
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5848
5806
|
DropdownMenuItem,
|
|
5849
5807
|
{
|
|
5850
5808
|
onClick: () => setIsUploadModalOpen(true),
|
|
5851
5809
|
className: "cursor-pointer",
|
|
5852
5810
|
children: [
|
|
5853
|
-
/* @__PURE__ */ (0,
|
|
5854
|
-
/* @__PURE__ */ (0,
|
|
5811
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(PlusIcon, { className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5812
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "inline", children: "Upload File" })
|
|
5855
5813
|
]
|
|
5856
5814
|
}
|
|
5857
5815
|
),
|
|
5858
|
-
/* @__PURE__ */ (0,
|
|
5816
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5859
5817
|
DropdownMenuItem,
|
|
5860
5818
|
{
|
|
5861
5819
|
onClick: () => setIsCreateFolderModalOpen(true),
|
|
5862
5820
|
className: "cursor-pointer",
|
|
5863
5821
|
children: [
|
|
5864
|
-
/* @__PURE__ */ (0,
|
|
5865
|
-
/* @__PURE__ */ (0,
|
|
5822
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(UploadFolderIcon, { className: "size-5 text-gray-900 dark:text-zinc-100" }),
|
|
5823
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "inline", children: "Create Folder" })
|
|
5866
5824
|
]
|
|
5867
5825
|
}
|
|
5868
5826
|
),
|
|
5869
|
-
onSearchClick ? /* @__PURE__ */ (0,
|
|
5827
|
+
onSearchClick ? /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
5870
5828
|
DropdownMenuItem,
|
|
5871
5829
|
{
|
|
5872
5830
|
onClick: onSearchClick,
|
|
5873
5831
|
className: "cursor-pointer",
|
|
5874
5832
|
children: [
|
|
5875
|
-
/* @__PURE__ */ (0,
|
|
5876
|
-
/* @__PURE__ */ (0,
|
|
5833
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SearchIcon, { className: "size-5 text-gray-700 dark:text-zinc-300" }),
|
|
5834
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "inline", children: "Search" })
|
|
5877
5835
|
]
|
|
5878
5836
|
}
|
|
5879
5837
|
) : null
|
|
@@ -5887,18 +5845,18 @@ var import_react21 = __toESM(require("react"), 1);
|
|
|
5887
5845
|
|
|
5888
5846
|
// components/ui/context-menu.tsx
|
|
5889
5847
|
var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"), 1);
|
|
5890
|
-
var
|
|
5848
|
+
var import_jsx_runtime84 = require("react/jsx-runtime");
|
|
5891
5849
|
function ContextMenu(_a) {
|
|
5892
5850
|
var props = __objRest(_a, []);
|
|
5893
|
-
return /* @__PURE__ */ (0,
|
|
5851
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(ContextMenuPrimitive.Root, __spreadValues({ "data-slot": "context-menu" }, props));
|
|
5894
5852
|
}
|
|
5895
5853
|
function ContextMenuTrigger(_a) {
|
|
5896
5854
|
var props = __objRest(_a, []);
|
|
5897
|
-
return /* @__PURE__ */ (0,
|
|
5855
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(ContextMenuPrimitive.Trigger, __spreadValues({ "data-slot": "context-menu-trigger" }, props));
|
|
5898
5856
|
}
|
|
5899
5857
|
function ContextMenuContent(_a) {
|
|
5900
5858
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5901
|
-
return /* @__PURE__ */ (0,
|
|
5859
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
5902
5860
|
ContextMenuPrimitive.Content,
|
|
5903
5861
|
__spreadValues({
|
|
5904
5862
|
"data-slot": "context-menu-content",
|
|
@@ -5919,7 +5877,7 @@ function ContextMenuItem(_a) {
|
|
|
5919
5877
|
"inset",
|
|
5920
5878
|
"variant"
|
|
5921
5879
|
]);
|
|
5922
|
-
return /* @__PURE__ */ (0,
|
|
5880
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
5923
5881
|
ContextMenuPrimitive.Item,
|
|
5924
5882
|
__spreadValues({
|
|
5925
5883
|
"data-slot": "context-menu-item",
|
|
@@ -5934,7 +5892,7 @@ function ContextMenuItem(_a) {
|
|
|
5934
5892
|
}
|
|
5935
5893
|
function ContextMenuSeparator(_a) {
|
|
5936
5894
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5937
|
-
return /* @__PURE__ */ (0,
|
|
5895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
5938
5896
|
ContextMenuPrimitive.Separator,
|
|
5939
5897
|
__spreadValues({
|
|
5940
5898
|
"data-slot": "context-menu-separator",
|
|
@@ -5944,7 +5902,7 @@ function ContextMenuSeparator(_a) {
|
|
|
5944
5902
|
}
|
|
5945
5903
|
|
|
5946
5904
|
// components/cards/card-context-menu.tsx
|
|
5947
|
-
var
|
|
5905
|
+
var import_jsx_runtime85 = require("react/jsx-runtime");
|
|
5948
5906
|
function CardContextMenu({
|
|
5949
5907
|
children,
|
|
5950
5908
|
menuItems,
|
|
@@ -5959,8 +5917,8 @@ function CardContextMenu({
|
|
|
5959
5917
|
const MenuItemComponent = isDropdown ? DropdownMenuItem : ContextMenuItem;
|
|
5960
5918
|
const SeparatorComponent = isDropdown ? DropdownMenuSeparator : ContextMenuSeparator;
|
|
5961
5919
|
const nextItemIsDestructive = index < menuItems.length - 1 && menuItems[index + 1].variant === "destructive";
|
|
5962
|
-
return /* @__PURE__ */ (0,
|
|
5963
|
-
/* @__PURE__ */ (0,
|
|
5920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_react21.default.Fragment, { children: [
|
|
5921
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
|
|
5964
5922
|
MenuItemComponent,
|
|
5965
5923
|
{
|
|
5966
5924
|
onClick: item.onClick,
|
|
@@ -5971,40 +5929,40 @@ function CardContextMenu({
|
|
|
5971
5929
|
]
|
|
5972
5930
|
}
|
|
5973
5931
|
),
|
|
5974
|
-
nextItemIsDestructive && !isLast && /* @__PURE__ */ (0,
|
|
5932
|
+
nextItemIsDestructive && !isLast && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(SeparatorComponent, { className: "bg-gray-200 dark:bg-zinc-700" })
|
|
5975
5933
|
] }, index);
|
|
5976
5934
|
});
|
|
5977
5935
|
};
|
|
5978
|
-
return /* @__PURE__ */ (0,
|
|
5979
|
-
/* @__PURE__ */ (0,
|
|
5936
|
+
return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(ContextMenu, { children: [
|
|
5937
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(ContextMenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "relative w-full h-full", children: [
|
|
5980
5938
|
children,
|
|
5981
|
-
shouldShowMenu && /* @__PURE__ */ (0,
|
|
5939
|
+
shouldShowMenu && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
5982
5940
|
"div",
|
|
5983
5941
|
{
|
|
5984
5942
|
className: "absolute top-0 right-0 z-10 md:hidden",
|
|
5985
5943
|
onClick: (e) => e.stopPropagation(),
|
|
5986
|
-
children: /* @__PURE__ */ (0,
|
|
5987
|
-
/* @__PURE__ */ (0,
|
|
5944
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(DropdownMenu, { children: [
|
|
5945
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
5988
5946
|
Button,
|
|
5989
5947
|
{
|
|
5990
5948
|
variant: "ghost",
|
|
5991
5949
|
size: "icon",
|
|
5992
5950
|
radius: "full",
|
|
5993
5951
|
className: "focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
5994
|
-
children: /* @__PURE__ */ (0,
|
|
5952
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(MoveVerticalIcon, { className: "size-4 text-gray-700 dark:text-zinc-300" })
|
|
5995
5953
|
}
|
|
5996
5954
|
) }),
|
|
5997
|
-
/* @__PURE__ */ (0,
|
|
5955
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(DropdownMenuContent, { className: "w-56 rounded-2xl shadow-xl bg-white/50 dark:bg-zinc-900/80 backdrop-blur-2xl border-gray-200 dark:border-zinc-700", children: renderMenuItems(true) })
|
|
5998
5956
|
] })
|
|
5999
5957
|
}
|
|
6000
5958
|
)
|
|
6001
5959
|
] }) }),
|
|
6002
|
-
shouldShowMenu && /* @__PURE__ */ (0,
|
|
5960
|
+
shouldShowMenu && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(ContextMenuContent, { className: "w-56 rounded-2xl shadow-xl bg-white/50 dark:bg-zinc-900/80 backdrop-blur-2xl border-gray-200 dark:border-zinc-700", children: renderMenuItems(false) })
|
|
6003
5961
|
] });
|
|
6004
5962
|
}
|
|
6005
5963
|
|
|
6006
5964
|
// components/cards/file-card.tsx
|
|
6007
|
-
var
|
|
5965
|
+
var import_jsx_runtime86 = require("react/jsx-runtime");
|
|
6008
5966
|
function FileCard({
|
|
6009
5967
|
file,
|
|
6010
5968
|
isSelected,
|
|
@@ -6050,45 +6008,45 @@ function FileCard({
|
|
|
6050
6008
|
const menuItems = [
|
|
6051
6009
|
{
|
|
6052
6010
|
label: "Edit",
|
|
6053
|
-
icon: /* @__PURE__ */ (0,
|
|
6011
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(EditIcon, { className: "size-6" }),
|
|
6054
6012
|
onClick: handleEdit
|
|
6055
6013
|
},
|
|
6056
6014
|
{
|
|
6057
6015
|
label: "Select File",
|
|
6058
|
-
icon: /* @__PURE__ */ (0,
|
|
6016
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(SelectIcon, { className: "size-6" }),
|
|
6059
6017
|
onClick: handleSelectFile
|
|
6060
6018
|
},
|
|
6061
6019
|
{
|
|
6062
6020
|
label: "Move to...",
|
|
6063
|
-
icon: /* @__PURE__ */ (0,
|
|
6021
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(MoveIcon, { className: "size-6" }),
|
|
6064
6022
|
onClick: handleMove
|
|
6065
6023
|
},
|
|
6066
6024
|
{
|
|
6067
6025
|
label: "Delete",
|
|
6068
|
-
icon: /* @__PURE__ */ (0,
|
|
6026
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(TrashIcon, { className: "size-6 text-red-600" }),
|
|
6069
6027
|
onClick: handleDelete,
|
|
6070
6028
|
variant: "destructive"
|
|
6071
6029
|
}
|
|
6072
6030
|
];
|
|
6073
|
-
return /* @__PURE__ */ (0,
|
|
6031
|
+
return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
6074
6032
|
CardContextMenu,
|
|
6075
6033
|
{
|
|
6076
6034
|
menuItems,
|
|
6077
6035
|
isInSelectionMode,
|
|
6078
6036
|
mode,
|
|
6079
|
-
children: /* @__PURE__ */ (0,
|
|
6037
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
|
|
6080
6038
|
"div",
|
|
6081
6039
|
{
|
|
6082
6040
|
className: "group relative flex flex-col items-center justify-start transition-all duration-200 cursor-pointer w-full select-none",
|
|
6083
6041
|
onDoubleClick: handleClick,
|
|
6084
6042
|
onClick: handleClick,
|
|
6085
6043
|
children: [
|
|
6086
|
-
/* @__PURE__ */ (0,
|
|
6044
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: `
|
|
6087
6045
|
relative w-full aspect-square flex items-center justify-center mb-1 overflow-hidden rounded-2xl hover:bg-accent/60
|
|
6088
6046
|
${isSelected ? "bg-accent/60" : ""}
|
|
6089
6047
|
`, children: [
|
|
6090
|
-
/* @__PURE__ */ (0,
|
|
6091
|
-
(selectionMode === SELECTION_MODE.MULTIPLE || showCheckbox) && /* @__PURE__ */ (0,
|
|
6048
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "w-[75%] h-[75%] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(FilePreviewComponent, { file, metaData: file.metaData }) }),
|
|
6049
|
+
(selectionMode === SELECTION_MODE.MULTIPLE || showCheckbox) && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: `absolute top-2 left-2 z-10 ${isSelected ? "opacity-100" : "opacity-0 group-hover:opacity-100"} transition-opacity duration-200`, onClick: handleCheckboxClick, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
6092
6050
|
Checkbox,
|
|
6093
6051
|
{
|
|
6094
6052
|
checked: isSelected,
|
|
@@ -6097,14 +6055,14 @@ function FileCard({
|
|
|
6097
6055
|
}
|
|
6098
6056
|
) })
|
|
6099
6057
|
] }),
|
|
6100
|
-
/* @__PURE__ */ (0,
|
|
6101
|
-
/* @__PURE__ */ (0,
|
|
6058
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "w-full text-center px-0.5 flex flex-col items-center", children: [
|
|
6059
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: `
|
|
6102
6060
|
text-[13px] font-semibold leading-[1.3] tracking-tight line-clamp-2 px-2.5 py-[2px] rounded-[6px] transition-colors duration-100 wrap-break-word max-w-full
|
|
6103
6061
|
${isSelected ? "bg-primary text-primary-foreground antialiased shadow-sm" : "text-foreground group-hover:text-foreground/80"}
|
|
6104
6062
|
`, children: file.name }),
|
|
6105
|
-
/* @__PURE__ */ (0,
|
|
6106
|
-
/* @__PURE__ */ (0,
|
|
6107
|
-
FileMetadataComponent ? /* @__PURE__ */ (0,
|
|
6063
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: `flex flex-col items-center justify-center gap-0.5 mt-1 transition-opacity duration-200 ${isSelected ? "opacity-60" : "opacity-100"}`, children: [
|
|
6064
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "text-[11px] text-primary font-medium tracking-tight", children: getFileSize(file.size) }),
|
|
6065
|
+
FileMetadataComponent ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "text-[11px] text-muted-foreground flex items-center scale-95", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(FileMetadataComponent, { file }) }) : null
|
|
6108
6066
|
] })
|
|
6109
6067
|
] })
|
|
6110
6068
|
]
|
|
@@ -6115,7 +6073,7 @@ function FileCard({
|
|
|
6115
6073
|
}
|
|
6116
6074
|
|
|
6117
6075
|
// components/cards/folder-card.tsx
|
|
6118
|
-
var
|
|
6076
|
+
var import_jsx_runtime87 = require("react/jsx-runtime");
|
|
6119
6077
|
function FolderCard({
|
|
6120
6078
|
folder,
|
|
6121
6079
|
isSelected,
|
|
@@ -6160,45 +6118,45 @@ function FolderCard({
|
|
|
6160
6118
|
const menuItems = [
|
|
6161
6119
|
{
|
|
6162
6120
|
label: "Rename",
|
|
6163
|
-
icon: /* @__PURE__ */ (0,
|
|
6121
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(EditIcon, { className: "size-6" }),
|
|
6164
6122
|
onClick: handleRename
|
|
6165
6123
|
},
|
|
6166
6124
|
{
|
|
6167
6125
|
label: "Select Folder",
|
|
6168
|
-
icon: /* @__PURE__ */ (0,
|
|
6126
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(SelectIcon, { className: "size-6" }),
|
|
6169
6127
|
onClick: handleSelectFolder
|
|
6170
6128
|
},
|
|
6171
6129
|
{
|
|
6172
6130
|
label: "Move to...",
|
|
6173
|
-
icon: /* @__PURE__ */ (0,
|
|
6131
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(MoveIcon, { className: "size-5 mr-1" }),
|
|
6174
6132
|
onClick: handleMove
|
|
6175
6133
|
},
|
|
6176
6134
|
{
|
|
6177
6135
|
label: "Delete",
|
|
6178
|
-
icon: /* @__PURE__ */ (0,
|
|
6136
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(TrashIcon, { className: "size-5 mr-1 text-red-600" }),
|
|
6179
6137
|
onClick: handleDelete,
|
|
6180
6138
|
variant: "destructive"
|
|
6181
6139
|
}
|
|
6182
6140
|
];
|
|
6183
|
-
return /* @__PURE__ */ (0,
|
|
6141
|
+
return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
6184
6142
|
CardContextMenu,
|
|
6185
6143
|
{
|
|
6186
6144
|
menuItems,
|
|
6187
6145
|
isInSelectionMode,
|
|
6188
6146
|
mode,
|
|
6189
|
-
children: /* @__PURE__ */ (0,
|
|
6147
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
|
|
6190
6148
|
"div",
|
|
6191
6149
|
{
|
|
6192
6150
|
className: "group relative flex flex-col items-center justify-start transition-all duration-200 cursor-pointer w-full select-none",
|
|
6193
6151
|
onDoubleClick: handleClick,
|
|
6194
6152
|
onClick: handleClick,
|
|
6195
6153
|
children: [
|
|
6196
|
-
/* @__PURE__ */ (0,
|
|
6154
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: `
|
|
6197
6155
|
relative w-full aspect-square flex items-center justify-center mb-1 overflow-hidden rounded-2xl hover:bg-accent/60
|
|
6198
6156
|
${isSelected ? "bg-accent/60" : ""}
|
|
6199
6157
|
`, children: [
|
|
6200
|
-
/* @__PURE__ */ (0,
|
|
6201
|
-
(selectionMode === SELECTION_MODE.MULTIPLE || showCheckbox) && /* @__PURE__ */ (0,
|
|
6158
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "w-[75%] h-[75%] flex items-center justify-center transform dark:brightness-[2]", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(FolderIcon, { className: "w-full h-full text-blue-400 fill-blue-400/20 drop-shadow-sm", strokeWidth: 1.5 }) }),
|
|
6159
|
+
(selectionMode === SELECTION_MODE.MULTIPLE || showCheckbox) && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: `absolute top-2 left-2 z-10 ${isSelected ? "opacity-100" : "opacity-0 group-hover:opacity-100"} transition-opacity duration-200`, onClick: handleCheckboxClick, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
6202
6160
|
Checkbox,
|
|
6203
6161
|
{
|
|
6204
6162
|
checked: isSelected,
|
|
@@ -6207,12 +6165,12 @@ function FolderCard({
|
|
|
6207
6165
|
}
|
|
6208
6166
|
) })
|
|
6209
6167
|
] }),
|
|
6210
|
-
/* @__PURE__ */ (0,
|
|
6211
|
-
/* @__PURE__ */ (0,
|
|
6168
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "w-full text-center px-0.5 flex flex-col items-center", children: [
|
|
6169
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: `
|
|
6212
6170
|
text-[13px] font-semibold leading-[1.3] tracking-tight line-clamp-2 px-2.5 pb-[2px] rounded-[6px] transition-colors duration-100 wrap-break-word max-w-full
|
|
6213
6171
|
${isSelected ? "bg-primary text-primary-foreground antialiased shadow-sm" : "text-foreground group-hover:text-foreground/80"}
|
|
6214
6172
|
`, children: folder.name }),
|
|
6215
|
-
/* @__PURE__ */ (0,
|
|
6173
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: `flex items-center justify-center gap-1 mt-1 transition-opacity duration-200 ${isSelected ? "opacity-60" : "opacity-100"}`, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "text-[11px] text-primary font-medium tracking-tight px-1.5 rounded-full", children: [
|
|
6216
6174
|
folder.fileCount,
|
|
6217
6175
|
" items"
|
|
6218
6176
|
] }) })
|
|
@@ -6225,7 +6183,7 @@ function FolderCard({
|
|
|
6225
6183
|
}
|
|
6226
6184
|
|
|
6227
6185
|
// components/grid/unified-grid.tsx
|
|
6228
|
-
var
|
|
6186
|
+
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
6229
6187
|
function UnifiedGrid() {
|
|
6230
6188
|
const {
|
|
6231
6189
|
files,
|
|
@@ -6258,19 +6216,19 @@ function UnifiedGrid() {
|
|
|
6258
6216
|
};
|
|
6259
6217
|
const skeletonCount = getSkeletonCount();
|
|
6260
6218
|
if (isLoading) {
|
|
6261
|
-
return /* @__PURE__ */ (0,
|
|
6219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "p-4 grid grid-cols-2 gap-x-4 gap-y-8 sm:grid-cols-3 md:grid-cols-5 lg:grid-cols-6 xl:grid-cols-7 2xl:grid-cols-8 content-start", children: Array.from({ length: skeletonCount }).map((_, i) => {
|
|
6262
6220
|
var _a;
|
|
6263
|
-
return /* @__PURE__ */ (0,
|
|
6264
|
-
/* @__PURE__ */ (0,
|
|
6265
|
-
/* @__PURE__ */ (0,
|
|
6266
|
-
/* @__PURE__ */ (0,
|
|
6267
|
-
/* @__PURE__ */ (0,
|
|
6221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "flex flex-col items-center justify-start w-full gap-2", children: [
|
|
6222
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "w-full aspect-square bg-muted rounded-2xl animate-pulse" }),
|
|
6223
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "flex flex-col items-center gap-1 w-full", children: [
|
|
6224
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "h-4 w-20 bg-muted rounded animate-pulse" }),
|
|
6225
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "h-3 w-12 bg-muted rounded animate-pulse" })
|
|
6268
6226
|
] })
|
|
6269
6227
|
] }, `skeleton-${(_a = currentFolder == null ? void 0 : currentFolder.id) != null ? _a : "root"}-${i}`);
|
|
6270
6228
|
}) });
|
|
6271
6229
|
}
|
|
6272
|
-
return /* @__PURE__ */ (0,
|
|
6273
|
-
folders.map((folder) => /* @__PURE__ */ (0,
|
|
6230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "p-4 grid grid-cols-2 gap-x-4 gap-y-8 sm:grid-cols-3 md:grid-cols-5 lg:grid-cols-6 xl:grid-cols-7 2xl:grid-cols-8 content-start", children: [
|
|
6231
|
+
folders.map((folder) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
6274
6232
|
FolderCard,
|
|
6275
6233
|
{
|
|
6276
6234
|
folder,
|
|
@@ -6292,7 +6250,7 @@ function UnifiedGrid() {
|
|
|
6292
6250
|
},
|
|
6293
6251
|
folder.id
|
|
6294
6252
|
)),
|
|
6295
|
-
files.map((file) => /* @__PURE__ */ (0,
|
|
6253
|
+
files.map((file) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
6296
6254
|
FileCard,
|
|
6297
6255
|
{
|
|
6298
6256
|
file,
|
|
@@ -6318,7 +6276,7 @@ function UnifiedGrid() {
|
|
|
6318
6276
|
|
|
6319
6277
|
// components/error-boundary.tsx
|
|
6320
6278
|
var import_react22 = require("react");
|
|
6321
|
-
var
|
|
6279
|
+
var import_jsx_runtime89 = require("react/jsx-runtime");
|
|
6322
6280
|
var FileManagerErrorBoundary = class extends import_react22.Component {
|
|
6323
6281
|
constructor(props) {
|
|
6324
6282
|
super(props);
|
|
@@ -6344,16 +6302,16 @@ var FileManagerErrorBoundary = class extends import_react22.Component {
|
|
|
6344
6302
|
if (this.props.fallback) {
|
|
6345
6303
|
return this.props.fallback;
|
|
6346
6304
|
}
|
|
6347
|
-
return /* @__PURE__ */ (0,
|
|
6348
|
-
/* @__PURE__ */ (0,
|
|
6349
|
-
/* @__PURE__ */ (0,
|
|
6350
|
-
/* @__PURE__ */ (0,
|
|
6351
|
-
this.state.error && /* @__PURE__ */ (0,
|
|
6352
|
-
/* @__PURE__ */ (0,
|
|
6353
|
-
/* @__PURE__ */ (0,
|
|
6305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "flex items-center justify-center min-h-[400px] p-8 w-full h-full bg-slate-50/50 rounded-lg border border-dashed border-slate-200", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "text-center max-w-md flex flex-col items-center", children: [
|
|
6306
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "bg-red-100 p-3 rounded-full mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(AlertCircleIcon, { className: "size-8 text-red-600" }) }),
|
|
6307
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("h2", { className: "text-xl font-semibold text-slate-900 mb-2", children: "Something went wrong" }),
|
|
6308
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { className: "text-sm text-slate-500 mb-6", children: "The file manager encountered an unexpected error. Refreshing the page usually resolves this issue." }),
|
|
6309
|
+
this.state.error && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("details", { className: "mb-6 text-left w-full border border-slate-200 rounded-lg overflow-hidden flex-col group", children: [
|
|
6310
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("summary", { className: "cursor-pointer text-xs font-mono bg-slate-100 p-2 text-slate-600 hover:bg-slate-200 transition-colors", children: "View Technical Details" }),
|
|
6311
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "p-3 bg-white dark:bg-zinc-900", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("pre", { className: "text-[10px] text-slate-600 font-mono whitespace-pre-wrap word-break-all max-h-40 overflow-auto", children: this.state.error.toString() }) })
|
|
6354
6312
|
] }),
|
|
6355
|
-
/* @__PURE__ */ (0,
|
|
6356
|
-
/* @__PURE__ */ (0,
|
|
6313
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Button, { onClick: this.handleReset, radius: "full", className: "gap-2", children: [
|
|
6314
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(RefreshCwIcon, { className: "size-4" }),
|
|
6357
6315
|
"Reload Application"
|
|
6358
6316
|
] })
|
|
6359
6317
|
] }) });
|
|
@@ -6407,28 +6365,28 @@ function KeyboardShortcuts() {
|
|
|
6407
6365
|
}
|
|
6408
6366
|
|
|
6409
6367
|
// components/file-manager.tsx
|
|
6410
|
-
var
|
|
6368
|
+
var import_jsx_runtime90 = require("react/jsx-runtime");
|
|
6411
6369
|
function FileManager(props) {
|
|
6412
|
-
return /* @__PURE__ */ (0,
|
|
6413
|
-
/* @__PURE__ */ (0,
|
|
6414
|
-
/* @__PURE__ */ (0,
|
|
6415
|
-
/* @__PURE__ */ (0,
|
|
6416
|
-
/* @__PURE__ */ (0,
|
|
6417
|
-
/* @__PURE__ */ (0,
|
|
6418
|
-
/* @__PURE__ */ (0,
|
|
6370
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(FileManagerErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(FileManagerComposition.Page, __spreadProps(__spreadValues({}, props), { children: [
|
|
6371
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(KeyboardShortcuts, {}),
|
|
6372
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex h-full relative pb-12 overflow-hidden bg-background text-foreground", children: [
|
|
6373
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex-1 flex w-full flex-col", children: [
|
|
6374
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(FileManagerComposition.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex w-full justify-between gap-2", children: [
|
|
6375
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(HeaderNavigation, {}),
|
|
6376
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(ResponsiveHeaderActions, {})
|
|
6419
6377
|
] }) }),
|
|
6420
|
-
/* @__PURE__ */ (0,
|
|
6421
|
-
/* @__PURE__ */ (0,
|
|
6422
|
-
/* @__PURE__ */ (0,
|
|
6378
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(BulkActionsFloating, { className: "-mb-1" }),
|
|
6379
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(UnifiedGrid, {}),
|
|
6380
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(FileManagerComposition.Footer, { className: "pt-6 pb-10" })
|
|
6423
6381
|
] }),
|
|
6424
|
-
/* @__PURE__ */ (0,
|
|
6382
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(FileManagerComposition.Overlays, {})
|
|
6425
6383
|
] })
|
|
6426
6384
|
] })) });
|
|
6427
6385
|
}
|
|
6428
6386
|
|
|
6429
6387
|
// components/file-manager-modal.tsx
|
|
6430
6388
|
var import_react24 = require("react");
|
|
6431
|
-
var
|
|
6389
|
+
var import_jsx_runtime91 = require("react/jsx-runtime");
|
|
6432
6390
|
function FileManagerModal(_a) {
|
|
6433
6391
|
var _b = _a, {
|
|
6434
6392
|
open,
|
|
@@ -6437,7 +6395,7 @@ function FileManagerModal(_a) {
|
|
|
6437
6395
|
"open",
|
|
6438
6396
|
"onClose"
|
|
6439
6397
|
]);
|
|
6440
|
-
return /* @__PURE__ */ (0,
|
|
6398
|
+
return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(FileManagerComposition.Modal, __spreadProps(__spreadValues({}, props), { onClose, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Dialog, { open, onOpenChange: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ModalContent, { onClose }) }) }));
|
|
6441
6399
|
}
|
|
6442
6400
|
function ModalContent({ onClose }) {
|
|
6443
6401
|
const { updateSearchQuery } = useFileManager();
|
|
@@ -6453,13 +6411,13 @@ function ModalContent({ onClose }) {
|
|
|
6453
6411
|
searchInputRef.current.focus();
|
|
6454
6412
|
}
|
|
6455
6413
|
}, [isSearchActive]);
|
|
6456
|
-
return /* @__PURE__ */ (0,
|
|
6457
|
-
/* @__PURE__ */ (0,
|
|
6458
|
-
/* @__PURE__ */ (0,
|
|
6414
|
+
return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(DialogContent, { className: "p-0", variant: "fullscreen", showCloseButton: false, children: [
|
|
6415
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(DialogHeader, { className: "pt-5 pb-3 m-0 border-b border-border", children: [
|
|
6416
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(DialogTitle, { className: "px-6 text-base", children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: "flex w-full justify-between gap-2", children: isSearchActive ? (
|
|
6459
6417
|
/* Inline Search Mode */
|
|
6460
|
-
/* @__PURE__ */ (0,
|
|
6461
|
-
/* @__PURE__ */ (0,
|
|
6462
|
-
/* @__PURE__ */ (0,
|
|
6418
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "flex items-center gap-4 flex-1", children: [
|
|
6419
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(SearchIcon, { className: "size-5 text-gray-500 shrink-0" }),
|
|
6420
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
|
|
6463
6421
|
Input,
|
|
6464
6422
|
{
|
|
6465
6423
|
ref: searchInputRef,
|
|
@@ -6477,7 +6435,7 @@ function ModalContent({ onClose }) {
|
|
|
6477
6435
|
}
|
|
6478
6436
|
}
|
|
6479
6437
|
),
|
|
6480
|
-
/* @__PURE__ */ (0,
|
|
6438
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
|
|
6481
6439
|
CloseButton,
|
|
6482
6440
|
{
|
|
6483
6441
|
onClick: () => {
|
|
@@ -6492,20 +6450,20 @@ function ModalContent({ onClose }) {
|
|
|
6492
6450
|
] })
|
|
6493
6451
|
) : (
|
|
6494
6452
|
/* Normal Header Mode */
|
|
6495
|
-
/* @__PURE__ */ (0,
|
|
6496
|
-
/* @__PURE__ */ (0,
|
|
6497
|
-
/* @__PURE__ */ (0,
|
|
6498
|
-
/* @__PURE__ */ (0,
|
|
6453
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [
|
|
6454
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(HeaderNavigation, {}),
|
|
6455
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ModalResponsiveHeaderActions, { onSearchClick: () => setIsSearchActive(true) }),
|
|
6456
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(CloseButton, { onClick: onClose })
|
|
6499
6457
|
] })
|
|
6500
6458
|
) }) }),
|
|
6501
|
-
/* @__PURE__ */ (0,
|
|
6459
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(DialogDescription, { className: "sr-only", children: "Browse and select files from your media library" })
|
|
6502
6460
|
] }),
|
|
6503
|
-
/* @__PURE__ */ (0,
|
|
6504
|
-
/* @__PURE__ */ (0,
|
|
6505
|
-
/* @__PURE__ */ (0,
|
|
6506
|
-
/* @__PURE__ */ (0,
|
|
6461
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "overflow-y-auto flex-1 pb-4", children: [
|
|
6462
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(UnifiedGrid, {}),
|
|
6463
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(FileManagerComposition.Footer, { className: "my-4" }),
|
|
6464
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(FileManagerComposition.Overlays, {})
|
|
6507
6465
|
] }),
|
|
6508
|
-
/* @__PURE__ */ (0,
|
|
6466
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(FileManagerModalFooter, { onClose })
|
|
6509
6467
|
] });
|
|
6510
6468
|
}
|
|
6511
6469
|
function FileManagerModalFooter({ onClose }) {
|
|
@@ -6527,10 +6485,10 @@ function FileManagerModalFooter({ onClose }) {
|
|
|
6527
6485
|
onClose();
|
|
6528
6486
|
}
|
|
6529
6487
|
};
|
|
6530
|
-
return /* @__PURE__ */ (0,
|
|
6531
|
-
/* @__PURE__ */ (0,
|
|
6532
|
-
/* @__PURE__ */ (0,
|
|
6533
|
-
/* @__PURE__ */ (0,
|
|
6488
|
+
return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(DialogFooter, { className: "px-6 py-4 border-t border-border w-full sm:justify-between justify-center items-center flex-col sm:flex-row gap-2", children: [
|
|
6489
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(BulkActionsStatic, {}),
|
|
6490
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsx)(DialogClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Button, { type: "button", variant: "outline", onClick: onClose, radius: "full", className: "w-full md:w-auto mr-0", children: "Cancel" }) }),
|
|
6491
|
+
/* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(
|
|
6534
6492
|
Button,
|
|
6535
6493
|
{
|
|
6536
6494
|
type: "button",
|