@amogads/ui 1.1.4 → 1.1.6
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.js +1737 -466
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1743 -437
- package/dist/index.mjs.map +1 -1
- package/dist/pages.js +6365 -6279
- package/dist/pages.js.map +1 -1
- package/dist/pages.mjs +6265 -6178
- package/dist/pages.mjs.map +1 -1
- package/dist/server.js +6 -3
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +6 -3
- package/dist/server.mjs.map +1 -1
- package/dist/services.js +6 -1
- package/dist/services.js.map +1 -1
- package/dist/services.mjs +6 -1
- package/dist/services.mjs.map +1 -1
- package/dist/stores.js +1 -0
- package/dist/stores.js.map +1 -1
- package/dist/stores.mjs +1 -0
- package/dist/stores.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -198,7 +198,10 @@ __export(design_system_exports, {
|
|
|
198
198
|
FieldSeparator: () => FieldSeparator,
|
|
199
199
|
FieldSet: () => FieldSet,
|
|
200
200
|
FieldTitle: () => FieldTitle,
|
|
201
|
+
FileCardItem: () => FileCardItem,
|
|
202
|
+
FileUploadForm: () => FileUploadForm,
|
|
201
203
|
FilterBar: () => FilterBar,
|
|
204
|
+
FolderTreeItem: () => FolderTreeItem,
|
|
202
205
|
Form: () => Form,
|
|
203
206
|
FormControl: () => FormControl,
|
|
204
207
|
FormDescription: () => FormDescription,
|
|
@@ -351,6 +354,7 @@ __export(design_system_exports, {
|
|
|
351
354
|
Spinner: () => Spinner,
|
|
352
355
|
Stats01: () => Stats01,
|
|
353
356
|
StatusBadge: () => StatusBadge,
|
|
357
|
+
StorageStatCard: () => StorageStatCard,
|
|
354
358
|
Switch: () => Switch,
|
|
355
359
|
Table: () => Table,
|
|
356
360
|
TableBody: () => TableBody,
|
|
@@ -378,12 +382,16 @@ __export(design_system_exports, {
|
|
|
378
382
|
TooltipTrigger: () => TooltipTrigger,
|
|
379
383
|
TopNav: () => TopNav,
|
|
380
384
|
TypingIndicator: () => TypingIndicator,
|
|
385
|
+
UserFileCardsView: () => UserFileCardsView,
|
|
381
386
|
WizardTemplate: () => WizardTemplate,
|
|
382
387
|
WorkspaceTemplate: () => WorkspaceTemplate,
|
|
383
388
|
badgeVariants: () => badgeVariants,
|
|
384
389
|
buttonGroupVariants: () => buttonGroupVariants,
|
|
385
390
|
buttonVariants: () => buttonVariants,
|
|
386
391
|
downloadQrCode: () => downloadQrCode,
|
|
392
|
+
formatBytes: () => formatBytes,
|
|
393
|
+
formatTimeAgo: () => formatTimeAgo,
|
|
394
|
+
getFileCategoryTheme: () => getFileCategoryTheme,
|
|
387
395
|
navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
|
|
388
396
|
sidebarData: () => sidebarData2,
|
|
389
397
|
statusBadgeVariants: () => statusBadgeVariants,
|
|
@@ -11382,8 +11390,1262 @@ function AiChatHeader({
|
|
|
11382
11390
|
);
|
|
11383
11391
|
}
|
|
11384
11392
|
|
|
11393
|
+
// src/design-system/components/files/file-card-item.tsx
|
|
11394
|
+
var import_lucide_react48 = require("lucide-react");
|
|
11395
|
+
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
11396
|
+
function formatBytes(bytes, decimals = 1) {
|
|
11397
|
+
if (!bytes || bytes === 0) return "0 B";
|
|
11398
|
+
const k = 1024;
|
|
11399
|
+
const dm = decimals < 0 ? 0 : decimals;
|
|
11400
|
+
const sizes = ["B", "KB", "MB", "GB", "TB"];
|
|
11401
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
11402
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
|
11403
|
+
}
|
|
11404
|
+
function getFileCategoryTheme(category) {
|
|
11405
|
+
const cat = (category || "").toLowerCase();
|
|
11406
|
+
if (cat.includes("pdf")) {
|
|
11407
|
+
return {
|
|
11408
|
+
name: "Pdf",
|
|
11409
|
+
icon: import_lucide_react48.FileText,
|
|
11410
|
+
badgeColor: "bg-red-500/10 text-red-600 dark:text-red-400 border-red-200/50",
|
|
11411
|
+
iconColor: "text-red-500",
|
|
11412
|
+
bgColor: "bg-red-50 dark:bg-red-950/30"
|
|
11413
|
+
};
|
|
11414
|
+
}
|
|
11415
|
+
if (cat.includes("doc") || cat.includes("word") || cat.includes("txt")) {
|
|
11416
|
+
return {
|
|
11417
|
+
name: "Doc",
|
|
11418
|
+
icon: import_lucide_react48.FileText,
|
|
11419
|
+
badgeColor: "bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-200/50",
|
|
11420
|
+
iconColor: "text-blue-500",
|
|
11421
|
+
bgColor: "bg-blue-50 dark:bg-blue-950/30"
|
|
11422
|
+
};
|
|
11423
|
+
}
|
|
11424
|
+
if (cat.includes("xls") || cat.includes("csv") || cat.includes("sheet")) {
|
|
11425
|
+
return {
|
|
11426
|
+
name: "Spreadsheet",
|
|
11427
|
+
icon: import_lucide_react48.FileSpreadsheet,
|
|
11428
|
+
badgeColor: "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 border-emerald-200/50",
|
|
11429
|
+
iconColor: "text-emerald-500",
|
|
11430
|
+
bgColor: "bg-emerald-50 dark:bg-emerald-950/30"
|
|
11431
|
+
};
|
|
11432
|
+
}
|
|
11433
|
+
if (cat.includes("image") || cat.includes("img") || cat.includes("png") || cat.includes("jpg")) {
|
|
11434
|
+
return {
|
|
11435
|
+
name: "Images",
|
|
11436
|
+
icon: import_lucide_react48.Image,
|
|
11437
|
+
badgeColor: "bg-amber-500/10 text-amber-600 dark:text-amber-400 border-amber-200/50",
|
|
11438
|
+
iconColor: "text-amber-500",
|
|
11439
|
+
bgColor: "bg-amber-50 dark:bg-amber-950/30"
|
|
11440
|
+
};
|
|
11441
|
+
}
|
|
11442
|
+
if (cat.includes("video") || cat.includes("mp4") || cat.includes("mov")) {
|
|
11443
|
+
return {
|
|
11444
|
+
name: "Videos",
|
|
11445
|
+
icon: import_lucide_react48.Film,
|
|
11446
|
+
badgeColor: "bg-purple-500/10 text-purple-600 dark:text-purple-400 border-purple-200/50",
|
|
11447
|
+
iconColor: "text-purple-500",
|
|
11448
|
+
bgColor: "bg-purple-50 dark:bg-purple-950/30"
|
|
11449
|
+
};
|
|
11450
|
+
}
|
|
11451
|
+
if (cat.includes("zip") || cat.includes("rar") || cat.includes("tar")) {
|
|
11452
|
+
return {
|
|
11453
|
+
name: "Archives",
|
|
11454
|
+
icon: import_lucide_react48.Archive,
|
|
11455
|
+
badgeColor: "bg-orange-500/10 text-orange-600 dark:text-orange-400 border-orange-200/50",
|
|
11456
|
+
iconColor: "text-orange-500",
|
|
11457
|
+
bgColor: "bg-orange-50 dark:bg-orange-950/30"
|
|
11458
|
+
};
|
|
11459
|
+
}
|
|
11460
|
+
return {
|
|
11461
|
+
name: "Other",
|
|
11462
|
+
icon: import_lucide_react48.File,
|
|
11463
|
+
badgeColor: "bg-muted text-muted-foreground border-border/80",
|
|
11464
|
+
iconColor: "text-muted-foreground",
|
|
11465
|
+
bgColor: "bg-muted/40"
|
|
11466
|
+
};
|
|
11467
|
+
}
|
|
11468
|
+
function formatTimeAgo(dateString) {
|
|
11469
|
+
if (!dateString) return "recently";
|
|
11470
|
+
try {
|
|
11471
|
+
const d = new Date(dateString);
|
|
11472
|
+
const diff = (Date.now() - d.getTime()) / 1e3;
|
|
11473
|
+
if (diff < 60) return "just now";
|
|
11474
|
+
if (diff < 3600) return `${Math.floor(diff / 60)} mins ago`;
|
|
11475
|
+
if (diff < 86400) {
|
|
11476
|
+
const hours = Math.floor(diff / 3600);
|
|
11477
|
+
return `${hours} hour${hours > 1 ? "s" : ""} ago`;
|
|
11478
|
+
}
|
|
11479
|
+
const days = Math.floor(diff / 86400);
|
|
11480
|
+
return `${days} day${days > 1 ? "s" : ""} ago`;
|
|
11481
|
+
} catch {
|
|
11482
|
+
return "recently";
|
|
11483
|
+
}
|
|
11484
|
+
}
|
|
11485
|
+
function FileCardItem({
|
|
11486
|
+
file,
|
|
11487
|
+
viewMode = "grid",
|
|
11488
|
+
isSelected = false,
|
|
11489
|
+
onSelect,
|
|
11490
|
+
onPreview,
|
|
11491
|
+
onDownload,
|
|
11492
|
+
onDelete,
|
|
11493
|
+
onCopyLink,
|
|
11494
|
+
onRename,
|
|
11495
|
+
onShare,
|
|
11496
|
+
className
|
|
11497
|
+
}) {
|
|
11498
|
+
const theme = getFileCategoryTheme(file.category);
|
|
11499
|
+
const isImage = theme.name === "Images" || file.fileName.match(/\.(jpg|jpeg|png|webp|gif|svg)$/i) || file.fileUrl && file.fileUrl.startsWith("http") && !file.fileUrl.endsWith(".pdf");
|
|
11500
|
+
if (viewMode === "table") {
|
|
11501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11502
|
+
"tr",
|
|
11503
|
+
{
|
|
11504
|
+
className: cn(
|
|
11505
|
+
"group border-b border-border/60 transition-colors hover:bg-muted/40 text-xs",
|
|
11506
|
+
isSelected && "bg-primary/5",
|
|
11507
|
+
className
|
|
11508
|
+
),
|
|
11509
|
+
children: [
|
|
11510
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-2.5 px-3", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center gap-2.5 min-w-0", children: [
|
|
11511
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11512
|
+
"div",
|
|
11513
|
+
{
|
|
11514
|
+
className: cn(
|
|
11515
|
+
"flex h-7 w-7 items-center justify-center rounded-lg shrink-0",
|
|
11516
|
+
theme.bgColor,
|
|
11517
|
+
theme.iconColor
|
|
11518
|
+
),
|
|
11519
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(theme.icon, { className: "h-3.5 w-3.5" })
|
|
11520
|
+
}
|
|
11521
|
+
),
|
|
11522
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "font-semibold text-foreground truncate max-w-[200px]", children: file.fileName })
|
|
11523
|
+
] }) }),
|
|
11524
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-2.5 px-3 text-muted-foreground truncate max-w-[140px]", children: file.folderPath || file.section || "General" }),
|
|
11525
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-2.5 px-3 text-muted-foreground font-mono", children: formatBytes(file.fileSize) }),
|
|
11526
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-2.5 px-3 text-muted-foreground", children: formatTimeAgo(file.updatedAt) }),
|
|
11527
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-2.5 px-3 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-end gap-1", children: [
|
|
11528
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11529
|
+
Button,
|
|
11530
|
+
{
|
|
11531
|
+
size: "sm",
|
|
11532
|
+
variant: "ghost",
|
|
11533
|
+
onClick: () => onPreview?.(file),
|
|
11534
|
+
className: "h-7 px-2.5 rounded-lg bg-indigo-500/10 text-indigo-600 dark:text-indigo-400 hover:bg-indigo-500/20 text-xs font-semibold gap-1.5",
|
|
11535
|
+
children: [
|
|
11536
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5" }),
|
|
11537
|
+
" Preview"
|
|
11538
|
+
]
|
|
11539
|
+
}
|
|
11540
|
+
),
|
|
11541
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11542
|
+
Button,
|
|
11543
|
+
{
|
|
11544
|
+
size: "icon",
|
|
11545
|
+
variant: "ghost",
|
|
11546
|
+
onClick: () => onDownload?.(file),
|
|
11547
|
+
className: "h-7 w-7 rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
11548
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5" })
|
|
11549
|
+
}
|
|
11550
|
+
),
|
|
11551
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenu, { children: [
|
|
11552
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11553
|
+
Button,
|
|
11554
|
+
{
|
|
11555
|
+
size: "icon",
|
|
11556
|
+
variant: "ghost",
|
|
11557
|
+
className: "h-7 w-7 rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
11558
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.MoreHorizontal, { className: "h-3.5 w-3.5" })
|
|
11559
|
+
}
|
|
11560
|
+
) }),
|
|
11561
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuContent, { align: "end", className: "w-40 rounded-xl p-1 shadow-lg", children: [
|
|
11562
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onPreview?.(file), className: "gap-2 text-xs", children: [
|
|
11563
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5" }),
|
|
11564
|
+
" Preview"
|
|
11565
|
+
] }),
|
|
11566
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onDownload?.(file), className: "gap-2 text-xs", children: [
|
|
11567
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5" }),
|
|
11568
|
+
" Download"
|
|
11569
|
+
] }),
|
|
11570
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onCopyLink?.(file), className: "gap-2 text-xs", children: [
|
|
11571
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Copy, { className: "h-3.5 w-3.5" }),
|
|
11572
|
+
" Copy Link"
|
|
11573
|
+
] }),
|
|
11574
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuSeparator, {}),
|
|
11575
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11576
|
+
DropdownMenuItem,
|
|
11577
|
+
{
|
|
11578
|
+
onClick: () => onDelete?.(file),
|
|
11579
|
+
className: "gap-2 text-xs text-destructive focus:text-destructive",
|
|
11580
|
+
children: [
|
|
11581
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Trash2, { className: "h-3.5 w-3.5" }),
|
|
11582
|
+
" Delete"
|
|
11583
|
+
]
|
|
11584
|
+
}
|
|
11585
|
+
)
|
|
11586
|
+
] })
|
|
11587
|
+
] })
|
|
11588
|
+
] }) })
|
|
11589
|
+
]
|
|
11590
|
+
}
|
|
11591
|
+
);
|
|
11592
|
+
}
|
|
11593
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11594
|
+
"div",
|
|
11595
|
+
{
|
|
11596
|
+
className: cn(
|
|
11597
|
+
"group relative flex flex-col justify-between rounded-2xl border border-border/80 bg-card p-2.5 shadow-2xs hover:shadow-md transition-all hover:border-indigo-300 dark:hover:border-indigo-700 select-none",
|
|
11598
|
+
isSelected && "ring-2 ring-indigo-500 bg-indigo-500/5",
|
|
11599
|
+
className
|
|
11600
|
+
),
|
|
11601
|
+
children: [
|
|
11602
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { children: [
|
|
11603
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "relative w-full aspect-[16/10] rounded-xl overflow-hidden bg-muted/60 mb-2.5 flex items-center justify-center", children: isImage && file.fileUrl ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11604
|
+
"img",
|
|
11605
|
+
{
|
|
11606
|
+
src: file.fileUrl,
|
|
11607
|
+
alt: file.fileName,
|
|
11608
|
+
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",
|
|
11609
|
+
loading: "lazy"
|
|
11610
|
+
}
|
|
11611
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11612
|
+
"div",
|
|
11613
|
+
{
|
|
11614
|
+
className: cn(
|
|
11615
|
+
"flex flex-col items-center justify-center gap-1.5 w-full h-full p-4",
|
|
11616
|
+
theme.bgColor
|
|
11617
|
+
),
|
|
11618
|
+
children: [
|
|
11619
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(theme.icon, { className: cn("h-10 w-10", theme.iconColor) }),
|
|
11620
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "text-[11px] font-bold uppercase tracking-wider text-muted-foreground", children: theme.name })
|
|
11621
|
+
]
|
|
11622
|
+
}
|
|
11623
|
+
) }),
|
|
11624
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "px-1 min-w-0", children: [
|
|
11625
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11626
|
+
"h3",
|
|
11627
|
+
{
|
|
11628
|
+
className: "text-sm font-bold text-foreground truncate tracking-tight",
|
|
11629
|
+
title: file.fileName,
|
|
11630
|
+
children: file.fileName
|
|
11631
|
+
}
|
|
11632
|
+
),
|
|
11633
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("p", { className: "text-xs text-muted-foreground truncate mt-0.5 flex items-center gap-1", children: [
|
|
11634
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: file.folderPath || `Chat/${file.senderEmail || "amanmicropay@gmail.com"}` }),
|
|
11635
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "\xB7" }),
|
|
11636
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: formatTimeAgo(file.updatedAt) })
|
|
11637
|
+
] })
|
|
11638
|
+
] })
|
|
11639
|
+
] }),
|
|
11640
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center gap-1.5 mt-2.5 pt-2 border-t border-border/40 px-1", children: [
|
|
11641
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11642
|
+
Button,
|
|
11643
|
+
{
|
|
11644
|
+
size: "sm",
|
|
11645
|
+
variant: "ghost",
|
|
11646
|
+
onClick: () => onPreview?.(file),
|
|
11647
|
+
className: "h-7 px-2.5 rounded-lg bg-indigo-500/10 text-indigo-600 dark:text-indigo-400 hover:bg-indigo-500/20 text-xs font-semibold gap-1.5 flex-1 justify-center cursor-pointer",
|
|
11648
|
+
children: [
|
|
11649
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5" }),
|
|
11650
|
+
" Preview"
|
|
11651
|
+
]
|
|
11652
|
+
}
|
|
11653
|
+
),
|
|
11654
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11655
|
+
Button,
|
|
11656
|
+
{
|
|
11657
|
+
size: "icon",
|
|
11658
|
+
variant: "ghost",
|
|
11659
|
+
onClick: () => onDownload?.(file),
|
|
11660
|
+
className: "h-7 w-7 rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer",
|
|
11661
|
+
title: "Download",
|
|
11662
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5" })
|
|
11663
|
+
}
|
|
11664
|
+
),
|
|
11665
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenu, { children: [
|
|
11666
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11667
|
+
Button,
|
|
11668
|
+
{
|
|
11669
|
+
size: "icon",
|
|
11670
|
+
variant: "ghost",
|
|
11671
|
+
className: "h-7 w-7 rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer",
|
|
11672
|
+
title: "More actions",
|
|
11673
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.MoreHorizontal, { className: "h-3.5 w-3.5" })
|
|
11674
|
+
}
|
|
11675
|
+
) }),
|
|
11676
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuContent, { align: "end", className: "w-40 rounded-xl p-1 shadow-lg", children: [
|
|
11677
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onPreview?.(file), className: "gap-2 text-xs", children: [
|
|
11678
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5" }),
|
|
11679
|
+
" Preview"
|
|
11680
|
+
] }),
|
|
11681
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onDownload?.(file), className: "gap-2 text-xs", children: [
|
|
11682
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5" }),
|
|
11683
|
+
" Download"
|
|
11684
|
+
] }),
|
|
11685
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onCopyLink?.(file), className: "gap-2 text-xs", children: [
|
|
11686
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Copy, { className: "h-3.5 w-3.5" }),
|
|
11687
|
+
" Copy Link"
|
|
11688
|
+
] }),
|
|
11689
|
+
onShare && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onShare?.(file), className: "gap-2 text-xs", children: [
|
|
11690
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Share2, { className: "h-3.5 w-3.5" }),
|
|
11691
|
+
" Share"
|
|
11692
|
+
] }),
|
|
11693
|
+
onRename && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuItem, { onClick: () => onRename?.(file), className: "gap-2 text-xs", children: [
|
|
11694
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Edit2, { className: "h-3.5 w-3.5" }),
|
|
11695
|
+
" Rename"
|
|
11696
|
+
] }),
|
|
11697
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuSeparator, {}),
|
|
11698
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11699
|
+
DropdownMenuItem,
|
|
11700
|
+
{
|
|
11701
|
+
onClick: () => onDelete?.(file),
|
|
11702
|
+
className: "gap-2 text-xs text-destructive focus:text-destructive",
|
|
11703
|
+
children: [
|
|
11704
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Trash2, { className: "h-3.5 w-3.5" }),
|
|
11705
|
+
" Delete"
|
|
11706
|
+
]
|
|
11707
|
+
}
|
|
11708
|
+
)
|
|
11709
|
+
] })
|
|
11710
|
+
] })
|
|
11711
|
+
] })
|
|
11712
|
+
]
|
|
11713
|
+
}
|
|
11714
|
+
);
|
|
11715
|
+
}
|
|
11716
|
+
|
|
11717
|
+
// src/design-system/components/files/folder-tree-item.tsx
|
|
11718
|
+
var import_lucide_react49 = require("lucide-react");
|
|
11719
|
+
var import_jsx_runtime95 = require("react/jsx-runtime");
|
|
11720
|
+
function FolderTreeItem({
|
|
11721
|
+
folder,
|
|
11722
|
+
isFolderActive,
|
|
11723
|
+
isExpanded,
|
|
11724
|
+
onToggleExpand,
|
|
11725
|
+
onSelectFolder,
|
|
11726
|
+
className
|
|
11727
|
+
}) {
|
|
11728
|
+
const isLevel0 = folder.level === 0;
|
|
11729
|
+
const isLevel1 = folder.level === 1;
|
|
11730
|
+
const isLevel2 = folder.level === 2;
|
|
11731
|
+
const hasChildren = isLevel0 || isLevel1;
|
|
11732
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
|
|
11733
|
+
"div",
|
|
11734
|
+
{
|
|
11735
|
+
id: `folder-card-${folder.id}`,
|
|
11736
|
+
onClick: () => {
|
|
11737
|
+
if (hasChildren) {
|
|
11738
|
+
onToggleExpand(folder.id);
|
|
11739
|
+
} else {
|
|
11740
|
+
onSelectFolder(folder);
|
|
11741
|
+
}
|
|
11742
|
+
},
|
|
11743
|
+
className: cn(
|
|
11744
|
+
"group relative flex cursor-pointer items-center justify-between gap-2 rounded-xl py-1.5 px-2 transition-all duration-200 select-none border",
|
|
11745
|
+
isLevel0 && "font-bold bg-muted/20 border-border/50 my-1",
|
|
11746
|
+
isLevel1 && "ml-3 border-border/40 my-0.5",
|
|
11747
|
+
isLevel2 && "ml-6 border-transparent hover:bg-muted/40 my-0.5",
|
|
11748
|
+
isFolderActive ? "border-indigo-300 bg-indigo-500/15 text-indigo-600 dark:border-indigo-800 dark:bg-indigo-950/40 dark:text-indigo-400 font-bold shadow-2xs" : "bg-card hover:bg-indigo-500/5 hover:border-indigo-200/40",
|
|
11749
|
+
className
|
|
11750
|
+
),
|
|
11751
|
+
children: [
|
|
11752
|
+
isFolderActive && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "absolute top-1 bottom-1 left-0 w-1 rounded-l-full bg-indigo-600" }),
|
|
11753
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center gap-1.5 min-w-0 flex-1", children: [
|
|
11754
|
+
hasChildren && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11755
|
+
"button",
|
|
11756
|
+
{
|
|
11757
|
+
type: "button",
|
|
11758
|
+
onClick: (e) => onToggleExpand(folder.id, e),
|
|
11759
|
+
className: "flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer",
|
|
11760
|
+
children: isExpanded ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react49.ChevronDown, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react49.ChevronRight, { className: "h-3 w-3" })
|
|
11761
|
+
}
|
|
11762
|
+
),
|
|
11763
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11764
|
+
"div",
|
|
11765
|
+
{
|
|
11766
|
+
className: cn(
|
|
11767
|
+
"flex shrink-0 items-center justify-center rounded-lg text-indigo-600 dark:text-indigo-400 transition-colors",
|
|
11768
|
+
isLevel0 ? "h-6 w-6 border border-indigo-200/40 bg-indigo-500/10" : isLevel1 ? "h-5.5 w-5.5 border border-indigo-200/30 bg-indigo-500/5" : "h-5 w-5"
|
|
11769
|
+
),
|
|
11770
|
+
children: isExpanded ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11771
|
+
import_lucide_react49.FolderOpen,
|
|
11772
|
+
{
|
|
11773
|
+
className: isLevel0 ? "h-3.5 w-3.5" : isLevel1 ? "h-3 w-3" : "h-3 w-3 text-indigo-500"
|
|
11774
|
+
}
|
|
11775
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11776
|
+
import_lucide_react49.Folder,
|
|
11777
|
+
{
|
|
11778
|
+
className: isLevel0 ? "h-3.5 w-3.5" : isLevel1 ? "h-3 w-3" : "h-3 w-3 text-indigo-500"
|
|
11779
|
+
}
|
|
11780
|
+
)
|
|
11781
|
+
}
|
|
11782
|
+
),
|
|
11783
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11784
|
+
"span",
|
|
11785
|
+
{
|
|
11786
|
+
className: cn(
|
|
11787
|
+
"truncate text-foreground",
|
|
11788
|
+
isLevel0 ? "text-xs font-bold" : isLevel1 ? "text-[11px] font-semibold" : "text-[11px] font-medium",
|
|
11789
|
+
isFolderActive && "text-indigo-600 dark:text-indigo-400"
|
|
11790
|
+
),
|
|
11791
|
+
children: folder.name
|
|
11792
|
+
}
|
|
11793
|
+
)
|
|
11794
|
+
] }),
|
|
11795
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11796
|
+
Badge,
|
|
11797
|
+
{
|
|
11798
|
+
variant: isFolderActive ? "default" : "secondary",
|
|
11799
|
+
className: cn(
|
|
11800
|
+
"text-[10px] px-1.5 py-0 h-4 min-w-4 flex items-center justify-center font-mono",
|
|
11801
|
+
isFolderActive ? "bg-indigo-600 text-white" : "bg-muted text-muted-foreground group-hover:bg-indigo-500/10 group-hover:text-indigo-600"
|
|
11802
|
+
),
|
|
11803
|
+
children: folder.fileCount
|
|
11804
|
+
}
|
|
11805
|
+
)
|
|
11806
|
+
]
|
|
11807
|
+
}
|
|
11808
|
+
);
|
|
11809
|
+
}
|
|
11810
|
+
|
|
11811
|
+
// src/design-system/components/files/storage-stat-card.tsx
|
|
11812
|
+
var import_lucide_react50 = require("lucide-react");
|
|
11813
|
+
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
11814
|
+
function StorageStatCard({
|
|
11815
|
+
totalFiles,
|
|
11816
|
+
totalSizeBytes = 0,
|
|
11817
|
+
maxStorageBytes = 10 * 1024 * 1024 * 1024,
|
|
11818
|
+
// 10 GB default
|
|
11819
|
+
stats,
|
|
11820
|
+
onViewAllFiles,
|
|
11821
|
+
onUploadClick,
|
|
11822
|
+
className
|
|
11823
|
+
}) {
|
|
11824
|
+
const percentUsed = Math.min(
|
|
11825
|
+
100,
|
|
11826
|
+
Math.max(1, Math.round(totalSizeBytes / (maxStorageBytes || 1) * 100))
|
|
11827
|
+
);
|
|
11828
|
+
const defaultStats = stats || [
|
|
11829
|
+
{
|
|
11830
|
+
label: "Documents & PDFs",
|
|
11831
|
+
count: Math.round(totalFiles * 0.4),
|
|
11832
|
+
sizeBytes: Math.round(totalSizeBytes * 0.45),
|
|
11833
|
+
colorClass: "bg-red-500",
|
|
11834
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.FileText, { className: "h-4 w-4 text-red-500" })
|
|
11835
|
+
},
|
|
11836
|
+
{
|
|
11837
|
+
label: "Images & Photos",
|
|
11838
|
+
count: Math.round(totalFiles * 0.35),
|
|
11839
|
+
sizeBytes: Math.round(totalSizeBytes * 0.3),
|
|
11840
|
+
colorClass: "bg-amber-500",
|
|
11841
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.Image, { className: "h-4 w-4 text-amber-500" })
|
|
11842
|
+
},
|
|
11843
|
+
{
|
|
11844
|
+
label: "Media & Videos",
|
|
11845
|
+
count: Math.round(totalFiles * 0.15),
|
|
11846
|
+
sizeBytes: Math.round(totalSizeBytes * 0.2),
|
|
11847
|
+
colorClass: "bg-purple-500",
|
|
11848
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.Film, { className: "h-4 w-4 text-purple-500" })
|
|
11849
|
+
},
|
|
11850
|
+
{
|
|
11851
|
+
label: "Other & Archives",
|
|
11852
|
+
count: Math.max(0, totalFiles - Math.round(totalFiles * 0.9)),
|
|
11853
|
+
sizeBytes: Math.round(totalSizeBytes * 0.05),
|
|
11854
|
+
colorClass: "bg-indigo-500",
|
|
11855
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.Database, { className: "h-4 w-4 text-indigo-500" })
|
|
11856
|
+
}
|
|
11857
|
+
];
|
|
11858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
11859
|
+
"div",
|
|
11860
|
+
{
|
|
11861
|
+
className: cn(
|
|
11862
|
+
"flex flex-col gap-4 rounded-2xl border border-border/80 bg-card p-4 shadow-2xs select-none",
|
|
11863
|
+
className
|
|
11864
|
+
),
|
|
11865
|
+
children: [
|
|
11866
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
11867
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
11868
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "flex h-9 w-9 items-center justify-center rounded-xl bg-indigo-500/10 text-indigo-600 dark:text-indigo-400 border border-indigo-200/40", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.HardDrive, { className: "h-5 w-5" }) }),
|
|
11869
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
|
|
11870
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("h3", { className: "text-xs font-bold text-foreground", children: "Storage Overview" }),
|
|
11871
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("p", { className: "text-[11px] text-muted-foreground", children: [
|
|
11872
|
+
totalFiles,
|
|
11873
|
+
" items stored in workspace"
|
|
11874
|
+
] })
|
|
11875
|
+
] })
|
|
11876
|
+
] }),
|
|
11877
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "text-right", children: [
|
|
11878
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "text-xs font-bold text-foreground font-mono", children: formatBytes(totalSizeBytes) }),
|
|
11879
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("p", { className: "text-[10px] text-muted-foreground font-mono", children: [
|
|
11880
|
+
"of ",
|
|
11881
|
+
formatBytes(maxStorageBytes)
|
|
11882
|
+
] })
|
|
11883
|
+
] })
|
|
11884
|
+
] }),
|
|
11885
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "space-y-1.5", children: [
|
|
11886
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "flex h-2.5 w-full overflow-hidden rounded-full bg-muted/60 p-0.5 border border-border/40", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
11887
|
+
"div",
|
|
11888
|
+
{
|
|
11889
|
+
className: "h-full rounded-full bg-linear-to-r from-indigo-500 via-purple-500 to-amber-500 transition-all duration-500",
|
|
11890
|
+
style: { width: `${percentUsed}%` }
|
|
11891
|
+
}
|
|
11892
|
+
) }),
|
|
11893
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex justify-between text-[10px] text-muted-foreground", children: [
|
|
11894
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
|
|
11895
|
+
percentUsed,
|
|
11896
|
+
"% capacity utilized"
|
|
11897
|
+
] }),
|
|
11898
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
|
|
11899
|
+
formatBytes(Math.max(0, maxStorageBytes - totalSizeBytes)),
|
|
11900
|
+
" available"
|
|
11901
|
+
] })
|
|
11902
|
+
] })
|
|
11903
|
+
] }),
|
|
11904
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "grid grid-cols-2 gap-2 pt-1", children: defaultStats.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
11905
|
+
"div",
|
|
11906
|
+
{
|
|
11907
|
+
className: "flex items-center gap-2 rounded-xl border border-border/40 bg-muted/20 p-2",
|
|
11908
|
+
children: [
|
|
11909
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "shrink-0", children: item.icon }),
|
|
11910
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
11911
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "truncate text-[11px] font-semibold text-foreground", children: item.label }),
|
|
11912
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between text-[10px] text-muted-foreground", children: [
|
|
11913
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
|
|
11914
|
+
item.count,
|
|
11915
|
+
" files"
|
|
11916
|
+
] }),
|
|
11917
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "font-mono", children: formatBytes(item.sizeBytes) })
|
|
11918
|
+
] })
|
|
11919
|
+
] })
|
|
11920
|
+
]
|
|
11921
|
+
},
|
|
11922
|
+
idx
|
|
11923
|
+
)) }),
|
|
11924
|
+
(onViewAllFiles || onUploadClick) && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between pt-2 border-t border-border/50", children: [
|
|
11925
|
+
onViewAllFiles && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
11926
|
+
"button",
|
|
11927
|
+
{
|
|
11928
|
+
type: "button",
|
|
11929
|
+
onClick: onViewAllFiles,
|
|
11930
|
+
className: "text-xs font-semibold text-indigo-600 dark:text-indigo-400 hover:underline flex items-center gap-1 cursor-pointer",
|
|
11931
|
+
children: [
|
|
11932
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { children: "Explore All Files" }),
|
|
11933
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.ArrowUpRight, { className: "h-3.5 w-3.5" })
|
|
11934
|
+
]
|
|
11935
|
+
}
|
|
11936
|
+
),
|
|
11937
|
+
onUploadClick && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
11938
|
+
"button",
|
|
11939
|
+
{
|
|
11940
|
+
type: "button",
|
|
11941
|
+
onClick: onUploadClick,
|
|
11942
|
+
className: "text-xs font-semibold bg-indigo-600 text-white hover:bg-indigo-700 px-3 py-1 rounded-lg transition-colors cursor-pointer",
|
|
11943
|
+
children: "Upload New"
|
|
11944
|
+
}
|
|
11945
|
+
)
|
|
11946
|
+
] })
|
|
11947
|
+
]
|
|
11948
|
+
}
|
|
11949
|
+
);
|
|
11950
|
+
}
|
|
11951
|
+
|
|
11952
|
+
// src/design-system/components/files/user-file-cards-view.tsx
|
|
11953
|
+
var import_react17 = require("react");
|
|
11954
|
+
var import_lucide_react51 = require("lucide-react");
|
|
11955
|
+
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
11956
|
+
function UserFileCardsView({
|
|
11957
|
+
folder,
|
|
11958
|
+
files,
|
|
11959
|
+
selectedFileId,
|
|
11960
|
+
onSelectFileForPreview,
|
|
11961
|
+
onDownloadFile,
|
|
11962
|
+
onDeleteFile,
|
|
11963
|
+
onCopyLink,
|
|
11964
|
+
onRenameFile,
|
|
11965
|
+
onShareFile,
|
|
11966
|
+
onUploadClick,
|
|
11967
|
+
onBack,
|
|
11968
|
+
onClose,
|
|
11969
|
+
className
|
|
11970
|
+
}) {
|
|
11971
|
+
const [searchQuery, setSearchQuery] = (0, import_react17.useState)("");
|
|
11972
|
+
const [selectedCategory, setSelectedCategory] = (0, import_react17.useState)("all");
|
|
11973
|
+
const [sortBy, setSortBy] = (0, import_react17.useState)("date");
|
|
11974
|
+
const [sortOrder, setSortOrder] = (0, import_react17.useState)("desc");
|
|
11975
|
+
const [viewMode, setViewMode] = (0, import_react17.useState)("grid");
|
|
11976
|
+
const [currentPage, setCurrentPage] = (0, import_react17.useState)(1);
|
|
11977
|
+
const itemsPerPage = viewMode === "grid" ? 12 : 20;
|
|
11978
|
+
const [selectedIds, setSelectedIds] = (0, import_react17.useState)(/* @__PURE__ */ new Set());
|
|
11979
|
+
const filteredFiles = (0, import_react17.useMemo)(() => {
|
|
11980
|
+
return files.filter((f) => {
|
|
11981
|
+
const matchCategory = selectedCategory === "all" || f.category.toLowerCase() === selectedCategory.toLowerCase() || selectedCategory === "Xls" && (f.category === "Csv" || f.category === "Xls");
|
|
11982
|
+
const matchSearch = !searchQuery.trim() || f.fileName.toLowerCase().includes(searchQuery.toLowerCase()) || f.folderPath && f.folderPath.toLowerCase().includes(searchQuery.toLowerCase());
|
|
11983
|
+
return matchCategory && matchSearch;
|
|
11984
|
+
});
|
|
11985
|
+
}, [files, selectedCategory, searchQuery]);
|
|
11986
|
+
const sortedFiles = (0, import_react17.useMemo)(() => {
|
|
11987
|
+
return [...filteredFiles].sort((a, b) => {
|
|
11988
|
+
let compare = 0;
|
|
11989
|
+
if (sortBy === "date") {
|
|
11990
|
+
const timeA = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
|
11991
|
+
const timeB = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
|
|
11992
|
+
compare = timeB - timeA;
|
|
11993
|
+
} else if (sortBy === "name") {
|
|
11994
|
+
compare = a.fileName.localeCompare(b.fileName);
|
|
11995
|
+
} else if (sortBy === "size") {
|
|
11996
|
+
compare = (b.fileSize || 0) - (a.fileSize || 0);
|
|
11997
|
+
}
|
|
11998
|
+
return sortOrder === "asc" ? -compare : compare;
|
|
11999
|
+
});
|
|
12000
|
+
}, [filteredFiles, sortBy, sortOrder]);
|
|
12001
|
+
const totalPages = Math.ceil(sortedFiles.length / itemsPerPage) || 1;
|
|
12002
|
+
const paginatedFiles = (0, import_react17.useMemo)(() => {
|
|
12003
|
+
const start = (currentPage - 1) * itemsPerPage;
|
|
12004
|
+
return sortedFiles.slice(start, start + itemsPerPage);
|
|
12005
|
+
}, [sortedFiles, currentPage, itemsPerPage]);
|
|
12006
|
+
const totalBytes = (0, import_react17.useMemo)(() => {
|
|
12007
|
+
return files.reduce((acc, curr) => acc + (curr.fileSize || 0), 0);
|
|
12008
|
+
}, [files]);
|
|
12009
|
+
const handleBulkDownload = () => {
|
|
12010
|
+
const toDownload = files.filter((f) => selectedIds.has(f.id));
|
|
12011
|
+
toDownload.forEach((f) => onDownloadFile?.(f));
|
|
12012
|
+
};
|
|
12013
|
+
const handleBulkDelete = () => {
|
|
12014
|
+
const toDelete = files.filter((f) => selectedIds.has(f.id));
|
|
12015
|
+
toDelete.forEach((f) => onDeleteFile?.(f));
|
|
12016
|
+
setSelectedIds(/* @__PURE__ */ new Set());
|
|
12017
|
+
};
|
|
12018
|
+
const folderDisplayName = folder?.name || "Images";
|
|
12019
|
+
const folderDisplayPath = folder?.path || "Chat/amanmicropay@gmail.com/Images";
|
|
12020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12021
|
+
"div",
|
|
12022
|
+
{
|
|
12023
|
+
className: cn(
|
|
12024
|
+
"flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden bg-background select-none",
|
|
12025
|
+
className
|
|
12026
|
+
),
|
|
12027
|
+
children: [
|
|
12028
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center justify-between border-b border-border bg-background px-4 py-3 shrink-0", children: [
|
|
12029
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
12030
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12031
|
+
"button",
|
|
12032
|
+
{
|
|
12033
|
+
type: "button",
|
|
12034
|
+
onClick: onBack,
|
|
12035
|
+
className: "flex h-8 w-8 items-center justify-center rounded-xl text-muted-foreground hover:bg-muted hover:text-foreground transition-colors cursor-pointer",
|
|
12036
|
+
title: "Back",
|
|
12037
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.ArrowLeft, { className: "h-4 w-4" })
|
|
12038
|
+
}
|
|
12039
|
+
),
|
|
12040
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "flex h-10 w-10 items-center justify-center rounded-xl bg-indigo-500/10 text-indigo-600 dark:text-indigo-400 border border-indigo-200/50 dark:border-indigo-900/40 shrink-0 shadow-2xs", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.FolderOpen, { className: "h-5 w-5" }) }),
|
|
12041
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "min-w-0", children: [
|
|
12042
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12043
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("h2", { className: "truncate text-base font-bold text-foreground tracking-tight", children: folderDisplayName }),
|
|
12044
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "px-2 py-0.5 rounded-full bg-muted text-xs font-normal text-muted-foreground shrink-0", children: [
|
|
12045
|
+
filteredFiles.length,
|
|
12046
|
+
" files"
|
|
12047
|
+
] })
|
|
12048
|
+
] }),
|
|
12049
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("p", { className: "truncate text-xs text-muted-foreground mt-0.5", children: [
|
|
12050
|
+
"Storage folder: ",
|
|
12051
|
+
folderDisplayPath
|
|
12052
|
+
] })
|
|
12053
|
+
] })
|
|
12054
|
+
] }),
|
|
12055
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-1 shrink-0", children: [
|
|
12056
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12057
|
+
"button",
|
|
12058
|
+
{
|
|
12059
|
+
type: "button",
|
|
12060
|
+
className: "p-2 rounded-lg text-amber-500 hover:bg-muted transition-colors cursor-pointer",
|
|
12061
|
+
title: "Notifications",
|
|
12062
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Bell, { className: "h-4 w-4" })
|
|
12063
|
+
}
|
|
12064
|
+
),
|
|
12065
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12066
|
+
"button",
|
|
12067
|
+
{
|
|
12068
|
+
type: "button",
|
|
12069
|
+
className: "p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer",
|
|
12070
|
+
title: "Flag / Report",
|
|
12071
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Flag, { className: "h-4 w-4" })
|
|
12072
|
+
}
|
|
12073
|
+
),
|
|
12074
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenu, { children: [
|
|
12075
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12076
|
+
"button",
|
|
12077
|
+
{
|
|
12078
|
+
type: "button",
|
|
12079
|
+
className: "p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer",
|
|
12080
|
+
title: "Options",
|
|
12081
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.MoreVertical, { className: "h-4 w-4" })
|
|
12082
|
+
}
|
|
12083
|
+
) }),
|
|
12084
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenuContent, { align: "end", className: "w-44 rounded-xl p-1 shadow-lg", children: [
|
|
12085
|
+
onUploadClick && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenuItem, { onClick: onUploadClick, className: "gap-2 text-xs", children: [
|
|
12086
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Upload, { className: "h-3.5 w-3.5" }),
|
|
12087
|
+
" Upload Files"
|
|
12088
|
+
] }),
|
|
12089
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenuItem, { onClick: () => setViewMode(viewMode === "grid" ? "table" : "grid"), className: "gap-2 text-xs", children: [
|
|
12090
|
+
viewMode === "grid" ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.List, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.LayoutGrid, { className: "h-3.5 w-3.5" }),
|
|
12091
|
+
"Switch to ",
|
|
12092
|
+
viewMode === "grid" ? "Table" : "Card",
|
|
12093
|
+
" View"
|
|
12094
|
+
] })
|
|
12095
|
+
] })
|
|
12096
|
+
] }),
|
|
12097
|
+
(onClose || onBack) && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12098
|
+
"button",
|
|
12099
|
+
{
|
|
12100
|
+
type: "button",
|
|
12101
|
+
onClick: onClose || onBack,
|
|
12102
|
+
className: "p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer",
|
|
12103
|
+
title: "Close",
|
|
12104
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.X, { className: "h-4 w-4" })
|
|
12105
|
+
}
|
|
12106
|
+
)
|
|
12107
|
+
] })
|
|
12108
|
+
] }),
|
|
12109
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex flex-wrap items-center justify-between gap-2 px-4 pt-3 pb-2 shrink-0", children: [
|
|
12110
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2 overflow-x-auto py-0.5", children: [
|
|
12111
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12112
|
+
Button,
|
|
12113
|
+
{
|
|
12114
|
+
variant: "outline",
|
|
12115
|
+
size: "sm",
|
|
12116
|
+
className: "h-8 gap-1.5 text-xs font-bold text-muted-foreground rounded-xl border-border px-3 shrink-0",
|
|
12117
|
+
children: [
|
|
12118
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.ArrowLeftRight, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
12119
|
+
"LTR"
|
|
12120
|
+
]
|
|
12121
|
+
}
|
|
12122
|
+
),
|
|
12123
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12124
|
+
Button,
|
|
12125
|
+
{
|
|
12126
|
+
variant: "outline",
|
|
12127
|
+
size: "sm",
|
|
12128
|
+
className: "h-8 gap-1.5 text-xs font-bold text-muted-foreground rounded-xl border-border px-3 shrink-0",
|
|
12129
|
+
children: [
|
|
12130
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Filter, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
12131
|
+
"FILTER"
|
|
12132
|
+
]
|
|
12133
|
+
}
|
|
12134
|
+
),
|
|
12135
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenu, { children: [
|
|
12136
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12137
|
+
Button,
|
|
12138
|
+
{
|
|
12139
|
+
variant: "outline",
|
|
12140
|
+
size: "sm",
|
|
12141
|
+
className: "h-8 gap-1.5 text-xs font-bold text-muted-foreground rounded-xl border-border px-3 shrink-0",
|
|
12142
|
+
children: [
|
|
12143
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.ArrowUpDown, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
12144
|
+
"SORT"
|
|
12145
|
+
]
|
|
12146
|
+
}
|
|
12147
|
+
) }),
|
|
12148
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenuContent, { align: "start", className: "w-40 rounded-xl p-1 shadow-lg", children: [
|
|
12149
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DropdownMenuItem, { onClick: () => setSortBy("date"), className: "text-xs", children: "Date Modified" }),
|
|
12150
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DropdownMenuItem, { onClick: () => setSortBy("name"), className: "text-xs", children: "File Name" }),
|
|
12151
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DropdownMenuItem, { onClick: () => setSortBy("size"), className: "text-xs", children: "File Size" })
|
|
12152
|
+
] })
|
|
12153
|
+
] }),
|
|
12154
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12155
|
+
Button,
|
|
12156
|
+
{
|
|
12157
|
+
variant: "outline",
|
|
12158
|
+
size: "sm",
|
|
12159
|
+
className: "h-8 gap-1.5 text-xs font-bold text-muted-foreground rounded-xl border-border px-3 shrink-0",
|
|
12160
|
+
children: [
|
|
12161
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.SlidersHorizontal, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
12162
|
+
"SHORT"
|
|
12163
|
+
]
|
|
12164
|
+
}
|
|
12165
|
+
)
|
|
12166
|
+
] }),
|
|
12167
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12168
|
+
Button,
|
|
12169
|
+
{
|
|
12170
|
+
onClick: () => setViewMode(viewMode === "grid" ? "table" : "grid"),
|
|
12171
|
+
size: "sm",
|
|
12172
|
+
className: "h-8 gap-1.5 text-xs font-bold rounded-xl bg-indigo-600 hover:bg-indigo-700 text-white shadow-xs px-3.5 shrink-0 cursor-pointer",
|
|
12173
|
+
children: viewMode === "grid" ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
|
|
12174
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.LayoutGrid, { className: "h-3.5 w-3.5" }),
|
|
12175
|
+
"VIEW: CARD"
|
|
12176
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
|
|
12177
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.List, { className: "h-3.5 w-3.5" }),
|
|
12178
|
+
"VIEW: TABLE"
|
|
12179
|
+
] })
|
|
12180
|
+
}
|
|
12181
|
+
)
|
|
12182
|
+
] }),
|
|
12183
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "px-4 pb-2 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "relative w-full", children: [
|
|
12184
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Search, { className: "absolute left-3.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
|
|
12185
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12186
|
+
Input,
|
|
12187
|
+
{
|
|
12188
|
+
value: searchQuery,
|
|
12189
|
+
onChange: (e) => {
|
|
12190
|
+
setSearchQuery(e.target.value);
|
|
12191
|
+
setCurrentPage(1);
|
|
12192
|
+
},
|
|
12193
|
+
placeholder: "Search files by name, format, or sender...",
|
|
12194
|
+
className: "h-10 pl-10 pr-9 text-sm rounded-xl bg-background border-border/80 focus-visible:ring-1 focus-visible:ring-indigo-500"
|
|
12195
|
+
}
|
|
12196
|
+
),
|
|
12197
|
+
searchQuery && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12198
|
+
"button",
|
|
12199
|
+
{
|
|
12200
|
+
type: "button",
|
|
12201
|
+
onClick: () => setSearchQuery(""),
|
|
12202
|
+
className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
|
|
12203
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.X, { className: "h-4 w-4" })
|
|
12204
|
+
}
|
|
12205
|
+
)
|
|
12206
|
+
] }) }),
|
|
12207
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center justify-between px-4 py-2 text-xs text-muted-foreground font-medium shrink-0", children: [
|
|
12208
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { children: [
|
|
12209
|
+
filteredFiles.length,
|
|
12210
|
+
" files"
|
|
12211
|
+
] }),
|
|
12212
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12213
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: sortedFiles.length === 0 ? "0 of 0" : `${(currentPage - 1) * itemsPerPage + 1}\u2013${Math.min(
|
|
12214
|
+
currentPage * itemsPerPage,
|
|
12215
|
+
sortedFiles.length
|
|
12216
|
+
)} of ${sortedFiles.length}` }),
|
|
12217
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-0.5", children: [
|
|
12218
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12219
|
+
Button,
|
|
12220
|
+
{
|
|
12221
|
+
variant: "ghost",
|
|
12222
|
+
size: "icon",
|
|
12223
|
+
disabled: currentPage <= 1,
|
|
12224
|
+
onClick: () => setCurrentPage((p) => Math.max(1, p - 1)),
|
|
12225
|
+
className: "h-6 w-6 rounded-md text-muted-foreground hover:text-foreground",
|
|
12226
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.ChevronLeft, { className: "h-3.5 w-3.5" })
|
|
12227
|
+
}
|
|
12228
|
+
),
|
|
12229
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12230
|
+
Button,
|
|
12231
|
+
{
|
|
12232
|
+
variant: "ghost",
|
|
12233
|
+
size: "icon",
|
|
12234
|
+
disabled: currentPage >= totalPages,
|
|
12235
|
+
onClick: () => setCurrentPage((p) => Math.min(totalPages, p + 1)),
|
|
12236
|
+
className: "h-6 w-6 rounded-md text-muted-foreground hover:text-foreground",
|
|
12237
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.ChevronRight, { className: "h-3.5 w-3.5" })
|
|
12238
|
+
}
|
|
12239
|
+
)
|
|
12240
|
+
] })
|
|
12241
|
+
] })
|
|
12242
|
+
] }),
|
|
12243
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: paginatedFiles.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex flex-col items-center justify-center h-64 text-center p-6 rounded-2xl border border-dashed border-border/80 bg-muted/5", children: [
|
|
12244
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "flex h-12 w-12 items-center justify-center rounded-2xl bg-indigo-500/10 text-indigo-600 mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.FolderOpen, { className: "h-6 w-6" }) }),
|
|
12245
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("h3", { className: "text-sm font-bold text-foreground", children: "No files found" }),
|
|
12246
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { className: "text-xs text-muted-foreground max-w-xs mt-1", children: searchQuery ? `No files match your query "${searchQuery}" in this folder.` : "This folder is currently empty. Upload documents or media to get started." }),
|
|
12247
|
+
onUploadClick && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12248
|
+
Button,
|
|
12249
|
+
{
|
|
12250
|
+
size: "sm",
|
|
12251
|
+
onClick: onUploadClick,
|
|
12252
|
+
className: "mt-4 gap-1.5 text-xs font-semibold bg-indigo-600 hover:bg-indigo-700 text-white rounded-xl shadow-xs",
|
|
12253
|
+
children: [
|
|
12254
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Upload, { className: "h-3.5 w-3.5" }),
|
|
12255
|
+
"Upload First File"
|
|
12256
|
+
]
|
|
12257
|
+
}
|
|
12258
|
+
)
|
|
12259
|
+
] }) : viewMode === "table" ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "overflow-x-auto rounded-2xl border border-border/80 bg-card shadow-2xs", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("table", { className: "w-full text-left text-xs border-collapse", children: [
|
|
12260
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("tr", { className: "border-b border-border/60 bg-muted/20 text-muted-foreground font-semibold", children: [
|
|
12261
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { className: "py-2.5 px-3", children: "File Name" }),
|
|
12262
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { className: "py-2.5 px-3", children: "Storage Space" }),
|
|
12263
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { className: "py-2.5 px-3", children: "Size" }),
|
|
12264
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { className: "py-2.5 px-3", children: "Updated" }),
|
|
12265
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { className: "py-2.5 px-3 text-right", children: "Actions" })
|
|
12266
|
+
] }) }),
|
|
12267
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("tbody", { children: paginatedFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12268
|
+
FileCardItem,
|
|
12269
|
+
{
|
|
12270
|
+
file,
|
|
12271
|
+
viewMode: "table",
|
|
12272
|
+
isSelected: selectedIds.has(file.id),
|
|
12273
|
+
onSelect: () => {
|
|
12274
|
+
setSelectedIds((prev) => {
|
|
12275
|
+
const next = new Set(prev);
|
|
12276
|
+
if (next.has(file.id)) next.delete(file.id);
|
|
12277
|
+
else next.add(file.id);
|
|
12278
|
+
return next;
|
|
12279
|
+
});
|
|
12280
|
+
},
|
|
12281
|
+
onPreview: onSelectFileForPreview,
|
|
12282
|
+
onDownload: onDownloadFile,
|
|
12283
|
+
onDelete: onDeleteFile,
|
|
12284
|
+
onCopyLink,
|
|
12285
|
+
onRename: onRenameFile,
|
|
12286
|
+
onShare: onShareFile
|
|
12287
|
+
},
|
|
12288
|
+
file.id
|
|
12289
|
+
)) })
|
|
12290
|
+
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4", children: paginatedFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12291
|
+
FileCardItem,
|
|
12292
|
+
{
|
|
12293
|
+
file,
|
|
12294
|
+
viewMode: "grid",
|
|
12295
|
+
isSelected: selectedIds.has(file.id),
|
|
12296
|
+
onPreview: onSelectFileForPreview,
|
|
12297
|
+
onDownload: onDownloadFile,
|
|
12298
|
+
onDelete: onDeleteFile,
|
|
12299
|
+
onCopyLink,
|
|
12300
|
+
onRename: onRenameFile,
|
|
12301
|
+
onShare: onShareFile
|
|
12302
|
+
},
|
|
12303
|
+
file.id
|
|
12304
|
+
)) }) })
|
|
12305
|
+
]
|
|
12306
|
+
}
|
|
12307
|
+
);
|
|
12308
|
+
}
|
|
12309
|
+
|
|
12310
|
+
// src/design-system/components/files/file-upload-form.tsx
|
|
12311
|
+
var import_react18 = require("react");
|
|
12312
|
+
var import_lucide_react52 = require("lucide-react");
|
|
12313
|
+
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
12314
|
+
var TEMPLATE_OPTIONS = [
|
|
12315
|
+
{ id: "standard", name: "Standard Document" },
|
|
12316
|
+
{ id: "invoice", name: "Financial Invoice" },
|
|
12317
|
+
{ id: "report", name: "Report & Spreadsheet" },
|
|
12318
|
+
{ id: "contract", name: "Contract & Legal" }
|
|
12319
|
+
];
|
|
12320
|
+
var FOLDER_OPTIONS = ["Finance", "Chat", "Files", "Email", "AI Chat", "Order"];
|
|
12321
|
+
var SUB_FOLDER_OPTIONS = [
|
|
12322
|
+
"Pdf",
|
|
12323
|
+
"Doc",
|
|
12324
|
+
"Xls",
|
|
12325
|
+
"Images",
|
|
12326
|
+
"Videos",
|
|
12327
|
+
"Ppt",
|
|
12328
|
+
"Txt",
|
|
12329
|
+
"Csv",
|
|
12330
|
+
"Zip",
|
|
12331
|
+
"Other"
|
|
12332
|
+
];
|
|
12333
|
+
function FileUploadForm({
|
|
12334
|
+
userEmail,
|
|
12335
|
+
folders,
|
|
12336
|
+
initialSubject = "",
|
|
12337
|
+
initialFolder = "Finance",
|
|
12338
|
+
initialSubFolder = "Pdf",
|
|
12339
|
+
onClose,
|
|
12340
|
+
onSave,
|
|
12341
|
+
onSaveDraft,
|
|
12342
|
+
onUploadSuccess,
|
|
12343
|
+
onPreviewAttachment,
|
|
12344
|
+
className
|
|
12345
|
+
}) {
|
|
12346
|
+
const [template, setTemplate] = (0, import_react18.useState)("standard");
|
|
12347
|
+
const [subject, setSubject] = (0, import_react18.useState)(initialSubject);
|
|
12348
|
+
const [folder, setFolder] = (0, import_react18.useState)(initialFolder);
|
|
12349
|
+
const [subFolder, setSubFolder] = (0, import_react18.useState)(initialSubFolder);
|
|
12350
|
+
const [remarks, setRemarks] = (0, import_react18.useState)("");
|
|
12351
|
+
const [body, setBody] = (0, import_react18.useState)("");
|
|
12352
|
+
const [attachments, setAttachments] = (0, import_react18.useState)([]);
|
|
12353
|
+
const [isSaving, setIsSaving] = (0, import_react18.useState)(false);
|
|
12354
|
+
const fileInputRef = (0, import_react18.useRef)(null);
|
|
12355
|
+
const handleFileChange = (e) => {
|
|
12356
|
+
const files = e.target.files;
|
|
12357
|
+
if (!files || files.length === 0) return;
|
|
12358
|
+
const newAttachments = Array.from(files).map((f) => ({
|
|
12359
|
+
id: `att-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
12360
|
+
name: f.name,
|
|
12361
|
+
type: f.type || "application/octet-stream",
|
|
12362
|
+
size: formatBytes(f.size),
|
|
12363
|
+
url: URL.createObjectURL(f),
|
|
12364
|
+
fileObj: f,
|
|
12365
|
+
progress: 100
|
|
12366
|
+
}));
|
|
12367
|
+
setAttachments((prev) => [...prev, ...newAttachments]);
|
|
12368
|
+
if (fileInputRef.current) fileInputRef.current.value = "";
|
|
12369
|
+
};
|
|
12370
|
+
const handleRemoveAttachment = (id) => {
|
|
12371
|
+
setAttachments((prev) => prev.filter((a) => a.id !== id));
|
|
12372
|
+
};
|
|
12373
|
+
const handleFormSubmit = async (e) => {
|
|
12374
|
+
if (e) e.preventDefault();
|
|
12375
|
+
setIsSaving(true);
|
|
12376
|
+
try {
|
|
12377
|
+
if (onSave) {
|
|
12378
|
+
await onSave({
|
|
12379
|
+
subject,
|
|
12380
|
+
folder,
|
|
12381
|
+
subFolder,
|
|
12382
|
+
remarks,
|
|
12383
|
+
body,
|
|
12384
|
+
attachments
|
|
12385
|
+
});
|
|
12386
|
+
}
|
|
12387
|
+
onUploadSuccess?.();
|
|
12388
|
+
} finally {
|
|
12389
|
+
setIsSaving(false);
|
|
12390
|
+
}
|
|
12391
|
+
};
|
|
12392
|
+
const handleDraftSubmit = async () => {
|
|
12393
|
+
if (onSaveDraft) {
|
|
12394
|
+
await onSaveDraft({
|
|
12395
|
+
subject,
|
|
12396
|
+
folder,
|
|
12397
|
+
subFolder,
|
|
12398
|
+
remarks,
|
|
12399
|
+
body,
|
|
12400
|
+
attachments
|
|
12401
|
+
});
|
|
12402
|
+
} else {
|
|
12403
|
+
await handleFormSubmit();
|
|
12404
|
+
}
|
|
12405
|
+
};
|
|
12406
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12407
|
+
"div",
|
|
12408
|
+
{
|
|
12409
|
+
className: cn(
|
|
12410
|
+
"flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden bg-background select-none",
|
|
12411
|
+
className
|
|
12412
|
+
),
|
|
12413
|
+
children: [
|
|
12414
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between border-b border-border bg-background px-6 py-4 shrink-0", children: [
|
|
12415
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("h2", { className: "text-xl font-bold text-foreground tracking-tight", children: "New File Upload" }),
|
|
12416
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12417
|
+
"button",
|
|
12418
|
+
{
|
|
12419
|
+
type: "button",
|
|
12420
|
+
onClick: onClose,
|
|
12421
|
+
className: "flex items-center gap-1.5 text-sm font-semibold text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
12422
|
+
children: [
|
|
12423
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.ArrowLeft, { className: "h-4 w-4" }),
|
|
12424
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: "Back to Storage" })
|
|
12425
|
+
]
|
|
12426
|
+
}
|
|
12427
|
+
)
|
|
12428
|
+
] }),
|
|
12429
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "min-h-0 flex-1 overflow-y-auto p-6 space-y-5", children: [
|
|
12430
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12431
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Select Template" }),
|
|
12432
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "w-full max-w-sm", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Select, { value: template, onValueChange: setTemplate, children: [
|
|
12433
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectTrigger, { className: "h-10 text-sm rounded-xl bg-background border-border/80", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectValue, { placeholder: "Select template" }) }),
|
|
12434
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectContent, { className: "rounded-xl shadow-lg", children: TEMPLATE_OPTIONS.map((t) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectItem, { value: t.id, className: "text-sm", children: t.name }, t.id)) })
|
|
12435
|
+
] }) })
|
|
12436
|
+
] }),
|
|
12437
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12438
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Document Title / Subject" }),
|
|
12439
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12440
|
+
Input,
|
|
12441
|
+
{
|
|
12442
|
+
value: subject,
|
|
12443
|
+
onChange: (e) => setSubject(e.target.value),
|
|
12444
|
+
placeholder: "Enter document title or reference name",
|
|
12445
|
+
className: "h-10 text-sm rounded-xl bg-background border-border/80"
|
|
12446
|
+
}
|
|
12447
|
+
)
|
|
12448
|
+
] }),
|
|
12449
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12450
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Folder" }),
|
|
12451
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "w-full max-w-xs", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Select, { value: folder, onValueChange: setFolder, children: [
|
|
12452
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectTrigger, { className: "h-10 text-sm rounded-xl bg-background border-border/80", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12453
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Folder, { className: "h-4 w-4 text-amber-500 fill-amber-500" }),
|
|
12454
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectValue, { placeholder: "Select folder" })
|
|
12455
|
+
] }) }),
|
|
12456
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectContent, { className: "rounded-xl shadow-lg", children: (folders || FOLDER_OPTIONS.map((f) => ({ id: f, name: f }))).map((f) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectItem, { value: f.name, className: "text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12457
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Folder, { className: "h-3.5 w-3.5 text-amber-500 fill-amber-500" }),
|
|
12458
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: f.name })
|
|
12459
|
+
] }) }, f.id)) })
|
|
12460
|
+
] }) })
|
|
12461
|
+
] }),
|
|
12462
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12463
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Sub folder" }),
|
|
12464
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "w-full max-w-xs", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Select, { value: subFolder, onValueChange: setSubFolder, children: [
|
|
12465
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectTrigger, { className: "h-10 text-sm rounded-xl bg-background border-border/80", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12466
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Folder, { className: "h-4 w-4 text-amber-500 fill-amber-500" }),
|
|
12467
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectValue, { placeholder: "Select subfolder" })
|
|
12468
|
+
] }) }),
|
|
12469
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectContent, { className: "rounded-xl shadow-lg", children: SUB_FOLDER_OPTIONS.map((sf) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectItem, { value: sf, className: "text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12470
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Folder, { className: "h-3.5 w-3.5 text-amber-500 fill-amber-500" }),
|
|
12471
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: sf })
|
|
12472
|
+
] }) }, sf)) })
|
|
12473
|
+
] }) })
|
|
12474
|
+
] }),
|
|
12475
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12476
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Remarks" }),
|
|
12477
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12478
|
+
Textarea,
|
|
12479
|
+
{
|
|
12480
|
+
value: remarks,
|
|
12481
|
+
onChange: (e) => setRemarks(e.target.value),
|
|
12482
|
+
placeholder: "Add a note about these attachments...",
|
|
12483
|
+
className: "min-h-[80px] text-sm rounded-xl bg-background border-border/80 resize-y"
|
|
12484
|
+
}
|
|
12485
|
+
)
|
|
12486
|
+
] }),
|
|
12487
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12488
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Description / Notes" }),
|
|
12489
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "overflow-hidden rounded-xl border border-border/80 bg-background focus-within:ring-1 focus-within:ring-indigo-500", children: [
|
|
12490
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-1 p-2 border-b border-border/60 bg-muted/20", children: [
|
|
12491
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12492
|
+
"button",
|
|
12493
|
+
{
|
|
12494
|
+
type: "button",
|
|
12495
|
+
className: "flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground text-xs font-bold transition-colors",
|
|
12496
|
+
title: "Bold",
|
|
12497
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Bold, { className: "h-3.5 w-3.5" })
|
|
12498
|
+
}
|
|
12499
|
+
),
|
|
12500
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12501
|
+
"button",
|
|
12502
|
+
{
|
|
12503
|
+
type: "button",
|
|
12504
|
+
className: "flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground text-xs font-bold transition-colors",
|
|
12505
|
+
title: "Italic",
|
|
12506
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Italic, { className: "h-3.5 w-3.5" })
|
|
12507
|
+
}
|
|
12508
|
+
),
|
|
12509
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12510
|
+
"button",
|
|
12511
|
+
{
|
|
12512
|
+
type: "button",
|
|
12513
|
+
className: "flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground text-xs font-bold transition-colors",
|
|
12514
|
+
title: "Underline",
|
|
12515
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Underline, { className: "h-3.5 w-3.5" })
|
|
12516
|
+
}
|
|
12517
|
+
),
|
|
12518
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "h-4 w-[1px] bg-border mx-1" }),
|
|
12519
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12520
|
+
"button",
|
|
12521
|
+
{
|
|
12522
|
+
type: "button",
|
|
12523
|
+
className: "flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground text-xs font-bold transition-colors",
|
|
12524
|
+
title: "Bullet List",
|
|
12525
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.List, { className: "h-3.5 w-3.5" })
|
|
12526
|
+
}
|
|
12527
|
+
),
|
|
12528
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12529
|
+
"button",
|
|
12530
|
+
{
|
|
12531
|
+
type: "button",
|
|
12532
|
+
className: "flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground text-xs font-bold transition-colors",
|
|
12533
|
+
title: "Numbered List",
|
|
12534
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.ListOrdered, { className: "h-3.5 w-3.5" })
|
|
12535
|
+
}
|
|
12536
|
+
),
|
|
12537
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "h-4 w-[1px] bg-border mx-1" }),
|
|
12538
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12539
|
+
"button",
|
|
12540
|
+
{
|
|
12541
|
+
type: "button",
|
|
12542
|
+
onClick: () => fileInputRef.current?.click(),
|
|
12543
|
+
className: "flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground hover:bg-muted hover:text-foreground text-xs font-bold transition-colors cursor-pointer",
|
|
12544
|
+
title: "Attach Files",
|
|
12545
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Paperclip, { className: "h-3.5 w-3.5" })
|
|
12546
|
+
}
|
|
12547
|
+
),
|
|
12548
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12549
|
+
"input",
|
|
12550
|
+
{
|
|
12551
|
+
ref: fileInputRef,
|
|
12552
|
+
type: "file",
|
|
12553
|
+
multiple: true,
|
|
12554
|
+
className: "hidden",
|
|
12555
|
+
onChange: handleFileChange
|
|
12556
|
+
}
|
|
12557
|
+
)
|
|
12558
|
+
] }),
|
|
12559
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12560
|
+
"textarea",
|
|
12561
|
+
{
|
|
12562
|
+
value: body,
|
|
12563
|
+
onChange: (e) => setBody(e.target.value),
|
|
12564
|
+
placeholder: "Type description, remarks, or notes here...",
|
|
12565
|
+
rows: 4,
|
|
12566
|
+
className: "w-full bg-transparent p-3 text-sm outline-none resize-y border-0 focus:ring-0"
|
|
12567
|
+
}
|
|
12568
|
+
)
|
|
12569
|
+
] })
|
|
12570
|
+
] }),
|
|
12571
|
+
attachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "space-y-2 pt-1", children: [
|
|
12572
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Label, { className: "text-xs font-semibold text-foreground", children: [
|
|
12573
|
+
"Attached Files (",
|
|
12574
|
+
attachments.length,
|
|
12575
|
+
")"
|
|
12576
|
+
] }),
|
|
12577
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "flex flex-wrap gap-2", children: attachments.map((att) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12578
|
+
"div",
|
|
12579
|
+
{
|
|
12580
|
+
className: "flex items-center gap-2 px-3 py-1.5 rounded-xl border border-border/80 bg-muted/30 text-xs text-foreground font-medium",
|
|
12581
|
+
children: [
|
|
12582
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Paperclip, { className: "h-3.5 w-3.5 text-indigo-500" }),
|
|
12583
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "max-w-[200px] truncate", children: att.name }),
|
|
12584
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12585
|
+
"(",
|
|
12586
|
+
att.size,
|
|
12587
|
+
")"
|
|
12588
|
+
] }),
|
|
12589
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12590
|
+
"button",
|
|
12591
|
+
{
|
|
12592
|
+
type: "button",
|
|
12593
|
+
onClick: () => handleRemoveAttachment(att.id),
|
|
12594
|
+
className: "text-muted-foreground hover:text-destructive cursor-pointer ml-1",
|
|
12595
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.X, { className: "h-3.5 w-3.5" })
|
|
12596
|
+
}
|
|
12597
|
+
)
|
|
12598
|
+
]
|
|
12599
|
+
},
|
|
12600
|
+
att.id
|
|
12601
|
+
)) })
|
|
12602
|
+
] })
|
|
12603
|
+
] }),
|
|
12604
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between border-t border-border bg-background px-6 py-4 shrink-0", children: [
|
|
12605
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12606
|
+
Button,
|
|
12607
|
+
{
|
|
12608
|
+
variant: "outline",
|
|
12609
|
+
onClick: onClose,
|
|
12610
|
+
className: "h-9 px-4 rounded-xl text-sm font-semibold border-border/80 cursor-pointer",
|
|
12611
|
+
children: "Cancel"
|
|
12612
|
+
}
|
|
12613
|
+
),
|
|
12614
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12615
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12616
|
+
Button,
|
|
12617
|
+
{
|
|
12618
|
+
variant: "outline",
|
|
12619
|
+
onClick: handleDraftSubmit,
|
|
12620
|
+
disabled: isSaving,
|
|
12621
|
+
className: "h-9 px-4 rounded-xl text-sm font-semibold border-border/80 gap-2 cursor-pointer",
|
|
12622
|
+
children: [
|
|
12623
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Save, { className: "h-4 w-4 text-muted-foreground" }),
|
|
12624
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: "Save as Draft" })
|
|
12625
|
+
]
|
|
12626
|
+
}
|
|
12627
|
+
),
|
|
12628
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12629
|
+
Button,
|
|
12630
|
+
{
|
|
12631
|
+
onClick: () => handleFormSubmit(),
|
|
12632
|
+
disabled: isSaving,
|
|
12633
|
+
className: "h-9 px-5 rounded-xl text-sm font-semibold gap-2 bg-indigo-600 hover:bg-indigo-700 text-white shadow-xs cursor-pointer",
|
|
12634
|
+
children: [
|
|
12635
|
+
isSaving ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Loader2, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Save, { className: "h-4 w-4" }),
|
|
12636
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: "Save" })
|
|
12637
|
+
]
|
|
12638
|
+
}
|
|
12639
|
+
)
|
|
12640
|
+
] })
|
|
12641
|
+
] })
|
|
12642
|
+
]
|
|
12643
|
+
}
|
|
12644
|
+
);
|
|
12645
|
+
}
|
|
12646
|
+
|
|
11385
12647
|
// src/design-system/templates/list-template.tsx
|
|
11386
|
-
var
|
|
12648
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
11387
12649
|
function ListTemplate({
|
|
11388
12650
|
title,
|
|
11389
12651
|
description,
|
|
@@ -11403,8 +12665,8 @@ function ListTemplate({
|
|
|
11403
12665
|
...props
|
|
11404
12666
|
}) {
|
|
11405
12667
|
const hasFilterBar = Boolean(onSearchChange) || Boolean(filters) || activeFilters && activeFilters.length > 0 || Boolean(filterActions);
|
|
11406
|
-
return /* @__PURE__ */ (0,
|
|
11407
|
-
/* @__PURE__ */ (0,
|
|
12668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
|
|
12669
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
11408
12670
|
PageHeader,
|
|
11409
12671
|
{
|
|
11410
12672
|
title,
|
|
@@ -11414,7 +12676,7 @@ function ListTemplate({
|
|
|
11414
12676
|
actions
|
|
11415
12677
|
}
|
|
11416
12678
|
),
|
|
11417
|
-
hasFilterBar && /* @__PURE__ */ (0,
|
|
12679
|
+
hasFilterBar && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
11418
12680
|
FilterBar,
|
|
11419
12681
|
{
|
|
11420
12682
|
searchPlaceholder,
|
|
@@ -11426,14 +12688,14 @@ function ListTemplate({
|
|
|
11426
12688
|
actions: filterActions
|
|
11427
12689
|
}
|
|
11428
12690
|
),
|
|
11429
|
-
/* @__PURE__ */ (0,
|
|
11430
|
-
footer && /* @__PURE__ */ (0,
|
|
12691
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "flex-1", children }),
|
|
12692
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "pt-2", children: footer })
|
|
11431
12693
|
] });
|
|
11432
12694
|
}
|
|
11433
12695
|
|
|
11434
12696
|
// src/design-system/templates/detail-template.tsx
|
|
11435
|
-
var
|
|
11436
|
-
var
|
|
12697
|
+
var import_lucide_react53 = require("lucide-react");
|
|
12698
|
+
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
11437
12699
|
function DetailTemplate({
|
|
11438
12700
|
title,
|
|
11439
12701
|
description,
|
|
@@ -11448,9 +12710,9 @@ function DetailTemplate({
|
|
|
11448
12710
|
className,
|
|
11449
12711
|
...props
|
|
11450
12712
|
}) {
|
|
11451
|
-
return /* @__PURE__ */ (0,
|
|
11452
|
-
/* @__PURE__ */ (0,
|
|
11453
|
-
onBack && /* @__PURE__ */ (0,
|
|
12713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
|
|
12714
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
12715
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
|
|
11454
12716
|
Button,
|
|
11455
12717
|
{
|
|
11456
12718
|
variant: "ghost",
|
|
@@ -11458,12 +12720,12 @@ function DetailTemplate({
|
|
|
11458
12720
|
onClick: onBack,
|
|
11459
12721
|
className: "w-fit gap-1.5 px-0 text-xs text-muted-foreground hover:bg-transparent hover:text-foreground",
|
|
11460
12722
|
children: [
|
|
11461
|
-
/* @__PURE__ */ (0,
|
|
12723
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react53.ArrowLeft, { className: "h-3.5 w-3.5" }),
|
|
11462
12724
|
backLabel
|
|
11463
12725
|
]
|
|
11464
12726
|
}
|
|
11465
12727
|
),
|
|
11466
|
-
/* @__PURE__ */ (0,
|
|
12728
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
11467
12729
|
PageHeader,
|
|
11468
12730
|
{
|
|
11469
12731
|
title,
|
|
@@ -11474,8 +12736,8 @@ function DetailTemplate({
|
|
|
11474
12736
|
}
|
|
11475
12737
|
)
|
|
11476
12738
|
] }),
|
|
11477
|
-
highlights && /* @__PURE__ */ (0,
|
|
11478
|
-
/* @__PURE__ */ (0,
|
|
12739
|
+
highlights && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: highlights }),
|
|
12740
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
|
|
11479
12741
|
"div",
|
|
11480
12742
|
{
|
|
11481
12743
|
className: cn(
|
|
@@ -11483,8 +12745,8 @@ function DetailTemplate({
|
|
|
11483
12745
|
sidebar ? "grid-cols-1 lg:grid-cols-3" : "grid-cols-1"
|
|
11484
12746
|
),
|
|
11485
12747
|
children: [
|
|
11486
|
-
/* @__PURE__ */ (0,
|
|
11487
|
-
sidebar && /* @__PURE__ */ (0,
|
|
12748
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: cn(sidebar ? "lg:col-span-2 space-y-6" : "space-y-6"), children }),
|
|
12749
|
+
sidebar && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("aside", { className: "space-y-6 lg:col-span-1", children: sidebar })
|
|
11488
12750
|
]
|
|
11489
12751
|
}
|
|
11490
12752
|
)
|
|
@@ -11492,8 +12754,8 @@ function DetailTemplate({
|
|
|
11492
12754
|
}
|
|
11493
12755
|
|
|
11494
12756
|
// src/design-system/templates/form-template.tsx
|
|
11495
|
-
var
|
|
11496
|
-
var
|
|
12757
|
+
var import_lucide_react54 = require("lucide-react");
|
|
12758
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
11497
12759
|
function FormTemplate({
|
|
11498
12760
|
title,
|
|
11499
12761
|
description,
|
|
@@ -11512,9 +12774,9 @@ function FormTemplate({
|
|
|
11512
12774
|
onSubmit,
|
|
11513
12775
|
...props
|
|
11514
12776
|
}) {
|
|
11515
|
-
return /* @__PURE__ */ (0,
|
|
11516
|
-
/* @__PURE__ */ (0,
|
|
11517
|
-
onBack && /* @__PURE__ */ (0,
|
|
12777
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex flex-col gap-6 p-4 sm:p-6 md:p-8", children: [
|
|
12778
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
12779
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
11518
12780
|
Button,
|
|
11519
12781
|
{
|
|
11520
12782
|
type: "button",
|
|
@@ -11523,12 +12785,12 @@ function FormTemplate({
|
|
|
11523
12785
|
onClick: onBack,
|
|
11524
12786
|
className: "w-fit gap-1.5 px-0 text-xs text-muted-foreground hover:bg-transparent hover:text-foreground",
|
|
11525
12787
|
children: [
|
|
11526
|
-
/* @__PURE__ */ (0,
|
|
12788
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react54.ArrowLeft, { className: "h-3.5 w-3.5" }),
|
|
11527
12789
|
backLabel
|
|
11528
12790
|
]
|
|
11529
12791
|
}
|
|
11530
12792
|
),
|
|
11531
|
-
/* @__PURE__ */ (0,
|
|
12793
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
11532
12794
|
PageHeader,
|
|
11533
12795
|
{
|
|
11534
12796
|
title,
|
|
@@ -11538,9 +12800,9 @@ function FormTemplate({
|
|
|
11538
12800
|
}
|
|
11539
12801
|
)
|
|
11540
12802
|
] }),
|
|
11541
|
-
/* @__PURE__ */ (0,
|
|
11542
|
-
/* @__PURE__ */ (0,
|
|
11543
|
-
/* @__PURE__ */ (0,
|
|
12803
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("form", { onSubmit, className: cn("space-y-8", className), ...props, children: [
|
|
12804
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "space-y-6", children }),
|
|
12805
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
11544
12806
|
"div",
|
|
11545
12807
|
{
|
|
11546
12808
|
className: cn(
|
|
@@ -11548,9 +12810,9 @@ function FormTemplate({
|
|
|
11548
12810
|
stickyFooter && "sticky bottom-0 -mx-4 -mb-4 bg-background/95 p-4 backdrop-blur border-t sm:-mx-6 sm:-mb-6 sm:p-6 md:-mx-8 md:-mb-8 md:p-8"
|
|
11549
12811
|
),
|
|
11550
12812
|
children: [
|
|
11551
|
-
/* @__PURE__ */ (0,
|
|
11552
|
-
/* @__PURE__ */ (0,
|
|
11553
|
-
onCancel && /* @__PURE__ */ (0,
|
|
12813
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { children: secondaryActions }),
|
|
12814
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
12815
|
+
onCancel && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
11554
12816
|
Button,
|
|
11555
12817
|
{
|
|
11556
12818
|
type: "button",
|
|
@@ -11560,7 +12822,7 @@ function FormTemplate({
|
|
|
11560
12822
|
children: cancelLabel
|
|
11561
12823
|
}
|
|
11562
12824
|
),
|
|
11563
|
-
/* @__PURE__ */ (0,
|
|
12825
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Button, { type: "submit", disabled: isSubmitting, children: isSubmitting ? "Saving..." : submitLabel })
|
|
11564
12826
|
] })
|
|
11565
12827
|
]
|
|
11566
12828
|
}
|
|
@@ -11570,8 +12832,8 @@ function FormTemplate({
|
|
|
11570
12832
|
}
|
|
11571
12833
|
|
|
11572
12834
|
// src/design-system/templates/wizard-template.tsx
|
|
11573
|
-
var
|
|
11574
|
-
var
|
|
12835
|
+
var import_lucide_react55 = require("lucide-react");
|
|
12836
|
+
var import_jsx_runtime102 = require("react/jsx-runtime");
|
|
11575
12837
|
function WizardTemplate({
|
|
11576
12838
|
title,
|
|
11577
12839
|
description,
|
|
@@ -11592,18 +12854,18 @@ function WizardTemplate({
|
|
|
11592
12854
|
}) {
|
|
11593
12855
|
const isLastStep = currentStepIndex === steps.length - 1;
|
|
11594
12856
|
const isFirstStep = currentStepIndex === 0;
|
|
11595
|
-
return /* @__PURE__ */ (0,
|
|
11596
|
-
/* @__PURE__ */ (0,
|
|
11597
|
-
/* @__PURE__ */ (0,
|
|
12857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
|
|
12858
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(PageHeader, { title, description }),
|
|
12859
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("nav", { "aria-label": "Wizard Progress", className: "py-2", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("ol", { className: "flex items-center justify-between gap-2 overflow-x-auto pb-2", children: steps.map((step, idx) => {
|
|
11598
12860
|
const isCompleted = idx < currentStepIndex;
|
|
11599
12861
|
const isCurrent = idx === currentStepIndex;
|
|
11600
12862
|
const isClickable = onStepChange && idx < currentStepIndex;
|
|
11601
|
-
return /* @__PURE__ */ (0,
|
|
12863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
11602
12864
|
"li",
|
|
11603
12865
|
{
|
|
11604
12866
|
className: "flex flex-1 items-center gap-2.5 min-w-[120px]",
|
|
11605
12867
|
children: [
|
|
11606
|
-
/* @__PURE__ */ (0,
|
|
12868
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
11607
12869
|
"button",
|
|
11608
12870
|
{
|
|
11609
12871
|
type: "button",
|
|
@@ -11614,7 +12876,7 @@ function WizardTemplate({
|
|
|
11614
12876
|
isClickable && "cursor-pointer hover:opacity-80"
|
|
11615
12877
|
),
|
|
11616
12878
|
children: [
|
|
11617
|
-
/* @__PURE__ */ (0,
|
|
12879
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
11618
12880
|
"span",
|
|
11619
12881
|
{
|
|
11620
12882
|
className: cn(
|
|
@@ -11623,10 +12885,10 @@ function WizardTemplate({
|
|
|
11623
12885
|
isCurrent && "border-2 border-primary bg-primary/10 text-primary font-bold",
|
|
11624
12886
|
!isCompleted && !isCurrent && "border border-border bg-muted text-muted-foreground"
|
|
11625
12887
|
),
|
|
11626
|
-
children: isCompleted ? /* @__PURE__ */ (0,
|
|
12888
|
+
children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react55.Check, { className: "h-4 w-4" }) : idx + 1
|
|
11627
12889
|
}
|
|
11628
12890
|
),
|
|
11629
|
-
/* @__PURE__ */ (0,
|
|
12891
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "hidden sm:block", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
11630
12892
|
"div",
|
|
11631
12893
|
{
|
|
11632
12894
|
className: cn(
|
|
@@ -11639,7 +12901,7 @@ function WizardTemplate({
|
|
|
11639
12901
|
]
|
|
11640
12902
|
}
|
|
11641
12903
|
),
|
|
11642
|
-
idx < steps.length - 1 && /* @__PURE__ */ (0,
|
|
12904
|
+
idx < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
11643
12905
|
"div",
|
|
11644
12906
|
{
|
|
11645
12907
|
className: cn(
|
|
@@ -11653,9 +12915,9 @@ function WizardTemplate({
|
|
|
11653
12915
|
step.id
|
|
11654
12916
|
);
|
|
11655
12917
|
}) }) }),
|
|
11656
|
-
/* @__PURE__ */ (0,
|
|
11657
|
-
/* @__PURE__ */ (0,
|
|
11658
|
-
/* @__PURE__ */ (0,
|
|
12918
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "flex-1 rounded-lg border bg-card p-4 sm:p-6", children }),
|
|
12919
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex items-center justify-between pt-2", children: [
|
|
12920
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
11659
12921
|
Button,
|
|
11660
12922
|
{
|
|
11661
12923
|
type: "button",
|
|
@@ -11663,12 +12925,12 @@ function WizardTemplate({
|
|
|
11663
12925
|
disabled: isFirstStep || isSubmitting,
|
|
11664
12926
|
onClick: onPrevious,
|
|
11665
12927
|
children: [
|
|
11666
|
-
/* @__PURE__ */ (0,
|
|
12928
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react55.ChevronLeft, { className: "mr-1 h-4 w-4" }),
|
|
11667
12929
|
previousLabel
|
|
11668
12930
|
]
|
|
11669
12931
|
}
|
|
11670
12932
|
),
|
|
11671
|
-
isLastStep ? /* @__PURE__ */ (0,
|
|
12933
|
+
isLastStep ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
11672
12934
|
Button,
|
|
11673
12935
|
{
|
|
11674
12936
|
type: "button",
|
|
@@ -11676,7 +12938,7 @@ function WizardTemplate({
|
|
|
11676
12938
|
onClick: onSubmit,
|
|
11677
12939
|
children: isSubmitting ? "Submitting..." : submitLabel
|
|
11678
12940
|
}
|
|
11679
|
-
) : /* @__PURE__ */ (0,
|
|
12941
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
11680
12942
|
Button,
|
|
11681
12943
|
{
|
|
11682
12944
|
type: "button",
|
|
@@ -11684,7 +12946,7 @@ function WizardTemplate({
|
|
|
11684
12946
|
onClick: onNext,
|
|
11685
12947
|
children: [
|
|
11686
12948
|
nextLabel,
|
|
11687
|
-
/* @__PURE__ */ (0,
|
|
12949
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react55.ChevronRight, { className: "ml-1 h-4 w-4" })
|
|
11688
12950
|
]
|
|
11689
12951
|
}
|
|
11690
12952
|
)
|
|
@@ -11693,7 +12955,7 @@ function WizardTemplate({
|
|
|
11693
12955
|
}
|
|
11694
12956
|
|
|
11695
12957
|
// src/design-system/templates/dashboard-template.tsx
|
|
11696
|
-
var
|
|
12958
|
+
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
11697
12959
|
function DashboardTemplate({
|
|
11698
12960
|
title,
|
|
11699
12961
|
description,
|
|
@@ -11707,8 +12969,8 @@ function DashboardTemplate({
|
|
|
11707
12969
|
className,
|
|
11708
12970
|
...props
|
|
11709
12971
|
}) {
|
|
11710
|
-
return /* @__PURE__ */ (0,
|
|
11711
|
-
/* @__PURE__ */ (0,
|
|
12972
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
|
|
12973
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
11712
12974
|
PageHeader,
|
|
11713
12975
|
{
|
|
11714
12976
|
title,
|
|
@@ -11718,15 +12980,15 @@ function DashboardTemplate({
|
|
|
11718
12980
|
actions
|
|
11719
12981
|
}
|
|
11720
12982
|
),
|
|
11721
|
-
metrics && /* @__PURE__ */ (0,
|
|
11722
|
-
charts && /* @__PURE__ */ (0,
|
|
11723
|
-
activity && /* @__PURE__ */ (0,
|
|
11724
|
-
children && /* @__PURE__ */ (0,
|
|
12983
|
+
metrics && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("section", { "aria-label": "Key Metrics", className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: metrics }),
|
|
12984
|
+
charts && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("section", { "aria-label": "Charts and Visualizations", className: "grid gap-4 md:grid-cols-2 lg:grid-cols-7", children: charts }),
|
|
12985
|
+
activity && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("section", { "aria-label": "Recent Activity", className: "space-y-4", children: activity }),
|
|
12986
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "space-y-6", children })
|
|
11725
12987
|
] });
|
|
11726
12988
|
}
|
|
11727
12989
|
|
|
11728
12990
|
// src/design-system/templates/workspace-template.tsx
|
|
11729
|
-
var
|
|
12991
|
+
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
11730
12992
|
function WorkspaceTemplate({
|
|
11731
12993
|
header,
|
|
11732
12994
|
leftSidebar,
|
|
@@ -11736,7 +12998,7 @@ function WorkspaceTemplate({
|
|
|
11736
12998
|
className,
|
|
11737
12999
|
...props
|
|
11738
13000
|
}) {
|
|
11739
|
-
return /* @__PURE__ */ (0,
|
|
13001
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
|
|
11740
13002
|
"div",
|
|
11741
13003
|
{
|
|
11742
13004
|
className: cn(
|
|
@@ -11745,29 +13007,29 @@ function WorkspaceTemplate({
|
|
|
11745
13007
|
),
|
|
11746
13008
|
...props,
|
|
11747
13009
|
children: [
|
|
11748
|
-
header && /* @__PURE__ */ (0,
|
|
11749
|
-
/* @__PURE__ */ (0,
|
|
11750
|
-
leftSidebar && /* @__PURE__ */ (0,
|
|
11751
|
-
/* @__PURE__ */ (0,
|
|
11752
|
-
rightSidebar && /* @__PURE__ */ (0,
|
|
13010
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("header", { className: "flex h-14 shrink-0 items-center border-b px-4 bg-background z-10", children: header }),
|
|
13011
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex flex-1 overflow-hidden", children: [
|
|
13012
|
+
leftSidebar && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("aside", { className: "hidden md:flex w-64 shrink-0 flex-col border-r bg-sidebar p-3 overflow-y-auto", children: leftSidebar }),
|
|
13013
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)("main", { className: "flex flex-1 flex-col overflow-y-auto p-4 sm:p-6 bg-muted/20", children }),
|
|
13014
|
+
rightSidebar && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("aside", { className: "hidden lg:flex w-80 shrink-0 flex-col border-l bg-background p-4 overflow-y-auto", children: rightSidebar })
|
|
11753
13015
|
] }),
|
|
11754
|
-
footer && /* @__PURE__ */ (0,
|
|
13016
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("footer", { className: "flex h-10 shrink-0 items-center border-t px-4 text-xs text-muted-foreground bg-background", children: footer })
|
|
11755
13017
|
]
|
|
11756
13018
|
}
|
|
11757
13019
|
);
|
|
11758
13020
|
}
|
|
11759
13021
|
|
|
11760
13022
|
// src/design-system/templates/app-header.tsx
|
|
11761
|
-
var
|
|
11762
|
-
var
|
|
13023
|
+
var import_react20 = require("react");
|
|
13024
|
+
var import_lucide_react57 = require("lucide-react");
|
|
11763
13025
|
var import_navigation2 = require("next/navigation");
|
|
11764
13026
|
|
|
11765
13027
|
// src/components/layout/header.tsx
|
|
11766
|
-
var
|
|
11767
|
-
var
|
|
13028
|
+
var import_react19 = require("react");
|
|
13029
|
+
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
11768
13030
|
function Header({ className, fixed, children, ...props }) {
|
|
11769
|
-
const [offset, setOffset] = (0,
|
|
11770
|
-
(0,
|
|
13031
|
+
const [offset, setOffset] = (0, import_react19.useState)(0);
|
|
13032
|
+
(0, import_react19.useEffect)(() => {
|
|
11771
13033
|
const onScroll = () => {
|
|
11772
13034
|
setOffset(document.body.scrollTop || document.documentElement.scrollTop);
|
|
11773
13035
|
};
|
|
@@ -11776,7 +13038,7 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11776
13038
|
}, []);
|
|
11777
13039
|
return (
|
|
11778
13040
|
// Page header container: fixed mode me top par sticky behavior deta hai.
|
|
11779
|
-
/* @__PURE__ */ (0,
|
|
13041
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
11780
13042
|
"header",
|
|
11781
13043
|
{
|
|
11782
13044
|
className: cn(
|
|
@@ -11786,7 +13048,7 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11786
13048
|
className
|
|
11787
13049
|
),
|
|
11788
13050
|
...props,
|
|
11789
|
-
children: /* @__PURE__ */ (0,
|
|
13051
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
|
|
11790
13052
|
"div",
|
|
11791
13053
|
{
|
|
11792
13054
|
className: cn(
|
|
@@ -11795,7 +13057,7 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11795
13057
|
offset > 10 && fixed && "after:absolute after:inset-0 after:-z-10 after:bg-background/20 after:backdrop-blur-lg"
|
|
11796
13058
|
),
|
|
11797
13059
|
children: [
|
|
11798
|
-
/* @__PURE__ */ (0,
|
|
13060
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(AppLogo, { className: "shrink-0 md:hidden" }),
|
|
11799
13061
|
children
|
|
11800
13062
|
]
|
|
11801
13063
|
}
|
|
@@ -11806,9 +13068,9 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11806
13068
|
}
|
|
11807
13069
|
|
|
11808
13070
|
// src/components/search.tsx
|
|
11809
|
-
var
|
|
11810
|
-
var
|
|
11811
|
-
function
|
|
13071
|
+
var import_lucide_react56 = require("lucide-react");
|
|
13072
|
+
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
13073
|
+
function Search7({
|
|
11812
13074
|
className = "",
|
|
11813
13075
|
placeholder = "Search",
|
|
11814
13076
|
iconOnly = true,
|
|
@@ -11820,7 +13082,7 @@ function Search6({
|
|
|
11820
13082
|
search.setOpen(true);
|
|
11821
13083
|
}
|
|
11822
13084
|
};
|
|
11823
|
-
return /* @__PURE__ */ (0,
|
|
13085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
11824
13086
|
Button,
|
|
11825
13087
|
{
|
|
11826
13088
|
...props,
|
|
@@ -11830,7 +13092,7 @@ function Search6({
|
|
|
11830
13092
|
"aria-label": "Search",
|
|
11831
13093
|
"aria-keyshortcuts": "Meta+K Control+K",
|
|
11832
13094
|
onClick: openSearch,
|
|
11833
|
-
children: /* @__PURE__ */ (0,
|
|
13095
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_lucide_react56.SearchIcon, { className: "size-5", "aria-hidden": "true" })
|
|
11834
13096
|
}
|
|
11835
13097
|
);
|
|
11836
13098
|
}
|
|
@@ -11859,6 +13121,7 @@ function createClient2() {
|
|
|
11859
13121
|
|
|
11860
13122
|
// src/stores/notification-store.ts
|
|
11861
13123
|
var activeChannel = null;
|
|
13124
|
+
var activeUserId = null;
|
|
11862
13125
|
var useNotificationStore = (0, import_zustand2.create)((set, get) => ({
|
|
11863
13126
|
notifications: [],
|
|
11864
13127
|
unreadCount: 0,
|
|
@@ -11999,7 +13262,7 @@ var useNotificationStore = (0, import_zustand2.create)((set, get) => ({
|
|
|
11999
13262
|
}));
|
|
12000
13263
|
|
|
12001
13264
|
// src/design-system/templates/app-header.tsx
|
|
12002
|
-
var
|
|
13265
|
+
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
12003
13266
|
function AppHeader({
|
|
12004
13267
|
title,
|
|
12005
13268
|
fixed = true,
|
|
@@ -12009,7 +13272,7 @@ function AppHeader({
|
|
|
12009
13272
|
const router = (0, import_navigation2.useRouter)();
|
|
12010
13273
|
const currentUser = useAuthStore((state) => state.auth.user);
|
|
12011
13274
|
const { unreadCount, fetchNotifications, subscribeToNotifications, unsubscribe } = useNotificationStore();
|
|
12012
|
-
(0,
|
|
13275
|
+
(0, import_react20.useEffect)(() => {
|
|
12013
13276
|
if (currentUser) {
|
|
12014
13277
|
fetchNotifications(currentUser.accountNo);
|
|
12015
13278
|
subscribeToNotifications(currentUser.accountNo);
|
|
@@ -12018,12 +13281,12 @@ function AppHeader({
|
|
|
12018
13281
|
unsubscribe();
|
|
12019
13282
|
};
|
|
12020
13283
|
}, [currentUser, fetchNotifications, subscribeToNotifications, unsubscribe]);
|
|
12021
|
-
return /* @__PURE__ */ (0,
|
|
12022
|
-
/* @__PURE__ */ (0,
|
|
12023
|
-
/* @__PURE__ */ (0,
|
|
12024
|
-
/* @__PURE__ */ (0,
|
|
13284
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Header, { fixed, className: "border-b bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-1 items-center justify-between w-full", children: iconsPosition === "left" ? /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-2 sm:gap-3 min-w-0", children: [
|
|
13285
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("h1", { className: "min-w-0 truncate text-base font-semibold sm:text-lg", children: title }),
|
|
13286
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-1 sm:gap-2 shrink-0 ml-1", children: [
|
|
13287
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Search7, { iconOnly: true }),
|
|
12025
13288
|
children,
|
|
12026
|
-
/* @__PURE__ */ (0,
|
|
13289
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
12027
13290
|
Button,
|
|
12028
13291
|
{
|
|
12029
13292
|
variant: "ghost",
|
|
@@ -12032,18 +13295,18 @@ function AppHeader({
|
|
|
12032
13295
|
"aria-label": "Notifications",
|
|
12033
13296
|
onClick: () => router.push("/notification"),
|
|
12034
13297
|
children: [
|
|
12035
|
-
/* @__PURE__ */ (0,
|
|
12036
|
-
unreadCount > 0 && /* @__PURE__ */ (0,
|
|
13298
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react57.Bell, { className: "size-5" }),
|
|
13299
|
+
unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "absolute -top-1 -right-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-red-500 px-1 text-[10px] font-medium text-white shadow-xs", children: unreadCount > 5 ? "5+" : unreadCount })
|
|
12037
13300
|
]
|
|
12038
13301
|
}
|
|
12039
13302
|
)
|
|
12040
13303
|
] })
|
|
12041
|
-
] }) : /* @__PURE__ */ (0,
|
|
12042
|
-
/* @__PURE__ */ (0,
|
|
12043
|
-
/* @__PURE__ */ (0,
|
|
12044
|
-
/* @__PURE__ */ (0,
|
|
13304
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_jsx_runtime107.Fragment, { children: [
|
|
13305
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("h1", { className: "min-w-0 truncate text-base font-semibold sm:text-lg", children: title }),
|
|
13306
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "ml-auto flex items-center gap-2 sm:gap-3", children: [
|
|
13307
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Search7, { iconOnly: true }),
|
|
12045
13308
|
children,
|
|
12046
|
-
/* @__PURE__ */ (0,
|
|
13309
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
12047
13310
|
Button,
|
|
12048
13311
|
{
|
|
12049
13312
|
variant: "ghost",
|
|
@@ -12052,8 +13315,8 @@ function AppHeader({
|
|
|
12052
13315
|
"aria-label": "Notifications",
|
|
12053
13316
|
onClick: () => router.push("/notification"),
|
|
12054
13317
|
children: [
|
|
12055
|
-
/* @__PURE__ */ (0,
|
|
12056
|
-
unreadCount > 0 && /* @__PURE__ */ (0,
|
|
13318
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react57.Bell, { className: "size-5" }),
|
|
13319
|
+
unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "absolute -top-1 -right-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-red-500 px-1 text-[10px] font-medium text-white shadow-xs", children: unreadCount > 5 ? "5+" : unreadCount })
|
|
12057
13320
|
]
|
|
12058
13321
|
}
|
|
12059
13322
|
)
|
|
@@ -12062,7 +13325,7 @@ function AppHeader({
|
|
|
12062
13325
|
}
|
|
12063
13326
|
|
|
12064
13327
|
// src/design-system/templates/data/sidebar-data.ts
|
|
12065
|
-
var
|
|
13328
|
+
var import_lucide_react58 = require("lucide-react");
|
|
12066
13329
|
var sidebarData2 = {
|
|
12067
13330
|
user: {
|
|
12068
13331
|
name: "satnaing",
|
|
@@ -12072,7 +13335,7 @@ var sidebarData2 = {
|
|
|
12072
13335
|
teams: [
|
|
12073
13336
|
{
|
|
12074
13337
|
name: "Amoga App",
|
|
12075
|
-
logo:
|
|
13338
|
+
logo: import_lucide_react58.Command,
|
|
12076
13339
|
plan: "Demo Company"
|
|
12077
13340
|
}
|
|
12078
13341
|
],
|
|
@@ -12083,52 +13346,52 @@ var sidebarData2 = {
|
|
|
12083
13346
|
{
|
|
12084
13347
|
title: "Message",
|
|
12085
13348
|
url: "/message",
|
|
12086
|
-
icon:
|
|
13349
|
+
icon: import_lucide_react58.Mail
|
|
12087
13350
|
},
|
|
12088
13351
|
{
|
|
12089
13352
|
title: "Email Settings",
|
|
12090
13353
|
url: "/email-settings",
|
|
12091
|
-
icon:
|
|
13354
|
+
icon: import_lucide_react58.Settings
|
|
12092
13355
|
},
|
|
12093
13356
|
{
|
|
12094
13357
|
title: "Design System",
|
|
12095
13358
|
url: "/",
|
|
12096
|
-
icon:
|
|
13359
|
+
icon: import_lucide_react58.Settings
|
|
12097
13360
|
},
|
|
12098
13361
|
{
|
|
12099
13362
|
title: "Vouchers",
|
|
12100
13363
|
url: "/vouchers",
|
|
12101
|
-
icon:
|
|
13364
|
+
icon: import_lucide_react58.Ticket
|
|
12102
13365
|
},
|
|
12103
13366
|
{
|
|
12104
13367
|
title: "AI Chat",
|
|
12105
13368
|
url: "/ai_chat",
|
|
12106
|
-
icon:
|
|
13369
|
+
icon: import_lucide_react58.Bot
|
|
12107
13370
|
},
|
|
12108
13371
|
{
|
|
12109
13372
|
title: "AI Search",
|
|
12110
13373
|
url: "/ai_search",
|
|
12111
|
-
icon:
|
|
13374
|
+
icon: import_lucide_react58.SearchIcon
|
|
12112
13375
|
},
|
|
12113
13376
|
{
|
|
12114
13377
|
title: "Chart Template",
|
|
12115
13378
|
url: "/charttemplate",
|
|
12116
|
-
icon:
|
|
13379
|
+
icon: import_lucide_react58.ChartArea
|
|
12117
13380
|
},
|
|
12118
13381
|
{
|
|
12119
13382
|
title: "Map Template",
|
|
12120
13383
|
url: "/map",
|
|
12121
|
-
icon:
|
|
13384
|
+
icon: import_lucide_react58.Map
|
|
12122
13385
|
},
|
|
12123
13386
|
{
|
|
12124
13387
|
title: "Route Doc",
|
|
12125
13388
|
url: "/routedoc",
|
|
12126
|
-
icon:
|
|
13389
|
+
icon: import_lucide_react58.Route
|
|
12127
13390
|
},
|
|
12128
13391
|
{
|
|
12129
13392
|
title: "Link Maker",
|
|
12130
13393
|
url: "/link-maker",
|
|
12131
|
-
icon:
|
|
13394
|
+
icon: import_lucide_react58.Link
|
|
12132
13395
|
}
|
|
12133
13396
|
]
|
|
12134
13397
|
},
|
|
@@ -12137,7 +13400,7 @@ var sidebarData2 = {
|
|
|
12137
13400
|
items: [
|
|
12138
13401
|
{
|
|
12139
13402
|
title: "Settings",
|
|
12140
|
-
icon:
|
|
13403
|
+
icon: import_lucide_react58.Settings,
|
|
12141
13404
|
items: [
|
|
12142
13405
|
// Add settings pages here
|
|
12143
13406
|
]
|
|
@@ -12145,7 +13408,7 @@ var sidebarData2 = {
|
|
|
12145
13408
|
{
|
|
12146
13409
|
title: "Help Center",
|
|
12147
13410
|
url: "/help-center",
|
|
12148
|
-
icon:
|
|
13411
|
+
icon: import_lucide_react58.HelpCircle
|
|
12149
13412
|
}
|
|
12150
13413
|
]
|
|
12151
13414
|
}
|
|
@@ -12153,7 +13416,7 @@ var sidebarData2 = {
|
|
|
12153
13416
|
};
|
|
12154
13417
|
|
|
12155
13418
|
// src/design-system/templates/app-logo.tsx
|
|
12156
|
-
var
|
|
13419
|
+
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
12157
13420
|
function AppLogo({ className, onClick }) {
|
|
12158
13421
|
const { toggleSidebar, setOpenMobile, isMobile } = useSidebar();
|
|
12159
13422
|
const team = sidebarData2.teams[0];
|
|
@@ -12170,7 +13433,7 @@ function AppLogo({ className, onClick }) {
|
|
|
12170
13433
|
toggleSidebar();
|
|
12171
13434
|
}
|
|
12172
13435
|
};
|
|
12173
|
-
return /* @__PURE__ */ (0,
|
|
13436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
12174
13437
|
Button,
|
|
12175
13438
|
{
|
|
12176
13439
|
type: "button",
|
|
@@ -12181,30 +13444,30 @@ function AppLogo({ className, onClick }) {
|
|
|
12181
13444
|
className
|
|
12182
13445
|
),
|
|
12183
13446
|
"aria-label": "Open sidebar menu",
|
|
12184
|
-
children: /* @__PURE__ */ (0,
|
|
13447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex size-full items-center justify-center rounded-lg bg-primary text-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Logo, { className: "size-4" }) })
|
|
12185
13448
|
}
|
|
12186
13449
|
);
|
|
12187
13450
|
}
|
|
12188
13451
|
|
|
12189
13452
|
// src/context/layout-provider.tsx
|
|
12190
|
-
var
|
|
12191
|
-
var
|
|
13453
|
+
var import_react21 = require("react");
|
|
13454
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
12192
13455
|
var LAYOUT_COLLAPSIBLE_COOKIE_NAME = "layout_collapsible";
|
|
12193
13456
|
var LAYOUT_VARIANT_COOKIE_NAME = "layout_variant";
|
|
12194
13457
|
var LAYOUT_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
12195
13458
|
var DEFAULT_VARIANT = "inset";
|
|
12196
13459
|
var DEFAULT_COLLAPSIBLE = "icon";
|
|
12197
|
-
var LayoutContext = (0,
|
|
13460
|
+
var LayoutContext = (0, import_react21.createContext)(null);
|
|
12198
13461
|
function LayoutProvider({ children }) {
|
|
12199
|
-
const [collapsible, _setCollapsible] = (0,
|
|
13462
|
+
const [collapsible, _setCollapsible] = (0, import_react21.useState)(() => {
|
|
12200
13463
|
const saved = getCookie(LAYOUT_COLLAPSIBLE_COOKIE_NAME);
|
|
12201
13464
|
return saved || DEFAULT_COLLAPSIBLE;
|
|
12202
13465
|
});
|
|
12203
|
-
const [variant, _setVariant] = (0,
|
|
13466
|
+
const [variant, _setVariant] = (0, import_react21.useState)(() => {
|
|
12204
13467
|
const saved = getCookie(LAYOUT_VARIANT_COOKIE_NAME);
|
|
12205
13468
|
return saved || DEFAULT_VARIANT;
|
|
12206
13469
|
});
|
|
12207
|
-
const [showInlineNotFound, setShowInlineNotFound] = (0,
|
|
13470
|
+
const [showInlineNotFound, setShowInlineNotFound] = (0, import_react21.useState)(false);
|
|
12208
13471
|
const setCollapsible = (newCollapsible) => {
|
|
12209
13472
|
_setCollapsible(newCollapsible);
|
|
12210
13473
|
setCookie(
|
|
@@ -12232,10 +13495,10 @@ function LayoutProvider({ children }) {
|
|
|
12232
13495
|
showInlineNotFound,
|
|
12233
13496
|
setShowInlineNotFound
|
|
12234
13497
|
};
|
|
12235
|
-
return /* @__PURE__ */ (0,
|
|
13498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(LayoutContext, { value: contextValue, children });
|
|
12236
13499
|
}
|
|
12237
13500
|
function useLayout() {
|
|
12238
|
-
const context = (0,
|
|
13501
|
+
const context = (0, import_react21.useContext)(LayoutContext);
|
|
12239
13502
|
if (!context) {
|
|
12240
13503
|
return {
|
|
12241
13504
|
resetLayout: () => {
|
|
@@ -12259,13 +13522,13 @@ function useLayout() {
|
|
|
12259
13522
|
// src/design-system/templates/nav-group.tsx
|
|
12260
13523
|
var import_link = __toESM(require("next/link"));
|
|
12261
13524
|
var import_navigation3 = require("next/navigation");
|
|
12262
|
-
var
|
|
12263
|
-
var
|
|
13525
|
+
var import_lucide_react59 = require("lucide-react");
|
|
13526
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
12264
13527
|
function NavGroup({ title, items }) {
|
|
12265
13528
|
const { state, isMobile, openMobile, setOpenMobile } = useSidebar();
|
|
12266
13529
|
const href = (0, import_navigation3.usePathname)();
|
|
12267
|
-
return /* @__PURE__ */ (0,
|
|
12268
|
-
/* @__PURE__ */ (0,
|
|
13530
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(SidebarGroup, { className: cn(title === "Menu" && "pt-0"), children: [
|
|
13531
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
12269
13532
|
SidebarGroupLabel,
|
|
12270
13533
|
{
|
|
12271
13534
|
className: cn(
|
|
@@ -12273,8 +13536,8 @@ function NavGroup({ title, items }) {
|
|
|
12273
13536
|
title === "Menu" && state !== "collapsed" && "sticky top-0 z-20 bg-sidebar py-1.5"
|
|
12274
13537
|
),
|
|
12275
13538
|
children: [
|
|
12276
|
-
/* @__PURE__ */ (0,
|
|
12277
|
-
title === "Menu" && !isMobile && /* @__PURE__ */ (0,
|
|
13539
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: title }),
|
|
13540
|
+
title === "Menu" && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
12278
13541
|
SidebarTrigger,
|
|
12279
13542
|
{
|
|
12280
13543
|
variant: "ghost",
|
|
@@ -12282,7 +13545,7 @@ function NavGroup({ title, items }) {
|
|
|
12282
13545
|
"aria-label": "Toggle sidebar"
|
|
12283
13546
|
}
|
|
12284
13547
|
),
|
|
12285
|
-
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0,
|
|
13548
|
+
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
12286
13549
|
Button,
|
|
12287
13550
|
{
|
|
12288
13551
|
type: "button",
|
|
@@ -12291,37 +13554,37 @@ function NavGroup({ title, items }) {
|
|
|
12291
13554
|
className: "size-6 shrink-0",
|
|
12292
13555
|
"aria-label": "Close sidebar",
|
|
12293
13556
|
onClick: () => setOpenMobile(false),
|
|
12294
|
-
children: /* @__PURE__ */ (0,
|
|
13557
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react59.X, { className: "size-4", "aria-hidden": "true" })
|
|
12295
13558
|
}
|
|
12296
13559
|
)
|
|
12297
13560
|
]
|
|
12298
13561
|
}
|
|
12299
13562
|
),
|
|
12300
|
-
/* @__PURE__ */ (0,
|
|
13563
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenu, { children: items.map((item) => {
|
|
12301
13564
|
const key = `${item.title}-${item.url}`;
|
|
12302
13565
|
if (!item.items)
|
|
12303
|
-
return /* @__PURE__ */ (0,
|
|
13566
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuLink, { item, href }, key);
|
|
12304
13567
|
if (item.title === "Settings" && item.items.length === 0)
|
|
12305
|
-
return /* @__PURE__ */ (0,
|
|
13568
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuSettings, { item }, key);
|
|
12306
13569
|
if (state === "collapsed" && !isMobile)
|
|
12307
|
-
return /* @__PURE__ */ (0,
|
|
12308
|
-
return /* @__PURE__ */ (0,
|
|
13570
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuCollapsedDropdown, { item, href }, key);
|
|
13571
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuCollapsible, { item, href }, key);
|
|
12309
13572
|
}) })
|
|
12310
13573
|
] });
|
|
12311
13574
|
}
|
|
12312
13575
|
function NavBadge({ children }) {
|
|
12313
|
-
return /* @__PURE__ */ (0,
|
|
13576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Badge, { className: "rounded-full px-1 py-0 text-xs", children });
|
|
12314
13577
|
}
|
|
12315
13578
|
function SidebarMenuLink({ item, href }) {
|
|
12316
13579
|
const { setOpenMobile } = useSidebar();
|
|
12317
13580
|
const { setShowInlineNotFound } = useLayout();
|
|
12318
|
-
return /* @__PURE__ */ (0,
|
|
13581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
12319
13582
|
SidebarMenuButton,
|
|
12320
13583
|
{
|
|
12321
13584
|
asChild: true,
|
|
12322
13585
|
isActive: checkIsActive(href, item),
|
|
12323
13586
|
tooltip: item.title,
|
|
12324
|
-
children: /* @__PURE__ */ (0,
|
|
13587
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
12325
13588
|
import_link.default,
|
|
12326
13589
|
{
|
|
12327
13590
|
href: item.url,
|
|
@@ -12330,9 +13593,9 @@ function SidebarMenuLink({ item, href }) {
|
|
|
12330
13593
|
setOpenMobile(false);
|
|
12331
13594
|
},
|
|
12332
13595
|
children: [
|
|
12333
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12334
|
-
/* @__PURE__ */ (0,
|
|
12335
|
-
item.badge && /* @__PURE__ */ (0,
|
|
13596
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(item.icon, {}),
|
|
13597
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: item.title }),
|
|
13598
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(NavBadge, { children: item.badge })
|
|
12336
13599
|
]
|
|
12337
13600
|
}
|
|
12338
13601
|
)
|
|
@@ -12342,7 +13605,7 @@ function SidebarMenuLink({ item, href }) {
|
|
|
12342
13605
|
function SidebarMenuSettings({ item }) {
|
|
12343
13606
|
const { setOpenMobile } = useSidebar();
|
|
12344
13607
|
const { showInlineNotFound, setShowInlineNotFound } = useLayout();
|
|
12345
|
-
return /* @__PURE__ */ (0,
|
|
13608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
12346
13609
|
SidebarMenuButton,
|
|
12347
13610
|
{
|
|
12348
13611
|
tooltip: item.title,
|
|
@@ -12352,8 +13615,8 @@ function SidebarMenuSettings({ item }) {
|
|
|
12352
13615
|
setOpenMobile(false);
|
|
12353
13616
|
},
|
|
12354
13617
|
children: [
|
|
12355
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12356
|
-
/* @__PURE__ */ (0,
|
|
13618
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(item.icon, {}),
|
|
13619
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: item.title })
|
|
12357
13620
|
]
|
|
12358
13621
|
}
|
|
12359
13622
|
) });
|
|
@@ -12364,25 +13627,25 @@ function SidebarMenuCollapsible({
|
|
|
12364
13627
|
}) {
|
|
12365
13628
|
const { setOpenMobile } = useSidebar();
|
|
12366
13629
|
const { setShowInlineNotFound } = useLayout();
|
|
12367
|
-
return /* @__PURE__ */ (0,
|
|
13630
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
12368
13631
|
Collapsible,
|
|
12369
13632
|
{
|
|
12370
13633
|
asChild: true,
|
|
12371
13634
|
defaultOpen: checkIsActive(href, item, true),
|
|
12372
13635
|
className: "group/collapsible",
|
|
12373
|
-
children: /* @__PURE__ */ (0,
|
|
12374
|
-
/* @__PURE__ */ (0,
|
|
12375
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12376
|
-
/* @__PURE__ */ (0,
|
|
12377
|
-
item.badge && /* @__PURE__ */ (0,
|
|
12378
|
-
/* @__PURE__ */ (0,
|
|
13636
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(SidebarMenuItem, { children: [
|
|
13637
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(SidebarMenuButton, { tooltip: item.title, children: [
|
|
13638
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(item.icon, {}),
|
|
13639
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: item.title }),
|
|
13640
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(NavBadge, { children: item.badge }),
|
|
13641
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react59.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180" })
|
|
12379
13642
|
] }) }),
|
|
12380
|
-
/* @__PURE__ */ (0,
|
|
13643
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(CollapsibleContent, { className: "CollapsibleContent", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuSubItem, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
12381
13644
|
SidebarMenuSubButton,
|
|
12382
13645
|
{
|
|
12383
13646
|
asChild: true,
|
|
12384
13647
|
isActive: checkIsActive(href, subItem),
|
|
12385
|
-
children: /* @__PURE__ */ (0,
|
|
13648
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
12386
13649
|
import_link.default,
|
|
12387
13650
|
{
|
|
12388
13651
|
href: subItem.url,
|
|
@@ -12391,9 +13654,9 @@ function SidebarMenuCollapsible({
|
|
|
12391
13654
|
setOpenMobile(false);
|
|
12392
13655
|
},
|
|
12393
13656
|
children: [
|
|
12394
|
-
subItem.icon && /* @__PURE__ */ (0,
|
|
12395
|
-
/* @__PURE__ */ (0,
|
|
12396
|
-
subItem.badge && /* @__PURE__ */ (0,
|
|
13657
|
+
subItem.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(subItem.icon, {}),
|
|
13658
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: subItem.title }),
|
|
13659
|
+
subItem.badge && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(NavBadge, { children: subItem.badge })
|
|
12397
13660
|
]
|
|
12398
13661
|
}
|
|
12399
13662
|
)
|
|
@@ -12407,36 +13670,36 @@ function SidebarMenuCollapsedDropdown({
|
|
|
12407
13670
|
item,
|
|
12408
13671
|
href
|
|
12409
13672
|
}) {
|
|
12410
|
-
return /* @__PURE__ */ (0,
|
|
12411
|
-
/* @__PURE__ */ (0,
|
|
13673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(DropdownMenu, { children: [
|
|
13674
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
12412
13675
|
SidebarMenuButton,
|
|
12413
13676
|
{
|
|
12414
13677
|
tooltip: item.title,
|
|
12415
13678
|
isActive: checkIsActive(href, item),
|
|
12416
13679
|
children: [
|
|
12417
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12418
|
-
/* @__PURE__ */ (0,
|
|
12419
|
-
item.badge && /* @__PURE__ */ (0,
|
|
12420
|
-
/* @__PURE__ */ (0,
|
|
13680
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(item.icon, {}),
|
|
13681
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: item.title }),
|
|
13682
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(NavBadge, { children: item.badge }),
|
|
13683
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react59.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
|
|
12421
13684
|
]
|
|
12422
13685
|
}
|
|
12423
13686
|
) }),
|
|
12424
|
-
/* @__PURE__ */ (0,
|
|
12425
|
-
/* @__PURE__ */ (0,
|
|
13687
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(DropdownMenuContent, { side: "right", align: "start", sideOffset: 4, children: [
|
|
13688
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(DropdownMenuLabel, { children: [
|
|
12426
13689
|
item.title,
|
|
12427
13690
|
" ",
|
|
12428
13691
|
item.badge ? `(${item.badge})` : ""
|
|
12429
13692
|
] }),
|
|
12430
|
-
/* @__PURE__ */ (0,
|
|
12431
|
-
item.items.map((sub) => /* @__PURE__ */ (0,
|
|
13693
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(DropdownMenuSeparator, {}),
|
|
13694
|
+
item.items.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
12432
13695
|
import_link.default,
|
|
12433
13696
|
{
|
|
12434
13697
|
href: sub.url,
|
|
12435
13698
|
className: `${checkIsActive(href, sub) ? "bg-secondary" : ""}`,
|
|
12436
13699
|
children: [
|
|
12437
|
-
sub.icon && /* @__PURE__ */ (0,
|
|
12438
|
-
/* @__PURE__ */ (0,
|
|
12439
|
-
sub.badge && /* @__PURE__ */ (0,
|
|
13700
|
+
sub.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(sub.icon, {}),
|
|
13701
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "max-w-52 text-wrap", children: sub.title }),
|
|
13702
|
+
sub.badge && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "ms-auto text-xs", children: sub.badge })
|
|
12440
13703
|
]
|
|
12441
13704
|
}
|
|
12442
13705
|
) }, `${sub.title}-${sub.url}`))
|
|
@@ -12451,20 +13714,20 @@ function checkIsActive(href, item, mainNav = false) {
|
|
|
12451
13714
|
}
|
|
12452
13715
|
|
|
12453
13716
|
// src/design-system/templates/team-switcher.tsx
|
|
12454
|
-
var
|
|
13717
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
12455
13718
|
function TeamSwitcher({ teams }) {
|
|
12456
13719
|
useSidebar();
|
|
12457
13720
|
const activeTeam = teams[0];
|
|
12458
|
-
return /* @__PURE__ */ (0,
|
|
13721
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12459
13722
|
SidebarMenuButton,
|
|
12460
13723
|
{
|
|
12461
13724
|
size: "lg",
|
|
12462
13725
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
12463
13726
|
children: [
|
|
12464
|
-
/* @__PURE__ */ (0,
|
|
12465
|
-
/* @__PURE__ */ (0,
|
|
12466
|
-
/* @__PURE__ */ (0,
|
|
12467
|
-
/* @__PURE__ */ (0,
|
|
13727
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(activeTeam.logo, { className: "size-4" }) }),
|
|
13728
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
13729
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "truncate font-semibold", children: activeTeam.name }),
|
|
13730
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "truncate text-xs", children: activeTeam.plan })
|
|
12468
13731
|
] })
|
|
12469
13732
|
]
|
|
12470
13733
|
}
|
|
@@ -12472,25 +13735,25 @@ function TeamSwitcher({ teams }) {
|
|
|
12472
13735
|
}
|
|
12473
13736
|
|
|
12474
13737
|
// src/design-system/templates/nav-user.tsx
|
|
12475
|
-
var
|
|
13738
|
+
var import_lucide_react61 = require("lucide-react");
|
|
12476
13739
|
|
|
12477
13740
|
// src/hooks/use-dialog-state.tsx
|
|
12478
|
-
var
|
|
13741
|
+
var import_react22 = require("react");
|
|
12479
13742
|
function useDialogState(initialState2 = null) {
|
|
12480
|
-
const [open, _setOpen] = (0,
|
|
13743
|
+
const [open, _setOpen] = (0, import_react22.useState)(initialState2);
|
|
12481
13744
|
const setOpen = (str) => _setOpen((prev) => prev === str ? null : str);
|
|
12482
13745
|
return [open, setOpen];
|
|
12483
13746
|
}
|
|
12484
13747
|
|
|
12485
13748
|
// src/components/config-drawer.tsx
|
|
12486
|
-
var
|
|
13749
|
+
var import_react23 = require("react");
|
|
12487
13750
|
var import_react_radio_group = require("@radix-ui/react-radio-group");
|
|
12488
|
-
var
|
|
13751
|
+
var import_lucide_react60 = require("lucide-react");
|
|
12489
13752
|
|
|
12490
13753
|
// src/assets/custom/icon-theme-dark.tsx
|
|
12491
|
-
var
|
|
13754
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
12492
13755
|
function IconThemeDark(props) {
|
|
12493
|
-
return /* @__PURE__ */ (0,
|
|
13756
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(
|
|
12494
13757
|
"svg",
|
|
12495
13758
|
{
|
|
12496
13759
|
"data-name": "icon-theme-dark",
|
|
@@ -12498,27 +13761,27 @@ function IconThemeDark(props) {
|
|
|
12498
13761
|
viewBox: "0 0 79.86 51.14",
|
|
12499
13762
|
...props,
|
|
12500
13763
|
children: [
|
|
12501
|
-
/* @__PURE__ */ (0,
|
|
12502
|
-
/* @__PURE__ */ (0,
|
|
12503
|
-
/* @__PURE__ */ (0,
|
|
13764
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("g", { fill: "#1d2b3f", children: [
|
|
13765
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("rect", { x: 0.53, y: 0.5, width: 78.83, height: 50.14, rx: 3.5, ry: 3.5 }),
|
|
13766
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("path", { d: "M75.86 1c1.65 0 3 1.35 3 3v43.14c0 1.65-1.35 3-3 3H4.03c-1.65 0-3-1.35-3-3V4c0-1.65 1.35-3 3-3h71.83m0-1H4.03c-2.21 0-4 1.79-4 4v43.14c0 2.21 1.79 4 4 4h71.83c2.21 0 4-1.79 4-4V4c0-2.21-1.79-4-4-4z" })
|
|
12504
13767
|
] }),
|
|
12505
|
-
/* @__PURE__ */ (0,
|
|
13768
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12506
13769
|
"path",
|
|
12507
13770
|
{
|
|
12508
13771
|
d: "M22.88 0h52.97c2.21 0 4 1.79 4 4v43.14c0 2.21-1.79 4-4 4H22.88V0z",
|
|
12509
13772
|
fill: "#0d1628"
|
|
12510
13773
|
}
|
|
12511
13774
|
),
|
|
12512
|
-
/* @__PURE__ */ (0,
|
|
12513
|
-
/* @__PURE__ */ (0,
|
|
13775
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("circle", { cx: 6.7, cy: 7.04, r: 3.54, fill: "#426187" }),
|
|
13776
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12514
13777
|
"path",
|
|
12515
13778
|
{
|
|
12516
13779
|
d: "M18.12 6.39h-5.87c-.6 0-1.09-.45-1.09-1s.49-1 1.09-1h5.87c.6 0 1.09.45 1.09 1s-.49 1-1.09 1zM16.55 9.77h-4.24c-.55 0-1-.45-1-1s.45-1 1-1h4.24c.55 0 1 .45 1 1s-.45 1-1 1zM18.32 17.37H4.59c-.69 0-1.25-.47-1.25-1.05s.56-1.05 1.25-1.05h13.73c.69 0 1.25.47 1.25 1.05s-.56 1.05-1.25 1.05zM15.34 21.26h-11c-.55 0-1-.41-1-.91s.45-.91 1-.91h11c.55 0 1 .41 1 .91s-.45.91-1 .91zM16.46 25.57H4.43c-.6 0-1.09-.44-1.09-.98s.49-.98 1.09-.98h12.03c.6 0 1.09.44 1.09.98s-.49.98-1.09.98z",
|
|
12517
13780
|
fill: "#426187"
|
|
12518
13781
|
}
|
|
12519
13782
|
),
|
|
12520
|
-
/* @__PURE__ */ (0,
|
|
12521
|
-
/* @__PURE__ */ (0,
|
|
13783
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("g", { fill: "#2a62bc", children: [
|
|
13784
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12522
13785
|
"rect",
|
|
12523
13786
|
{
|
|
12524
13787
|
x: 33.36,
|
|
@@ -12530,7 +13793,7 @@ function IconThemeDark(props) {
|
|
|
12530
13793
|
opacity: 0.32
|
|
12531
13794
|
}
|
|
12532
13795
|
),
|
|
12533
|
-
/* @__PURE__ */ (0,
|
|
13796
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12534
13797
|
"rect",
|
|
12535
13798
|
{
|
|
12536
13799
|
x: 29.64,
|
|
@@ -12542,7 +13805,7 @@ function IconThemeDark(props) {
|
|
|
12542
13805
|
opacity: 0.44
|
|
12543
13806
|
}
|
|
12544
13807
|
),
|
|
12545
|
-
/* @__PURE__ */ (0,
|
|
13808
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12546
13809
|
"rect",
|
|
12547
13810
|
{
|
|
12548
13811
|
x: 37.16,
|
|
@@ -12554,7 +13817,7 @@ function IconThemeDark(props) {
|
|
|
12554
13817
|
opacity: 0.53
|
|
12555
13818
|
}
|
|
12556
13819
|
),
|
|
12557
|
-
/* @__PURE__ */ (0,
|
|
13820
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12558
13821
|
"rect",
|
|
12559
13822
|
{
|
|
12560
13823
|
x: 41.19,
|
|
@@ -12567,8 +13830,8 @@ function IconThemeDark(props) {
|
|
|
12567
13830
|
}
|
|
12568
13831
|
)
|
|
12569
13832
|
] }),
|
|
12570
|
-
/* @__PURE__ */ (0,
|
|
12571
|
-
/* @__PURE__ */ (0,
|
|
13833
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, fill: "#2f5491", opacity: 0.5 }),
|
|
13834
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12572
13835
|
"path",
|
|
12573
13836
|
{
|
|
12574
13837
|
d: "M62.74 16.32l4.1-6.87c1.19.71 2.18 1.72 2.86 2.92s1.04 2.57 1.04 3.95h-8z",
|
|
@@ -12576,7 +13839,7 @@ function IconThemeDark(props) {
|
|
|
12576
13839
|
opacity: 0.74
|
|
12577
13840
|
}
|
|
12578
13841
|
),
|
|
12579
|
-
/* @__PURE__ */ (0,
|
|
13842
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
12580
13843
|
"rect",
|
|
12581
13844
|
{
|
|
12582
13845
|
x: 29.64,
|
|
@@ -12594,9 +13857,9 @@ function IconThemeDark(props) {
|
|
|
12594
13857
|
}
|
|
12595
13858
|
|
|
12596
13859
|
// src/assets/custom/icon-theme-light.tsx
|
|
12597
|
-
var
|
|
13860
|
+
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
12598
13861
|
function IconThemeLight(props) {
|
|
12599
|
-
return /* @__PURE__ */ (0,
|
|
13862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
|
|
12600
13863
|
"svg",
|
|
12601
13864
|
{
|
|
12602
13865
|
"data-name": "icon-theme-light",
|
|
@@ -12604,27 +13867,27 @@ function IconThemeLight(props) {
|
|
|
12604
13867
|
viewBox: "0 0 79.86 51.14",
|
|
12605
13868
|
...props,
|
|
12606
13869
|
children: [
|
|
12607
|
-
/* @__PURE__ */ (0,
|
|
12608
|
-
/* @__PURE__ */ (0,
|
|
12609
|
-
/* @__PURE__ */ (0,
|
|
13870
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { fill: "#d9d9d9", children: [
|
|
13871
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("rect", { x: 0.53, y: 0.5, width: 78.83, height: 50.14, rx: 3.5, ry: 3.5 }),
|
|
13872
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("path", { d: "M75.86 1c1.65 0 3 1.35 3 3v43.14c0 1.65-1.35 3-3 3H4.03c-1.65 0-3-1.35-3-3V4c0-1.65 1.35-3 3-3h71.83m0-1H4.03c-2.21 0-4 1.79-4 4v43.14c0 2.21 1.79 4 4 4h71.83c2.21 0 4-1.79 4-4V4c0-2.21-1.79-4-4-4z" })
|
|
12610
13873
|
] }),
|
|
12611
|
-
/* @__PURE__ */ (0,
|
|
13874
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12612
13875
|
"path",
|
|
12613
13876
|
{
|
|
12614
13877
|
d: "M22.88 0h52.97c2.21 0 4 1.79 4 4v43.14c0 2.21-1.79 4-4 4H22.88V0z",
|
|
12615
13878
|
fill: "#ecedef"
|
|
12616
13879
|
}
|
|
12617
13880
|
),
|
|
12618
|
-
/* @__PURE__ */ (0,
|
|
12619
|
-
/* @__PURE__ */ (0,
|
|
13881
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("circle", { cx: 6.7, cy: 7.04, r: 3.54, fill: "#fff" }),
|
|
13882
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12620
13883
|
"path",
|
|
12621
13884
|
{
|
|
12622
13885
|
d: "M18.12 6.39h-5.87c-.6 0-1.09-.45-1.09-1s.49-1 1.09-1h5.87c.6 0 1.09.45 1.09 1s-.49 1-1.09 1zM16.55 9.77h-4.24c-.55 0-1-.45-1-1s.45-1 1-1h4.24c.55 0 1 .45 1 1s-.45 1-1 1zM18.32 17.37H4.59c-.69 0-1.25-.47-1.25-1.05s.56-1.05 1.25-1.05h13.73c.69 0 1.25.47 1.25 1.05s-.56 1.05-1.25 1.05zM15.34 21.26h-11c-.55 0-1-.41-1-.91s.45-.91 1-.91h11c.55 0 1 .41 1 .91s-.45.91-1 .91zM16.46 25.57H4.43c-.6 0-1.09-.44-1.09-.98s.49-.98 1.09-.98h12.03c.6 0 1.09.44 1.09.98s-.49.98-1.09.98z",
|
|
12623
13886
|
fill: "#fff"
|
|
12624
13887
|
}
|
|
12625
13888
|
),
|
|
12626
|
-
/* @__PURE__ */ (0,
|
|
12627
|
-
/* @__PURE__ */ (0,
|
|
13889
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { fill: "#c0c4c4", children: [
|
|
13890
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12628
13891
|
"rect",
|
|
12629
13892
|
{
|
|
12630
13893
|
x: 33.36,
|
|
@@ -12636,7 +13899,7 @@ function IconThemeLight(props) {
|
|
|
12636
13899
|
opacity: 0.32
|
|
12637
13900
|
}
|
|
12638
13901
|
),
|
|
12639
|
-
/* @__PURE__ */ (0,
|
|
13902
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12640
13903
|
"rect",
|
|
12641
13904
|
{
|
|
12642
13905
|
x: 29.64,
|
|
@@ -12648,7 +13911,7 @@ function IconThemeLight(props) {
|
|
|
12648
13911
|
opacity: 0.44
|
|
12649
13912
|
}
|
|
12650
13913
|
),
|
|
12651
|
-
/* @__PURE__ */ (0,
|
|
13914
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12652
13915
|
"rect",
|
|
12653
13916
|
{
|
|
12654
13917
|
x: 37.16,
|
|
@@ -12660,7 +13923,7 @@ function IconThemeLight(props) {
|
|
|
12660
13923
|
opacity: 0.53
|
|
12661
13924
|
}
|
|
12662
13925
|
),
|
|
12663
|
-
/* @__PURE__ */ (0,
|
|
13926
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12664
13927
|
"rect",
|
|
12665
13928
|
{
|
|
12666
13929
|
x: 41.19,
|
|
@@ -12673,12 +13936,12 @@ function IconThemeLight(props) {
|
|
|
12673
13936
|
}
|
|
12674
13937
|
)
|
|
12675
13938
|
] }),
|
|
12676
|
-
/* @__PURE__ */ (0,
|
|
12677
|
-
/* @__PURE__ */ (0,
|
|
12678
|
-
/* @__PURE__ */ (0,
|
|
12679
|
-
/* @__PURE__ */ (0,
|
|
13939
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, fill: "#fff" }),
|
|
13940
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { fill: "#d9d9d9", children: [
|
|
13941
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("path", { d: "M63.62 15.82L67 10.15c.93.64 1.7 1.48 2.26 2.47.56.98.89 2.08.96 3.21h-6.6z" }),
|
|
13942
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("path", { d: "M67.14 10.88a6.977 6.977 0 012.52 4.44h-5.17l2.65-4.44m-.31-1.43l-4.1 6.87h8c0-1.39-.36-2.75-1.04-3.95s-1.67-2.21-2.86-2.92z" })
|
|
12680
13943
|
] }),
|
|
12681
|
-
/* @__PURE__ */ (0,
|
|
13944
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12682
13945
|
"rect",
|
|
12683
13946
|
{
|
|
12684
13947
|
x: 29.64,
|
|
@@ -12696,12 +13959,12 @@ function IconThemeLight(props) {
|
|
|
12696
13959
|
}
|
|
12697
13960
|
|
|
12698
13961
|
// src/assets/custom/icon-theme-system.tsx
|
|
12699
|
-
var
|
|
13962
|
+
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
12700
13963
|
function IconThemeSystem({
|
|
12701
13964
|
className,
|
|
12702
13965
|
...props
|
|
12703
13966
|
}) {
|
|
12704
|
-
return /* @__PURE__ */ (0,
|
|
13967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
|
|
12705
13968
|
"svg",
|
|
12706
13969
|
{
|
|
12707
13970
|
"data-name": "icon-theme-system",
|
|
@@ -12714,8 +13977,8 @@ function IconThemeSystem({
|
|
|
12714
13977
|
),
|
|
12715
13978
|
...props,
|
|
12716
13979
|
children: [
|
|
12717
|
-
/* @__PURE__ */ (0,
|
|
12718
|
-
/* @__PURE__ */ (0,
|
|
13980
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("path", { opacity: 0.2, d: "M0 0.03H22.88V51.17H0z" }),
|
|
13981
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12719
13982
|
"circle",
|
|
12720
13983
|
{
|
|
12721
13984
|
cx: 6.7,
|
|
@@ -12728,7 +13991,7 @@ function IconThemeSystem({
|
|
|
12728
13991
|
strokeMiterlimit: 10
|
|
12729
13992
|
}
|
|
12730
13993
|
),
|
|
12731
|
-
/* @__PURE__ */ (0,
|
|
13994
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12732
13995
|
"path",
|
|
12733
13996
|
{
|
|
12734
13997
|
d: "M18.12 6.39h-5.87c-.6 0-1.09-.45-1.09-1s.49-1 1.09-1h5.87c.6 0 1.09.45 1.09 1s-.49 1-1.09 1zM16.55 9.77h-4.24c-.55 0-1-.45-1-1s.45-1 1-1h4.24c.55 0 1 .45 1 1s-.45 1-1 1z",
|
|
@@ -12737,7 +14000,7 @@ function IconThemeSystem({
|
|
|
12737
14000
|
opacity: 0.75
|
|
12738
14001
|
}
|
|
12739
14002
|
),
|
|
12740
|
-
/* @__PURE__ */ (0,
|
|
14003
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12741
14004
|
"path",
|
|
12742
14005
|
{
|
|
12743
14006
|
d: "M18.32 17.37H4.59c-.69 0-1.25-.47-1.25-1.05s.56-1.05 1.25-1.05h13.73c.69 0 1.25.47 1.25 1.05s-.56 1.05-1.25 1.05z",
|
|
@@ -12746,7 +14009,7 @@ function IconThemeSystem({
|
|
|
12746
14009
|
opacity: 0.72
|
|
12747
14010
|
}
|
|
12748
14011
|
),
|
|
12749
|
-
/* @__PURE__ */ (0,
|
|
14012
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12750
14013
|
"path",
|
|
12751
14014
|
{
|
|
12752
14015
|
d: "M15.34 21.26h-11c-.55 0-1-.41-1-.91s.45-.91 1-.91h11c.55 0 1 .41 1 .91s-.45.91-1 .91z",
|
|
@@ -12755,7 +14018,7 @@ function IconThemeSystem({
|
|
|
12755
14018
|
opacity: 0.55
|
|
12756
14019
|
}
|
|
12757
14020
|
),
|
|
12758
|
-
/* @__PURE__ */ (0,
|
|
14021
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12759
14022
|
"path",
|
|
12760
14023
|
{
|
|
12761
14024
|
d: "M16.46 25.57H4.43c-.6 0-1.09-.44-1.09-.98s.49-.98 1.09-.98h12.03c.6 0 1.09.44 1.09.98s-.49.98-1.09.98z",
|
|
@@ -12764,7 +14027,7 @@ function IconThemeSystem({
|
|
|
12764
14027
|
opacity: 0.67
|
|
12765
14028
|
}
|
|
12766
14029
|
),
|
|
12767
|
-
/* @__PURE__ */ (0,
|
|
14030
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12768
14031
|
"rect",
|
|
12769
14032
|
{
|
|
12770
14033
|
x: 33.36,
|
|
@@ -12777,7 +14040,7 @@ function IconThemeSystem({
|
|
|
12777
14040
|
stroke: "none"
|
|
12778
14041
|
}
|
|
12779
14042
|
),
|
|
12780
|
-
/* @__PURE__ */ (0,
|
|
14043
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12781
14044
|
"rect",
|
|
12782
14045
|
{
|
|
12783
14046
|
x: 29.64,
|
|
@@ -12790,7 +14053,7 @@ function IconThemeSystem({
|
|
|
12790
14053
|
stroke: "none"
|
|
12791
14054
|
}
|
|
12792
14055
|
),
|
|
12793
|
-
/* @__PURE__ */ (0,
|
|
14056
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12794
14057
|
"rect",
|
|
12795
14058
|
{
|
|
12796
14059
|
x: 37.16,
|
|
@@ -12803,7 +14066,7 @@ function IconThemeSystem({
|
|
|
12803
14066
|
stroke: "none"
|
|
12804
14067
|
}
|
|
12805
14068
|
),
|
|
12806
|
-
/* @__PURE__ */ (0,
|
|
14069
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12807
14070
|
"rect",
|
|
12808
14071
|
{
|
|
12809
14072
|
x: 41.19,
|
|
@@ -12816,9 +14079,9 @@ function IconThemeSystem({
|
|
|
12816
14079
|
stroke: "none"
|
|
12817
14080
|
}
|
|
12818
14081
|
),
|
|
12819
|
-
/* @__PURE__ */ (0,
|
|
12820
|
-
/* @__PURE__ */ (0,
|
|
12821
|
-
/* @__PURE__ */ (0,
|
|
14082
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("g", { children: [
|
|
14083
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, opacity: 0.25 }),
|
|
14084
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12822
14085
|
"path",
|
|
12823
14086
|
{
|
|
12824
14087
|
d: "M62.74 16.32l4.1-6.87c1.19.71 2.18 1.72 2.86 2.92s1.04 2.57 1.04 3.95h-8z",
|
|
@@ -12826,7 +14089,7 @@ function IconThemeSystem({
|
|
|
12826
14089
|
}
|
|
12827
14090
|
)
|
|
12828
14091
|
] }),
|
|
12829
|
-
/* @__PURE__ */ (0,
|
|
14092
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12830
14093
|
"rect",
|
|
12831
14094
|
{
|
|
12832
14095
|
x: 29.64,
|
|
@@ -12847,7 +14110,7 @@ function IconThemeSystem({
|
|
|
12847
14110
|
}
|
|
12848
14111
|
|
|
12849
14112
|
// src/components/config-drawer.tsx
|
|
12850
|
-
var
|
|
14113
|
+
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
12851
14114
|
function ConfigDrawer({
|
|
12852
14115
|
trigger
|
|
12853
14116
|
}) {
|
|
@@ -12857,27 +14120,27 @@ function ConfigDrawer({
|
|
|
12857
14120
|
resetTheme();
|
|
12858
14121
|
resetColorTheme();
|
|
12859
14122
|
};
|
|
12860
|
-
return /* @__PURE__ */ (0,
|
|
12861
|
-
/* @__PURE__ */ (0,
|
|
14123
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Sheet, { children: [
|
|
14124
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(SheetTrigger, { asChild: true, children: trigger ?? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12862
14125
|
Button,
|
|
12863
14126
|
{
|
|
12864
14127
|
size: "icon",
|
|
12865
14128
|
variant: "ghost",
|
|
12866
14129
|
"aria-label": "Open theme settings",
|
|
12867
14130
|
className: "rounded-full",
|
|
12868
|
-
children: /* @__PURE__ */ (0,
|
|
14131
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react60.Settings, { "aria-hidden": "true" })
|
|
12869
14132
|
}
|
|
12870
14133
|
) }),
|
|
12871
|
-
/* @__PURE__ */ (0,
|
|
12872
|
-
/* @__PURE__ */ (0,
|
|
12873
|
-
/* @__PURE__ */ (0,
|
|
12874
|
-
/* @__PURE__ */ (0,
|
|
14134
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(SheetContent, { className: "flex flex-col", children: [
|
|
14135
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(SheetHeader, { className: "pb-0 text-start", children: [
|
|
14136
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(SheetTitle, { children: "Theme Settings" }),
|
|
14137
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(SheetDescription, { children: "Customize the look and feel of your dashboard." })
|
|
12875
14138
|
] }),
|
|
12876
|
-
/* @__PURE__ */ (0,
|
|
12877
|
-
/* @__PURE__ */ (0,
|
|
12878
|
-
/* @__PURE__ */ (0,
|
|
14139
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: "flex flex-1 flex-col gap-6 overflow-hidden px-4", children: [
|
|
14140
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(ThemeConfig, {}),
|
|
14141
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(ThemeListSelector, {})
|
|
12879
14142
|
] }),
|
|
12880
|
-
/* @__PURE__ */ (0,
|
|
14143
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(SheetFooter, { className: "gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12881
14144
|
Button,
|
|
12882
14145
|
{
|
|
12883
14146
|
variant: "destructive",
|
|
@@ -12895,7 +14158,7 @@ function SectionTitle({
|
|
|
12895
14158
|
resetAriaLabel,
|
|
12896
14159
|
className
|
|
12897
14160
|
}) {
|
|
12898
|
-
return /* @__PURE__ */ (0,
|
|
14161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
12899
14162
|
"div",
|
|
12900
14163
|
{
|
|
12901
14164
|
className: cn(
|
|
@@ -12904,7 +14167,7 @@ function SectionTitle({
|
|
|
12904
14167
|
),
|
|
12905
14168
|
children: [
|
|
12906
14169
|
title,
|
|
12907
|
-
showReset && onReset && /* @__PURE__ */ (0,
|
|
14170
|
+
showReset && onReset && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12908
14171
|
Button,
|
|
12909
14172
|
{
|
|
12910
14173
|
type: "button",
|
|
@@ -12913,7 +14176,7 @@ function SectionTitle({
|
|
|
12913
14176
|
className: "size-4 rounded-full",
|
|
12914
14177
|
onClick: onReset,
|
|
12915
14178
|
"aria-label": resetAriaLabel,
|
|
12916
|
-
children: /* @__PURE__ */ (0,
|
|
14179
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react60.RotateCcw, { className: "size-3" })
|
|
12917
14180
|
}
|
|
12918
14181
|
)
|
|
12919
14182
|
]
|
|
@@ -12924,7 +14187,7 @@ function RadioGroupItem2({
|
|
|
12924
14187
|
item,
|
|
12925
14188
|
isTheme = false
|
|
12926
14189
|
}) {
|
|
12927
|
-
return /* @__PURE__ */ (0,
|
|
14190
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
12928
14191
|
import_react_radio_group.Item,
|
|
12929
14192
|
{
|
|
12930
14193
|
value: item.value,
|
|
@@ -12932,7 +14195,7 @@ function RadioGroupItem2({
|
|
|
12932
14195
|
"aria-label": `Select ${item.label.toLowerCase()}`,
|
|
12933
14196
|
"aria-describedby": `${item.value}-description`,
|
|
12934
14197
|
children: [
|
|
12935
|
-
/* @__PURE__ */ (0,
|
|
14198
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
12936
14199
|
"div",
|
|
12937
14200
|
{
|
|
12938
14201
|
className: cn(
|
|
@@ -12944,8 +14207,8 @@ function RadioGroupItem2({
|
|
|
12944
14207
|
"aria-hidden": "false",
|
|
12945
14208
|
"aria-label": `${item.label} option preview`,
|
|
12946
14209
|
children: [
|
|
12947
|
-
/* @__PURE__ */ (0,
|
|
12948
|
-
|
|
14210
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
14211
|
+
import_lucide_react60.CircleCheck,
|
|
12949
14212
|
{
|
|
12950
14213
|
className: cn(
|
|
12951
14214
|
"size-6 fill-primary stroke-white",
|
|
@@ -12955,7 +14218,7 @@ function RadioGroupItem2({
|
|
|
12955
14218
|
"aria-hidden": "true"
|
|
12956
14219
|
}
|
|
12957
14220
|
),
|
|
12958
|
-
/* @__PURE__ */ (0,
|
|
14221
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12959
14222
|
item.icon,
|
|
12960
14223
|
{
|
|
12961
14224
|
className: cn(
|
|
@@ -12967,7 +14230,7 @@ function RadioGroupItem2({
|
|
|
12967
14230
|
]
|
|
12968
14231
|
}
|
|
12969
14232
|
),
|
|
12970
|
-
/* @__PURE__ */ (0,
|
|
14233
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12971
14234
|
"div",
|
|
12972
14235
|
{
|
|
12973
14236
|
className: "mt-1 text-xs",
|
|
@@ -12982,8 +14245,8 @@ function RadioGroupItem2({
|
|
|
12982
14245
|
}
|
|
12983
14246
|
function ThemeConfig() {
|
|
12984
14247
|
const { defaultTheme, theme, setTheme } = useTheme2();
|
|
12985
|
-
return /* @__PURE__ */ (0,
|
|
12986
|
-
/* @__PURE__ */ (0,
|
|
14248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { children: [
|
|
14249
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12987
14250
|
SectionTitle,
|
|
12988
14251
|
{
|
|
12989
14252
|
title: "Theme",
|
|
@@ -12992,7 +14255,7 @@ function ThemeConfig() {
|
|
|
12992
14255
|
resetAriaLabel: "Reset theme preference to default"
|
|
12993
14256
|
}
|
|
12994
14257
|
),
|
|
12995
|
-
/* @__PURE__ */ (0,
|
|
14258
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12996
14259
|
import_react_radio_group.Root,
|
|
12997
14260
|
{
|
|
12998
14261
|
value: theme,
|
|
@@ -13016,20 +14279,20 @@ function ThemeConfig() {
|
|
|
13016
14279
|
label: "Dark",
|
|
13017
14280
|
icon: IconThemeDark
|
|
13018
14281
|
}
|
|
13019
|
-
].map((item) => /* @__PURE__ */ (0,
|
|
14282
|
+
].map((item) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(RadioGroupItem2, { item, isTheme: true }, item.value))
|
|
13020
14283
|
}
|
|
13021
14284
|
),
|
|
13022
|
-
/* @__PURE__ */ (0,
|
|
14285
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { id: "theme-description", className: "sr-only", children: "Choose between system preference, light mode, or dark mode" })
|
|
13023
14286
|
] });
|
|
13024
14287
|
}
|
|
13025
14288
|
function ThemeListSelector() {
|
|
13026
|
-
const [search, setSearch] = (0,
|
|
14289
|
+
const [search, setSearch] = (0, import_react23.useState)("");
|
|
13027
14290
|
const { colorTheme, setColorTheme } = useColorTheme();
|
|
13028
14291
|
const filtered = colorThemes.filter(
|
|
13029
14292
|
(t) => t.label.toLowerCase().includes(search.toLowerCase())
|
|
13030
14293
|
);
|
|
13031
|
-
return /* @__PURE__ */ (0,
|
|
13032
|
-
/* @__PURE__ */ (0,
|
|
14294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: "flex min-h-0 flex-1 flex-col", children: [
|
|
14295
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
13033
14296
|
SectionTitle,
|
|
13034
14297
|
{
|
|
13035
14298
|
title: "Color Theme",
|
|
@@ -13038,9 +14301,9 @@ function ThemeListSelector() {
|
|
|
13038
14301
|
resetAriaLabel: "Reset color theme to default"
|
|
13039
14302
|
}
|
|
13040
14303
|
),
|
|
13041
|
-
/* @__PURE__ */ (0,
|
|
13042
|
-
/* @__PURE__ */ (0,
|
|
13043
|
-
/* @__PURE__ */ (0,
|
|
14304
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: "relative mb-2.5", children: [
|
|
14305
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react60.Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
|
|
14306
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
13044
14307
|
"input",
|
|
13045
14308
|
{
|
|
13046
14309
|
type: "text",
|
|
@@ -13056,21 +14319,21 @@ function ThemeListSelector() {
|
|
|
13056
14319
|
}
|
|
13057
14320
|
)
|
|
13058
14321
|
] }),
|
|
13059
|
-
/* @__PURE__ */ (0,
|
|
14322
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("p", { className: "mb-2 text-xs text-muted-foreground font-medium", children: [
|
|
13060
14323
|
filtered.length,
|
|
13061
14324
|
" theme",
|
|
13062
14325
|
filtered.length !== 1 ? "s" : "",
|
|
13063
14326
|
" available"
|
|
13064
14327
|
] }),
|
|
13065
|
-
/* @__PURE__ */ (0,
|
|
14328
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
13066
14329
|
"div",
|
|
13067
14330
|
{
|
|
13068
14331
|
className: "flex-1 space-y-1 overflow-y-auto rounded-lg pr-1",
|
|
13069
14332
|
role: "radiogroup",
|
|
13070
14333
|
"aria-label": "Select color theme",
|
|
13071
14334
|
children: [
|
|
13072
|
-
filtered.length === 0 && /* @__PURE__ */ (0,
|
|
13073
|
-
filtered.map((ct) => /* @__PURE__ */ (0,
|
|
14335
|
+
filtered.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("p", { className: "py-8 text-center text-sm text-muted-foreground", children: "No themes found" }),
|
|
14336
|
+
filtered.map((ct) => /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
13074
14337
|
"button",
|
|
13075
14338
|
{
|
|
13076
14339
|
onClick: () => setColorTheme(ct.name),
|
|
@@ -13082,7 +14345,7 @@ function ThemeListSelector() {
|
|
|
13082
14345
|
colorTheme === ct.name ? "bg-primary text-primary-foreground shadow-md" : "hover:bg-accent/80 hover:text-foreground border border-transparent hover:border-border/40"
|
|
13083
14346
|
),
|
|
13084
14347
|
children: [
|
|
13085
|
-
/* @__PURE__ */ (0,
|
|
14348
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "flex gap-1.5 shrink-0", children: ct.colors.map((color, i) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
13086
14349
|
"span",
|
|
13087
14350
|
{
|
|
13088
14351
|
className: cn(
|
|
@@ -13093,9 +14356,9 @@ function ThemeListSelector() {
|
|
|
13093
14356
|
},
|
|
13094
14357
|
i
|
|
13095
14358
|
)) }),
|
|
13096
|
-
/* @__PURE__ */ (0,
|
|
13097
|
-
/* @__PURE__ */ (0,
|
|
13098
|
-
ct.category === "tweakcn" && /* @__PURE__ */ (0,
|
|
14359
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: "flex items-center gap-1.5 truncate", children: [
|
|
14360
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("span", { className: "text-sm font-medium truncate", children: ct.label }),
|
|
14361
|
+
ct.category === "tweakcn" && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
13099
14362
|
"span",
|
|
13100
14363
|
{
|
|
13101
14364
|
className: cn(
|
|
@@ -13105,7 +14368,7 @@ function ThemeListSelector() {
|
|
|
13105
14368
|
}
|
|
13106
14369
|
)
|
|
13107
14370
|
] }),
|
|
13108
|
-
colorTheme === ct.name && /* @__PURE__ */ (0,
|
|
14371
|
+
colorTheme === ct.name && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react60.Check, { className: "ml-auto size-4 shrink-0", strokeWidth: 3 })
|
|
13109
14372
|
]
|
|
13110
14373
|
},
|
|
13111
14374
|
ct.name
|
|
@@ -13117,7 +14380,7 @@ function ThemeListSelector() {
|
|
|
13117
14380
|
}
|
|
13118
14381
|
|
|
13119
14382
|
// src/design-system/templates/nav-user.tsx
|
|
13120
|
-
var
|
|
14383
|
+
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
13121
14384
|
function NavUser({ user: fallbackUser }) {
|
|
13122
14385
|
const { isMobile } = useSidebar();
|
|
13123
14386
|
const [open, setOpen] = useDialogState();
|
|
@@ -13126,28 +14389,28 @@ function NavUser({ user: fallbackUser }) {
|
|
|
13126
14389
|
const userEmail = auth.user?.email || fallbackUser.email;
|
|
13127
14390
|
const userAvatar = auth.user?.picture || fallbackUser.avatar;
|
|
13128
14391
|
const userInitials = userName.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
13129
|
-
return /* @__PURE__ */ (0,
|
|
13130
|
-
/* @__PURE__ */ (0,
|
|
13131
|
-
/* @__PURE__ */ (0,
|
|
14392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_jsx_runtime116.Fragment, { children: [
|
|
14393
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenu, { modal: false, children: [
|
|
14394
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
13132
14395
|
SidebarMenuButton,
|
|
13133
14396
|
{
|
|
13134
14397
|
size: "lg",
|
|
13135
14398
|
tooltip: userName,
|
|
13136
14399
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
13137
14400
|
children: [
|
|
13138
|
-
/* @__PURE__ */ (0,
|
|
13139
|
-
/* @__PURE__ */ (0,
|
|
13140
|
-
/* @__PURE__ */ (0,
|
|
14401
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
14402
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
14403
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13141
14404
|
] }),
|
|
13142
|
-
/* @__PURE__ */ (0,
|
|
13143
|
-
/* @__PURE__ */ (0,
|
|
13144
|
-
/* @__PURE__ */ (0,
|
|
14405
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14406
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
14407
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13145
14408
|
] }),
|
|
13146
|
-
/* @__PURE__ */ (0,
|
|
14409
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.ChevronsUpDown, { className: "ml-auto size-4 shrink-0" })
|
|
13147
14410
|
]
|
|
13148
14411
|
}
|
|
13149
14412
|
) }),
|
|
13150
|
-
/* @__PURE__ */ (0,
|
|
14413
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
13151
14414
|
DropdownMenuContent,
|
|
13152
14415
|
{
|
|
13153
14416
|
className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg",
|
|
@@ -13155,43 +14418,43 @@ function NavUser({ user: fallbackUser }) {
|
|
|
13155
14418
|
align: "end",
|
|
13156
14419
|
sideOffset: 4,
|
|
13157
14420
|
children: [
|
|
13158
|
-
/* @__PURE__ */ (0,
|
|
13159
|
-
/* @__PURE__ */ (0,
|
|
13160
|
-
/* @__PURE__ */ (0,
|
|
13161
|
-
/* @__PURE__ */ (0,
|
|
14421
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex items-center gap-2 px-1 py-1.5 text-start text-sm", children: [
|
|
14422
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
14423
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
14424
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13162
14425
|
] }),
|
|
13163
|
-
/* @__PURE__ */ (0,
|
|
13164
|
-
/* @__PURE__ */ (0,
|
|
13165
|
-
/* @__PURE__ */ (0,
|
|
14426
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14427
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
14428
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13166
14429
|
] })
|
|
13167
14430
|
] }) }),
|
|
13168
|
-
/* @__PURE__ */ (0,
|
|
13169
|
-
/* @__PURE__ */ (0,
|
|
14431
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuSeparator, {}),
|
|
14432
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13170
14433
|
ConfigDrawer,
|
|
13171
14434
|
{
|
|
13172
|
-
trigger: /* @__PURE__ */ (0,
|
|
13173
|
-
/* @__PURE__ */ (0,
|
|
14435
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
|
|
14436
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Palette, { className: "mr-2 h-4 w-4" }),
|
|
13174
14437
|
"Theme"
|
|
13175
14438
|
] })
|
|
13176
14439
|
}
|
|
13177
14440
|
),
|
|
13178
|
-
/* @__PURE__ */ (0,
|
|
14441
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13179
14442
|
ConfigDrawer,
|
|
13180
14443
|
{
|
|
13181
|
-
trigger: /* @__PURE__ */ (0,
|
|
13182
|
-
/* @__PURE__ */ (0,
|
|
14444
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
|
|
14445
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Settings, { className: "mr-2 h-4 w-4" }),
|
|
13183
14446
|
"Setting"
|
|
13184
14447
|
] })
|
|
13185
14448
|
}
|
|
13186
14449
|
),
|
|
13187
|
-
/* @__PURE__ */ (0,
|
|
13188
|
-
/* @__PURE__ */ (0,
|
|
14450
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuSeparator, {}),
|
|
14451
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
13189
14452
|
DropdownMenuItem,
|
|
13190
14453
|
{
|
|
13191
14454
|
variant: "destructive",
|
|
13192
14455
|
onClick: () => setOpen(true),
|
|
13193
14456
|
children: [
|
|
13194
|
-
/* @__PURE__ */ (0,
|
|
14457
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.LogOut, { className: "mr-2 h-4 w-4" }),
|
|
13195
14458
|
"Sign out"
|
|
13196
14459
|
]
|
|
13197
14460
|
}
|
|
@@ -13200,19 +14463,19 @@ function NavUser({ user: fallbackUser }) {
|
|
|
13200
14463
|
}
|
|
13201
14464
|
)
|
|
13202
14465
|
] }) }) }),
|
|
13203
|
-
/* @__PURE__ */ (0,
|
|
14466
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SignOutDialog, { open: !!open, onOpenChange: setOpen })
|
|
13204
14467
|
] });
|
|
13205
14468
|
}
|
|
13206
14469
|
|
|
13207
14470
|
// src/design-system/templates/app-sidebar.tsx
|
|
13208
|
-
var
|
|
14471
|
+
var import_jsx_runtime117 = require("react/jsx-runtime");
|
|
13209
14472
|
function AppSidebar() {
|
|
13210
14473
|
const { collapsible } = useLayout();
|
|
13211
|
-
return /* @__PURE__ */ (0,
|
|
13212
|
-
/* @__PURE__ */ (0,
|
|
13213
|
-
/* @__PURE__ */ (0,
|
|
13214
|
-
/* @__PURE__ */ (0,
|
|
13215
|
-
/* @__PURE__ */ (0,
|
|
14474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(Sidebar, { collapsible, variant: "sidebar", children: [
|
|
14475
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(SidebarHeader, { className: "p-2 pb-1", children: [
|
|
14476
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex items-center justify-between gap-1", children: [
|
|
14477
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TeamSwitcher, { teams: sidebarData2.teams }) }),
|
|
14478
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "group-data-[collapsible=icon]:hidden shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
13216
14479
|
SidebarTrigger,
|
|
13217
14480
|
{
|
|
13218
14481
|
variant: "ghost",
|
|
@@ -13221,7 +14484,7 @@ function AppSidebar() {
|
|
|
13221
14484
|
}
|
|
13222
14485
|
) })
|
|
13223
14486
|
] }),
|
|
13224
|
-
/* @__PURE__ */ (0,
|
|
14487
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "hidden group-data-[collapsible=icon]:flex justify-center pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
13225
14488
|
SidebarTrigger,
|
|
13226
14489
|
{
|
|
13227
14490
|
variant: "ghost",
|
|
@@ -13230,37 +14493,37 @@ function AppSidebar() {
|
|
|
13230
14493
|
}
|
|
13231
14494
|
) })
|
|
13232
14495
|
] }),
|
|
13233
|
-
/* @__PURE__ */ (0,
|
|
13234
|
-
/* @__PURE__ */ (0,
|
|
14496
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SidebarContent, { children: sidebarData2.navGroups.map((props) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(NavGroup, { ...props }, props.title)) }),
|
|
14497
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(NavUser, { user: sidebarData2.user }) })
|
|
13235
14498
|
] });
|
|
13236
14499
|
}
|
|
13237
14500
|
|
|
13238
14501
|
// src/design-system/templates/app-title.tsx
|
|
13239
14502
|
var import_link2 = __toESM(require("next/link"));
|
|
13240
|
-
var
|
|
13241
|
-
var
|
|
14503
|
+
var import_lucide_react62 = require("lucide-react");
|
|
14504
|
+
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
13242
14505
|
function AppTitle() {
|
|
13243
14506
|
const { setOpenMobile } = useSidebar();
|
|
13244
|
-
return /* @__PURE__ */ (0,
|
|
14507
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
13245
14508
|
SidebarMenuButton,
|
|
13246
14509
|
{
|
|
13247
14510
|
size: "lg",
|
|
13248
14511
|
className: "gap-0 py-0 hover:bg-transparent active:bg-transparent",
|
|
13249
14512
|
asChild: true,
|
|
13250
|
-
children: /* @__PURE__ */ (0,
|
|
13251
|
-
/* @__PURE__ */ (0,
|
|
14513
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { children: [
|
|
14514
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
|
|
13252
14515
|
import_link2.default,
|
|
13253
14516
|
{
|
|
13254
14517
|
href: "/",
|
|
13255
14518
|
onClick: () => setOpenMobile(false),
|
|
13256
14519
|
className: "grid flex-1 text-start text-sm leading-tight",
|
|
13257
14520
|
children: [
|
|
13258
|
-
/* @__PURE__ */ (0,
|
|
13259
|
-
/* @__PURE__ */ (0,
|
|
14521
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "truncate font-bold", children: "Shadcn-Admin" }),
|
|
14522
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "truncate text-xs", children: "Vite + ShadcnUI" })
|
|
13260
14523
|
]
|
|
13261
14524
|
}
|
|
13262
14525
|
),
|
|
13263
|
-
/* @__PURE__ */ (0,
|
|
14526
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(ToggleSidebar, {})
|
|
13264
14527
|
] })
|
|
13265
14528
|
}
|
|
13266
14529
|
) }) });
|
|
@@ -13271,7 +14534,7 @@ function ToggleSidebar({
|
|
|
13271
14534
|
...props
|
|
13272
14535
|
}) {
|
|
13273
14536
|
const { toggleSidebar } = useSidebar();
|
|
13274
|
-
return /* @__PURE__ */ (0,
|
|
14537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
|
|
13275
14538
|
Button,
|
|
13276
14539
|
{
|
|
13277
14540
|
"data-sidebar": "trigger",
|
|
@@ -13285,31 +14548,31 @@ function ToggleSidebar({
|
|
|
13285
14548
|
},
|
|
13286
14549
|
...props,
|
|
13287
14550
|
children: [
|
|
13288
|
-
/* @__PURE__ */ (0,
|
|
13289
|
-
/* @__PURE__ */ (0,
|
|
13290
|
-
/* @__PURE__ */ (0,
|
|
14551
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react62.X, { className: "md:hidden" }),
|
|
14552
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react62.Menu, { className: "max-md:hidden" }),
|
|
14553
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
13291
14554
|
]
|
|
13292
14555
|
}
|
|
13293
14556
|
);
|
|
13294
14557
|
}
|
|
13295
14558
|
|
|
13296
14559
|
// src/design-system/templates/authenticated-layout.tsx
|
|
13297
|
-
var
|
|
14560
|
+
var import_react25 = require("react");
|
|
13298
14561
|
var import_navigation6 = require("next/navigation");
|
|
13299
14562
|
|
|
13300
14563
|
// src/components/layout/app-sidebar.tsx
|
|
13301
|
-
var
|
|
14564
|
+
var import_react24 = require("react");
|
|
13302
14565
|
|
|
13303
14566
|
// src/components/layout/nav-group.tsx
|
|
13304
14567
|
var import_link3 = __toESM(require("next/link"));
|
|
13305
14568
|
var import_navigation4 = require("next/navigation");
|
|
13306
|
-
var
|
|
13307
|
-
var
|
|
14569
|
+
var import_lucide_react63 = require("lucide-react");
|
|
14570
|
+
var import_jsx_runtime119 = require("react/jsx-runtime");
|
|
13308
14571
|
function NavGroup2({ title, items }) {
|
|
13309
14572
|
const { state, isMobile, openMobile, setOpenMobile } = useSidebar();
|
|
13310
14573
|
const href = (0, import_navigation4.usePathname)();
|
|
13311
|
-
return /* @__PURE__ */ (0,
|
|
13312
|
-
/* @__PURE__ */ (0,
|
|
14574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(SidebarGroup, { className: cn(title === "Menu" && "pt-0"), children: [
|
|
14575
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13313
14576
|
SidebarGroupLabel,
|
|
13314
14577
|
{
|
|
13315
14578
|
className: cn(
|
|
@@ -13317,8 +14580,8 @@ function NavGroup2({ title, items }) {
|
|
|
13317
14580
|
title === "Menu" && state !== "collapsed" && "sticky top-0 z-20 bg-sidebar py-1.5"
|
|
13318
14581
|
),
|
|
13319
14582
|
children: [
|
|
13320
|
-
/* @__PURE__ */ (0,
|
|
13321
|
-
title === "Menu" && !isMobile && /* @__PURE__ */ (0,
|
|
14583
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { children: title }),
|
|
14584
|
+
title === "Menu" && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
13322
14585
|
SidebarTrigger,
|
|
13323
14586
|
{
|
|
13324
14587
|
variant: "ghost",
|
|
@@ -13326,7 +14589,7 @@ function NavGroup2({ title, items }) {
|
|
|
13326
14589
|
"aria-label": "Toggle sidebar"
|
|
13327
14590
|
}
|
|
13328
14591
|
),
|
|
13329
|
-
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0,
|
|
14592
|
+
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
13330
14593
|
Button,
|
|
13331
14594
|
{
|
|
13332
14595
|
type: "button",
|
|
@@ -13335,37 +14598,37 @@ function NavGroup2({ title, items }) {
|
|
|
13335
14598
|
className: "size-6 shrink-0",
|
|
13336
14599
|
"aria-label": "Close sidebar",
|
|
13337
14600
|
onClick: () => setOpenMobile(false),
|
|
13338
|
-
children: /* @__PURE__ */ (0,
|
|
14601
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react63.X, { className: "size-4", "aria-hidden": "true" })
|
|
13339
14602
|
}
|
|
13340
14603
|
)
|
|
13341
14604
|
]
|
|
13342
14605
|
}
|
|
13343
14606
|
),
|
|
13344
|
-
/* @__PURE__ */ (0,
|
|
14607
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenu, { children: items.map((item) => {
|
|
13345
14608
|
const key = `${item.title}-${item.url}`;
|
|
13346
14609
|
if (!item.items)
|
|
13347
|
-
return /* @__PURE__ */ (0,
|
|
14610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuLink2, { item, href }, key);
|
|
13348
14611
|
if (item.title === "Settings" && item.items.length === 0)
|
|
13349
|
-
return /* @__PURE__ */ (0,
|
|
14612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuSettings2, { item }, key);
|
|
13350
14613
|
if (state === "collapsed" && !isMobile)
|
|
13351
|
-
return /* @__PURE__ */ (0,
|
|
13352
|
-
return /* @__PURE__ */ (0,
|
|
14614
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuCollapsedDropdown2, { item, href }, key);
|
|
14615
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuCollapsible2, { item, href }, key);
|
|
13353
14616
|
}) })
|
|
13354
14617
|
] });
|
|
13355
14618
|
}
|
|
13356
14619
|
function NavBadge2({ children }) {
|
|
13357
|
-
return /* @__PURE__ */ (0,
|
|
14620
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Badge, { className: "rounded-full px-1 py-0 text-xs", children });
|
|
13358
14621
|
}
|
|
13359
14622
|
function SidebarMenuLink2({ item, href }) {
|
|
13360
14623
|
const { setOpenMobile } = useSidebar();
|
|
13361
14624
|
const { setShowInlineNotFound } = useLayout();
|
|
13362
|
-
return /* @__PURE__ */ (0,
|
|
14625
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
13363
14626
|
SidebarMenuButton,
|
|
13364
14627
|
{
|
|
13365
14628
|
asChild: true,
|
|
13366
14629
|
isActive: checkIsActive2(href, item),
|
|
13367
14630
|
tooltip: item.title,
|
|
13368
|
-
children: /* @__PURE__ */ (0,
|
|
14631
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13369
14632
|
import_link3.default,
|
|
13370
14633
|
{
|
|
13371
14634
|
href: item.url,
|
|
@@ -13374,9 +14637,9 @@ function SidebarMenuLink2({ item, href }) {
|
|
|
13374
14637
|
setOpenMobile(false);
|
|
13375
14638
|
},
|
|
13376
14639
|
children: [
|
|
13377
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13378
|
-
/* @__PURE__ */ (0,
|
|
13379
|
-
item.badge && /* @__PURE__ */ (0,
|
|
14640
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(item.icon, {}),
|
|
14641
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { children: item.title }),
|
|
14642
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(NavBadge2, { children: item.badge })
|
|
13380
14643
|
]
|
|
13381
14644
|
}
|
|
13382
14645
|
)
|
|
@@ -13386,7 +14649,7 @@ function SidebarMenuLink2({ item, href }) {
|
|
|
13386
14649
|
function SidebarMenuSettings2({ item }) {
|
|
13387
14650
|
const { setOpenMobile } = useSidebar();
|
|
13388
14651
|
const { showInlineNotFound, setShowInlineNotFound } = useLayout();
|
|
13389
|
-
return /* @__PURE__ */ (0,
|
|
14652
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13390
14653
|
SidebarMenuButton,
|
|
13391
14654
|
{
|
|
13392
14655
|
tooltip: item.title,
|
|
@@ -13396,8 +14659,8 @@ function SidebarMenuSettings2({ item }) {
|
|
|
13396
14659
|
setOpenMobile(false);
|
|
13397
14660
|
},
|
|
13398
14661
|
children: [
|
|
13399
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13400
|
-
/* @__PURE__ */ (0,
|
|
14662
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(item.icon, {}),
|
|
14663
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { children: item.title })
|
|
13401
14664
|
]
|
|
13402
14665
|
}
|
|
13403
14666
|
) });
|
|
@@ -13408,25 +14671,25 @@ function SidebarMenuCollapsible2({
|
|
|
13408
14671
|
}) {
|
|
13409
14672
|
const { setOpenMobile } = useSidebar();
|
|
13410
14673
|
const { setShowInlineNotFound } = useLayout();
|
|
13411
|
-
return /* @__PURE__ */ (0,
|
|
14674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
13412
14675
|
Collapsible,
|
|
13413
14676
|
{
|
|
13414
14677
|
asChild: true,
|
|
13415
14678
|
defaultOpen: checkIsActive2(href, item, true),
|
|
13416
14679
|
className: "group/collapsible",
|
|
13417
|
-
children: /* @__PURE__ */ (0,
|
|
13418
|
-
/* @__PURE__ */ (0,
|
|
13419
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13420
|
-
/* @__PURE__ */ (0,
|
|
13421
|
-
item.badge && /* @__PURE__ */ (0,
|
|
13422
|
-
/* @__PURE__ */ (0,
|
|
14680
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(SidebarMenuItem, { children: [
|
|
14681
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(SidebarMenuButton, { tooltip: item.title, children: [
|
|
14682
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(item.icon, {}),
|
|
14683
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { children: item.title }),
|
|
14684
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(NavBadge2, { children: item.badge }),
|
|
14685
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react63.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180" })
|
|
13423
14686
|
] }) }),
|
|
13424
|
-
/* @__PURE__ */ (0,
|
|
14687
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(CollapsibleContent, { className: "CollapsibleContent", children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuSubItem, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
13425
14688
|
SidebarMenuSubButton,
|
|
13426
14689
|
{
|
|
13427
14690
|
asChild: true,
|
|
13428
14691
|
isActive: checkIsActive2(href, subItem),
|
|
13429
|
-
children: /* @__PURE__ */ (0,
|
|
14692
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13430
14693
|
import_link3.default,
|
|
13431
14694
|
{
|
|
13432
14695
|
href: subItem.url,
|
|
@@ -13435,9 +14698,9 @@ function SidebarMenuCollapsible2({
|
|
|
13435
14698
|
setOpenMobile(false);
|
|
13436
14699
|
},
|
|
13437
14700
|
children: [
|
|
13438
|
-
subItem.icon && /* @__PURE__ */ (0,
|
|
13439
|
-
/* @__PURE__ */ (0,
|
|
13440
|
-
subItem.badge && /* @__PURE__ */ (0,
|
|
14701
|
+
subItem.icon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(subItem.icon, {}),
|
|
14702
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { children: subItem.title }),
|
|
14703
|
+
subItem.badge && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(NavBadge2, { children: subItem.badge })
|
|
13441
14704
|
]
|
|
13442
14705
|
}
|
|
13443
14706
|
)
|
|
@@ -13451,36 +14714,36 @@ function SidebarMenuCollapsedDropdown2({
|
|
|
13451
14714
|
item,
|
|
13452
14715
|
href
|
|
13453
14716
|
}) {
|
|
13454
|
-
return /* @__PURE__ */ (0,
|
|
13455
|
-
/* @__PURE__ */ (0,
|
|
14717
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(DropdownMenu, { children: [
|
|
14718
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13456
14719
|
SidebarMenuButton,
|
|
13457
14720
|
{
|
|
13458
14721
|
tooltip: item.title,
|
|
13459
14722
|
isActive: checkIsActive2(href, item),
|
|
13460
14723
|
children: [
|
|
13461
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13462
|
-
/* @__PURE__ */ (0,
|
|
13463
|
-
item.badge && /* @__PURE__ */ (0,
|
|
13464
|
-
/* @__PURE__ */ (0,
|
|
14724
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(item.icon, {}),
|
|
14725
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { children: item.title }),
|
|
14726
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(NavBadge2, { children: item.badge }),
|
|
14727
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react63.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
|
|
13465
14728
|
]
|
|
13466
14729
|
}
|
|
13467
14730
|
) }),
|
|
13468
|
-
/* @__PURE__ */ (0,
|
|
13469
|
-
/* @__PURE__ */ (0,
|
|
14731
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(DropdownMenuContent, { side: "right", align: "start", sideOffset: 4, children: [
|
|
14732
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(DropdownMenuLabel, { children: [
|
|
13470
14733
|
item.title,
|
|
13471
14734
|
" ",
|
|
13472
14735
|
item.badge ? `(${item.badge})` : ""
|
|
13473
14736
|
] }),
|
|
13474
|
-
/* @__PURE__ */ (0,
|
|
13475
|
-
item.items.map((sub) => /* @__PURE__ */ (0,
|
|
14737
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(DropdownMenuSeparator, {}),
|
|
14738
|
+
item.items.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13476
14739
|
import_link3.default,
|
|
13477
14740
|
{
|
|
13478
14741
|
href: sub.url,
|
|
13479
14742
|
className: `${checkIsActive2(href, sub) ? "bg-secondary" : ""}`,
|
|
13480
14743
|
children: [
|
|
13481
|
-
sub.icon && /* @__PURE__ */ (0,
|
|
13482
|
-
/* @__PURE__ */ (0,
|
|
13483
|
-
sub.badge && /* @__PURE__ */ (0,
|
|
14744
|
+
sub.icon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(sub.icon, {}),
|
|
14745
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { className: "max-w-52 text-wrap", children: sub.title }),
|
|
14746
|
+
sub.badge && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { className: "ms-auto text-xs", children: sub.badge })
|
|
13484
14747
|
]
|
|
13485
14748
|
}
|
|
13486
14749
|
) }, `${sub.title}-${sub.url}`))
|
|
@@ -13495,9 +14758,9 @@ function checkIsActive2(href, item, mainNav = false) {
|
|
|
13495
14758
|
}
|
|
13496
14759
|
|
|
13497
14760
|
// src/components/layout/nav-user.tsx
|
|
13498
|
-
var
|
|
14761
|
+
var import_lucide_react64 = require("lucide-react");
|
|
13499
14762
|
var import_link4 = __toESM(require("next/link"));
|
|
13500
|
-
var
|
|
14763
|
+
var import_jsx_runtime120 = require("react/jsx-runtime");
|
|
13501
14764
|
function NavUser2({ user: fallbackUser }) {
|
|
13502
14765
|
const { isMobile } = useSidebar();
|
|
13503
14766
|
const [open, setOpen] = useDialogState();
|
|
@@ -13507,28 +14770,28 @@ function NavUser2({ user: fallbackUser }) {
|
|
|
13507
14770
|
const userEmail = auth.user?.email || fallbackUser.email;
|
|
13508
14771
|
const userAvatar = auth.user?.picture || fallbackUser.avatar;
|
|
13509
14772
|
const userInitials = userName.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
13510
|
-
return /* @__PURE__ */ (0,
|
|
13511
|
-
/* @__PURE__ */ (0,
|
|
13512
|
-
/* @__PURE__ */ (0,
|
|
14773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_jsx_runtime120.Fragment, { children: [
|
|
14774
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenu, { modal: false, children: [
|
|
14775
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13513
14776
|
SidebarMenuButton,
|
|
13514
14777
|
{
|
|
13515
14778
|
size: "lg",
|
|
13516
14779
|
tooltip: userName,
|
|
13517
14780
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
13518
14781
|
children: [
|
|
13519
|
-
/* @__PURE__ */ (0,
|
|
13520
|
-
/* @__PURE__ */ (0,
|
|
13521
|
-
/* @__PURE__ */ (0,
|
|
14782
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
14783
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
14784
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13522
14785
|
] }),
|
|
13523
|
-
/* @__PURE__ */ (0,
|
|
13524
|
-
/* @__PURE__ */ (0,
|
|
13525
|
-
/* @__PURE__ */ (0,
|
|
14786
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14787
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
14788
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13526
14789
|
] }),
|
|
13527
|
-
/* @__PURE__ */ (0,
|
|
14790
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.ChevronsUpDown, { className: "ml-auto size-4 shrink-0" })
|
|
13528
14791
|
]
|
|
13529
14792
|
}
|
|
13530
14793
|
) }),
|
|
13531
|
-
/* @__PURE__ */ (0,
|
|
14794
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13532
14795
|
DropdownMenuContent,
|
|
13533
14796
|
{
|
|
13534
14797
|
className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg",
|
|
@@ -13536,59 +14799,59 @@ function NavUser2({ user: fallbackUser }) {
|
|
|
13536
14799
|
align: "end",
|
|
13537
14800
|
sideOffset: 4,
|
|
13538
14801
|
children: [
|
|
13539
|
-
/* @__PURE__ */ (0,
|
|
13540
|
-
/* @__PURE__ */ (0,
|
|
13541
|
-
/* @__PURE__ */ (0,
|
|
13542
|
-
/* @__PURE__ */ (0,
|
|
14802
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "flex items-center gap-2 px-1 py-1.5 text-start text-sm", children: [
|
|
14803
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
14804
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
14805
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13543
14806
|
] }),
|
|
13544
|
-
/* @__PURE__ */ (0,
|
|
13545
|
-
/* @__PURE__ */ (0,
|
|
13546
|
-
/* @__PURE__ */ (0,
|
|
14807
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14808
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
14809
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13547
14810
|
] })
|
|
13548
14811
|
] }) }),
|
|
13549
|
-
/* @__PURE__ */ (0,
|
|
13550
|
-
/* @__PURE__ */ (0,
|
|
13551
|
-
/* @__PURE__ */ (0,
|
|
14812
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuSeparator, {}),
|
|
14813
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
14814
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.User, { className: "mr-2 h-4 w-4" }),
|
|
13552
14815
|
"My Profile"
|
|
13553
14816
|
] }),
|
|
13554
|
-
/* @__PURE__ */ (0,
|
|
13555
|
-
/* @__PURE__ */ (0,
|
|
14817
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
14818
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.Bell, { className: "mr-2 h-4 w-4" }),
|
|
13556
14819
|
"Notifications"
|
|
13557
14820
|
] }),
|
|
13558
|
-
/* @__PURE__ */ (0,
|
|
13559
|
-
/* @__PURE__ */ (0,
|
|
14821
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
14822
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.MessageCircle, { className: "mr-2 h-4 w-4" }),
|
|
13560
14823
|
"Help & Support"
|
|
13561
14824
|
] }),
|
|
13562
|
-
/* @__PURE__ */ (0,
|
|
13563
|
-
/* @__PURE__ */ (0,
|
|
13564
|
-
/* @__PURE__ */ (0,
|
|
14825
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuSeparator, {}),
|
|
14826
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
14827
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.CreditCard, { className: "mr-2 h-4 w-4" }),
|
|
13565
14828
|
"Subscriptions"
|
|
13566
14829
|
] }),
|
|
13567
|
-
/* @__PURE__ */ (0,
|
|
13568
|
-
/* @__PURE__ */ (0,
|
|
14830
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_link4.default, { href: "/apps", children: [
|
|
14831
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.ShoppingBag, { className: "mr-2 h-4 w-4" }),
|
|
13569
14832
|
"Buy Apps"
|
|
13570
14833
|
] }) }),
|
|
13571
|
-
/* @__PURE__ */ (0,
|
|
14834
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
13572
14835
|
ConfigDrawer,
|
|
13573
14836
|
{
|
|
13574
|
-
trigger: /* @__PURE__ */ (0,
|
|
13575
|
-
/* @__PURE__ */ (0,
|
|
14837
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
|
|
14838
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.Palette, { className: "mr-2 h-4 w-4" }),
|
|
13576
14839
|
"Theme Settings"
|
|
13577
14840
|
] })
|
|
13578
14841
|
}
|
|
13579
14842
|
),
|
|
13580
|
-
/* @__PURE__ */ (0,
|
|
13581
|
-
/* @__PURE__ */ (0,
|
|
14843
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
14844
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.Settings, { className: "mr-2 h-4 w-4" }),
|
|
13582
14845
|
"Settings"
|
|
13583
14846
|
] }),
|
|
13584
|
-
/* @__PURE__ */ (0,
|
|
13585
|
-
/* @__PURE__ */ (0,
|
|
14847
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuSeparator, {}),
|
|
14848
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13586
14849
|
DropdownMenuItem,
|
|
13587
14850
|
{
|
|
13588
14851
|
variant: "destructive",
|
|
13589
14852
|
onClick: () => setOpen(true),
|
|
13590
14853
|
children: [
|
|
13591
|
-
/* @__PURE__ */ (0,
|
|
14854
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.LogOut, { className: "mr-2 h-4 w-4" }),
|
|
13592
14855
|
"Sign out"
|
|
13593
14856
|
]
|
|
13594
14857
|
}
|
|
@@ -13597,12 +14860,12 @@ function NavUser2({ user: fallbackUser }) {
|
|
|
13597
14860
|
}
|
|
13598
14861
|
)
|
|
13599
14862
|
] }) }) }),
|
|
13600
|
-
/* @__PURE__ */ (0,
|
|
14863
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SignOutDialog, { open: !!open, onOpenChange: setOpen })
|
|
13601
14864
|
] });
|
|
13602
14865
|
}
|
|
13603
14866
|
|
|
13604
14867
|
// src/components/layout/app-sidebar.tsx
|
|
13605
|
-
var
|
|
14868
|
+
var import_jsx_runtime121 = (
|
|
13606
14869
|
// Sidebar ko fixed "sidebar" variant par lock kiya gaya hai (floating remove).
|
|
13607
14870
|
require("react/jsx-runtime")
|
|
13608
14871
|
);
|
|
@@ -13610,7 +14873,7 @@ function AppSidebar2() {
|
|
|
13610
14873
|
const { collapsible } = useLayout();
|
|
13611
14874
|
const currentUser = useAuthStore((state) => state.auth.user);
|
|
13612
14875
|
const { unreadCount, fetchNotifications, subscribeToNotifications, unsubscribe } = useNotificationStore();
|
|
13613
|
-
(0,
|
|
14876
|
+
(0, import_react24.useEffect)(() => {
|
|
13614
14877
|
if (currentUser) {
|
|
13615
14878
|
fetchNotifications(currentUser.accountNo);
|
|
13616
14879
|
subscribeToNotifications(currentUser.accountNo);
|
|
@@ -13634,9 +14897,9 @@ function AppSidebar2() {
|
|
|
13634
14897
|
})
|
|
13635
14898
|
}))
|
|
13636
14899
|
};
|
|
13637
|
-
return /* @__PURE__ */ (0,
|
|
13638
|
-
/* @__PURE__ */ (0,
|
|
13639
|
-
/* @__PURE__ */ (0,
|
|
14900
|
+
return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Sidebar, { collapsible, variant: "sidebar", children: [
|
|
14901
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(SidebarHeader, { className: "pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(TeamSwitcher, { teams: dynamicSidebarData.teams }) }),
|
|
14902
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "hidden group-data-[state=collapsed]:flex justify-center py-2", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
|
|
13640
14903
|
SidebarTrigger,
|
|
13641
14904
|
{
|
|
13642
14905
|
variant: "ghost",
|
|
@@ -13644,15 +14907,15 @@ function AppSidebar2() {
|
|
|
13644
14907
|
"aria-label": "Toggle sidebar"
|
|
13645
14908
|
}
|
|
13646
14909
|
) }),
|
|
13647
|
-
/* @__PURE__ */ (0,
|
|
13648
|
-
/* @__PURE__ */ (0,
|
|
14910
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(SidebarContent, { children: dynamicSidebarData.navGroups.map((props) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(NavGroup2, { ...props }, props.title)) }),
|
|
14911
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(NavUser2, { user: dynamicSidebarData.user }) })
|
|
13649
14912
|
] });
|
|
13650
14913
|
}
|
|
13651
14914
|
|
|
13652
14915
|
// src/components/skip-to-main.tsx
|
|
13653
|
-
var
|
|
14916
|
+
var import_jsx_runtime122 = require("react/jsx-runtime");
|
|
13654
14917
|
function SkipToMain() {
|
|
13655
|
-
return /* @__PURE__ */ (0,
|
|
14918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
|
|
13656
14919
|
"a",
|
|
13657
14920
|
{
|
|
13658
14921
|
className: `fixed inset-s-44 z-999 -translate-y-52 bg-primary px-4 py-2 text-sm font-medium whitespace-nowrap text-primary-foreground opacity-95 shadow-sm transition hover:bg-primary/90 focus:translate-y-3 focus:transform focus-visible:ring-1 focus-visible:ring-ring`,
|
|
@@ -13664,7 +14927,7 @@ function SkipToMain() {
|
|
|
13664
14927
|
|
|
13665
14928
|
// src/features/errors/not-found-error.tsx
|
|
13666
14929
|
var import_navigation5 = require("next/navigation");
|
|
13667
|
-
var
|
|
14930
|
+
var import_jsx_runtime123 = require("react/jsx-runtime");
|
|
13668
14931
|
function NotFoundError({
|
|
13669
14932
|
className,
|
|
13670
14933
|
embedded = false,
|
|
@@ -13682,8 +14945,8 @@ function NotFoundError({
|
|
|
13682
14945
|
if (onDismiss) onDismiss();
|
|
13683
14946
|
router.push("/");
|
|
13684
14947
|
};
|
|
13685
|
-
return /* @__PURE__ */ (0,
|
|
13686
|
-
/* @__PURE__ */ (0,
|
|
14948
|
+
return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: cn(embedded ? "min-h-96 w-full py-8" : "h-svh", className), children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "m-auto flex h-full w-full flex-col items-center justify-center gap-2", children: [
|
|
14949
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
|
|
13687
14950
|
"h1",
|
|
13688
14951
|
{
|
|
13689
14952
|
className: cn(
|
|
@@ -13693,31 +14956,31 @@ function NotFoundError({
|
|
|
13693
14956
|
children: "404"
|
|
13694
14957
|
}
|
|
13695
14958
|
),
|
|
13696
|
-
/* @__PURE__ */ (0,
|
|
13697
|
-
/* @__PURE__ */ (0,
|
|
14959
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)("span", { className: "font-medium", children: "Oops! Page Not Found :-(!" }),
|
|
14960
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("p", { className: "text-center text-muted-foreground", children: [
|
|
13698
14961
|
"It seems like the page you're looking for ",
|
|
13699
|
-
/* @__PURE__ */ (0,
|
|
14962
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)("br", {}),
|
|
13700
14963
|
"does not exist or might have been removed."
|
|
13701
14964
|
] }),
|
|
13702
|
-
/* @__PURE__ */ (0,
|
|
13703
|
-
/* @__PURE__ */ (0,
|
|
13704
|
-
/* @__PURE__ */ (0,
|
|
14965
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "mt-6 flex gap-4", children: [
|
|
14966
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Button, { variant: "outline", onClick: handleGoBack, children: "Go Back" }),
|
|
14967
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Button, { onClick: handleGoHome, children: "Back to Home" })
|
|
13705
14968
|
] })
|
|
13706
14969
|
] }) });
|
|
13707
14970
|
}
|
|
13708
14971
|
|
|
13709
14972
|
// src/design-system/templates/authenticated-layout.tsx
|
|
13710
|
-
var
|
|
14973
|
+
var import_jsx_runtime124 = require("react/jsx-runtime");
|
|
13711
14974
|
function AuthenticatedLayoutContent({ children }) {
|
|
13712
14975
|
const { showInlineNotFound, setShowInlineNotFound } = useLayout();
|
|
13713
14976
|
const pathname = (0, import_navigation6.usePathname)();
|
|
13714
|
-
(0,
|
|
14977
|
+
(0, import_react25.useEffect)(() => {
|
|
13715
14978
|
setShowInlineNotFound(false);
|
|
13716
14979
|
}, [pathname, setShowInlineNotFound]);
|
|
13717
|
-
return /* @__PURE__ */ (0,
|
|
13718
|
-
/* @__PURE__ */ (0,
|
|
13719
|
-
/* @__PURE__ */ (0,
|
|
13720
|
-
/* @__PURE__ */ (0,
|
|
14980
|
+
return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_jsx_runtime124.Fragment, { children: [
|
|
14981
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(SkipToMain, {}),
|
|
14982
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(AppSidebar2, {}),
|
|
14983
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
13721
14984
|
SidebarInset,
|
|
13722
14985
|
{
|
|
13723
14986
|
className: cn(
|
|
@@ -13725,7 +14988,7 @@ function AuthenticatedLayoutContent({ children }) {
|
|
|
13725
14988
|
"has-[[data-layout=fixed]]:h-svh has-data-[layout=fixed]:h-svh",
|
|
13726
14989
|
"peer-data-[variant=inset]:has-data-[layout=fixed]:h-[calc(100svh-(var(--spacing)*4))]"
|
|
13727
14990
|
),
|
|
13728
|
-
children: showInlineNotFound ? /* @__PURE__ */ (0,
|
|
14991
|
+
children: showInlineNotFound ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
13729
14992
|
NotFoundError,
|
|
13730
14993
|
{
|
|
13731
14994
|
embedded: true,
|
|
@@ -13737,24 +15000,24 @@ function AuthenticatedLayoutContent({ children }) {
|
|
|
13737
15000
|
] });
|
|
13738
15001
|
}
|
|
13739
15002
|
function AuthenticatedLayout({ children }) {
|
|
13740
|
-
const [defaultOpen, setDefaultOpen] = (0,
|
|
13741
|
-
const [isMounted, setIsMounted] = (0,
|
|
13742
|
-
(0,
|
|
15003
|
+
const [defaultOpen, setDefaultOpen] = (0, import_react25.useState)(true);
|
|
15004
|
+
const [isMounted, setIsMounted] = (0, import_react25.useState)(false);
|
|
15005
|
+
(0, import_react25.useEffect)(() => {
|
|
13743
15006
|
setDefaultOpen(getCookie("sidebar_state") !== "false");
|
|
13744
15007
|
setIsMounted(true);
|
|
13745
15008
|
}, []);
|
|
13746
15009
|
if (!isMounted) {
|
|
13747
15010
|
return null;
|
|
13748
15011
|
}
|
|
13749
|
-
return /* @__PURE__ */ (0,
|
|
15012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(SearchProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(LayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(SidebarProvider, { defaultOpen, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(AuthenticatedLayoutContent, { children }) }) }) });
|
|
13750
15013
|
}
|
|
13751
15014
|
|
|
13752
15015
|
// src/design-system/templates/header.tsx
|
|
13753
|
-
var
|
|
13754
|
-
var
|
|
15016
|
+
var import_react26 = require("react");
|
|
15017
|
+
var import_jsx_runtime125 = require("react/jsx-runtime");
|
|
13755
15018
|
function Header2({ className, fixed, children, ...props }) {
|
|
13756
|
-
const [offset, setOffset] = (0,
|
|
13757
|
-
(0,
|
|
15019
|
+
const [offset, setOffset] = (0, import_react26.useState)(0);
|
|
15020
|
+
(0, import_react26.useEffect)(() => {
|
|
13758
15021
|
const onScroll = () => {
|
|
13759
15022
|
setOffset(document.body.scrollTop || document.documentElement.scrollTop);
|
|
13760
15023
|
};
|
|
@@ -13763,7 +15026,7 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13763
15026
|
}, []);
|
|
13764
15027
|
return (
|
|
13765
15028
|
// Page header container: fixed mode me top par sticky behavior deta hai.
|
|
13766
|
-
/* @__PURE__ */ (0,
|
|
15029
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
13767
15030
|
"header",
|
|
13768
15031
|
{
|
|
13769
15032
|
className: cn(
|
|
@@ -13773,7 +15036,7 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13773
15036
|
className
|
|
13774
15037
|
),
|
|
13775
15038
|
...props,
|
|
13776
|
-
children: /* @__PURE__ */ (0,
|
|
15039
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
|
|
13777
15040
|
"div",
|
|
13778
15041
|
{
|
|
13779
15042
|
className: cn(
|
|
@@ -13782,7 +15045,7 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13782
15045
|
offset > 10 && fixed && "after:absolute after:inset-0 after:-z-10 after:bg-background/20 after:backdrop-blur-lg"
|
|
13783
15046
|
),
|
|
13784
15047
|
children: [
|
|
13785
|
-
/* @__PURE__ */ (0,
|
|
15048
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(AppLogo, { className: "shrink-0 md:hidden" }),
|
|
13786
15049
|
children
|
|
13787
15050
|
]
|
|
13788
15051
|
}
|
|
@@ -13793,9 +15056,9 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13793
15056
|
}
|
|
13794
15057
|
|
|
13795
15058
|
// src/design-system/templates/main.tsx
|
|
13796
|
-
var
|
|
15059
|
+
var import_jsx_runtime126 = require("react/jsx-runtime");
|
|
13797
15060
|
function Main({ fixed, className, fluid, ...props }) {
|
|
13798
|
-
return /* @__PURE__ */ (0,
|
|
15061
|
+
return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
13799
15062
|
"main",
|
|
13800
15063
|
{
|
|
13801
15064
|
"data-layout": fixed ? "fixed" : "auto",
|
|
@@ -13813,21 +15076,21 @@ function Main({ fixed, className, fluid, ...props }) {
|
|
|
13813
15076
|
}
|
|
13814
15077
|
|
|
13815
15078
|
// src/design-system/templates/sidebar-search.tsx
|
|
13816
|
-
var
|
|
13817
|
-
var
|
|
15079
|
+
var import_lucide_react65 = require("lucide-react");
|
|
15080
|
+
var import_jsx_runtime127 = require("react/jsx-runtime");
|
|
13818
15081
|
function SidebarSearch() {
|
|
13819
15082
|
const { setOpen } = useSearch();
|
|
13820
|
-
return /* @__PURE__ */ (0,
|
|
15083
|
+
return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
|
|
13821
15084
|
SidebarMenuButton,
|
|
13822
15085
|
{
|
|
13823
15086
|
onClick: () => setOpen(true),
|
|
13824
15087
|
tooltip: "Search (\u2318K)",
|
|
13825
15088
|
className: "bg-sidebar-accent/50 hover:bg-sidebar-accent border border-sidebar-border/60 text-muted-foreground hover:text-foreground",
|
|
13826
15089
|
children: [
|
|
13827
|
-
/* @__PURE__ */ (0,
|
|
13828
|
-
/* @__PURE__ */ (0,
|
|
13829
|
-
/* @__PURE__ */ (0,
|
|
13830
|
-
/* @__PURE__ */ (0,
|
|
15090
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_lucide_react65.SearchIcon, { className: "size-4 shrink-0" }),
|
|
15091
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "flex-1 text-left text-xs font-normal group-data-[collapsible=icon]:hidden", children: "Search..." }),
|
|
15092
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("kbd", { className: "pointer-events-none hidden h-4 select-none items-center gap-0.5 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 group-data-[collapsible=icon]:hidden sm:flex", children: [
|
|
15093
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "text-[10px]", children: "\u2318" }),
|
|
13831
15094
|
"K"
|
|
13832
15095
|
] })
|
|
13833
15096
|
]
|
|
@@ -13837,8 +15100,8 @@ function SidebarSearch() {
|
|
|
13837
15100
|
|
|
13838
15101
|
// src/design-system/templates/top-nav.tsx
|
|
13839
15102
|
var import_link5 = __toESM(require("next/link"));
|
|
13840
|
-
var
|
|
13841
|
-
var
|
|
15103
|
+
var import_lucide_react66 = require("lucide-react");
|
|
15104
|
+
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
13842
15105
|
function TopNav({ className, links, ...props }) {
|
|
13843
15106
|
const renderLink = ({
|
|
13844
15107
|
title,
|
|
@@ -13849,7 +15112,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
13849
15112
|
}) => {
|
|
13850
15113
|
const className2 = `text-sm font-medium transition-colors hover:text-primary ${isActive ? "" : "text-muted-foreground"}`;
|
|
13851
15114
|
if (onClick) {
|
|
13852
|
-
return /* @__PURE__ */ (0,
|
|
15115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
13853
15116
|
"button",
|
|
13854
15117
|
{
|
|
13855
15118
|
type: "button",
|
|
@@ -13861,7 +15124,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
13861
15124
|
title
|
|
13862
15125
|
);
|
|
13863
15126
|
}
|
|
13864
|
-
return /* @__PURE__ */ (0,
|
|
15127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
13865
15128
|
import_link5.default,
|
|
13866
15129
|
{
|
|
13867
15130
|
href,
|
|
@@ -13872,9 +15135,9 @@ function TopNav({ className, links, ...props }) {
|
|
|
13872
15135
|
title
|
|
13873
15136
|
);
|
|
13874
15137
|
};
|
|
13875
|
-
return /* @__PURE__ */ (0,
|
|
13876
|
-
/* @__PURE__ */ (0,
|
|
13877
|
-
/* @__PURE__ */ (0,
|
|
15138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
|
|
15139
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(DropdownMenu, { modal: false, children: [
|
|
15140
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
|
|
13878
15141
|
Button,
|
|
13879
15142
|
{
|
|
13880
15143
|
size: "icon",
|
|
@@ -13884,18 +15147,18 @@ function TopNav({ className, links, ...props }) {
|
|
|
13884
15147
|
className
|
|
13885
15148
|
),
|
|
13886
15149
|
children: [
|
|
13887
|
-
/* @__PURE__ */ (0,
|
|
13888
|
-
/* @__PURE__ */ (0,
|
|
15150
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react66.Menu, {}),
|
|
15151
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "sr-only", children: "Toggle navigation menu" })
|
|
13889
15152
|
]
|
|
13890
15153
|
}
|
|
13891
15154
|
) }),
|
|
13892
|
-
/* @__PURE__ */ (0,
|
|
15155
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(DropdownMenuContent, { side: "bottom", align: "start", children: links.map((link) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
13893
15156
|
DropdownMenuItem,
|
|
13894
15157
|
{
|
|
13895
15158
|
disabled: link.disabled,
|
|
13896
15159
|
onClick: link.onClick,
|
|
13897
15160
|
asChild: !link.onClick,
|
|
13898
|
-
children: link.onClick ? /* @__PURE__ */ (0,
|
|
15161
|
+
children: link.onClick ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: !link.isActive ? "text-muted-foreground" : "", children: link.title }) : /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
13899
15162
|
import_link5.default,
|
|
13900
15163
|
{
|
|
13901
15164
|
href: link.href,
|
|
@@ -13908,7 +15171,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
13908
15171
|
link.title
|
|
13909
15172
|
)) })
|
|
13910
15173
|
] }),
|
|
13911
|
-
/* @__PURE__ */ (0,
|
|
15174
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
13912
15175
|
"nav",
|
|
13913
15176
|
{
|
|
13914
15177
|
className: cn(
|
|
@@ -14091,7 +15354,10 @@ function TopNav({ className, links, ...props }) {
|
|
|
14091
15354
|
FieldSeparator,
|
|
14092
15355
|
FieldSet,
|
|
14093
15356
|
FieldTitle,
|
|
15357
|
+
FileCardItem,
|
|
15358
|
+
FileUploadForm,
|
|
14094
15359
|
FilterBar,
|
|
15360
|
+
FolderTreeItem,
|
|
14095
15361
|
Form,
|
|
14096
15362
|
FormControl,
|
|
14097
15363
|
FormDescription,
|
|
@@ -14244,6 +15510,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
14244
15510
|
Spinner,
|
|
14245
15511
|
Stats01,
|
|
14246
15512
|
StatusBadge,
|
|
15513
|
+
StorageStatCard,
|
|
14247
15514
|
Switch,
|
|
14248
15515
|
Table,
|
|
14249
15516
|
TableBody,
|
|
@@ -14271,12 +15538,16 @@ function TopNav({ className, links, ...props }) {
|
|
|
14271
15538
|
TooltipTrigger,
|
|
14272
15539
|
TopNav,
|
|
14273
15540
|
TypingIndicator,
|
|
15541
|
+
UserFileCardsView,
|
|
14274
15542
|
WizardTemplate,
|
|
14275
15543
|
WorkspaceTemplate,
|
|
14276
15544
|
badgeVariants,
|
|
14277
15545
|
buttonGroupVariants,
|
|
14278
15546
|
buttonVariants,
|
|
14279
15547
|
downloadQrCode,
|
|
15548
|
+
formatBytes,
|
|
15549
|
+
formatTimeAgo,
|
|
15550
|
+
getFileCategoryTheme,
|
|
14280
15551
|
navigationMenuTriggerStyle,
|
|
14281
15552
|
sidebarData,
|
|
14282
15553
|
statusBadgeVariants,
|