@amogads/ui 1.1.4 → 1.1.5
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 +2052 -466
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2069 -437
- package/dist/index.mjs.map +1 -1
- package/dist/pages.js +7106 -6885
- package/dist/pages.js.map +1 -1
- package/dist/pages.mjs +23306 -23085
- package/dist/pages.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,15 @@ __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
|
+
getFileCategoryTheme: () => getFileCategoryTheme,
|
|
387
394
|
navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
|
|
388
395
|
sidebarData: () => sidebarData2,
|
|
389
396
|
statusBadgeVariants: () => statusBadgeVariants,
|
|
@@ -11382,8 +11389,1580 @@ function AiChatHeader({
|
|
|
11382
11389
|
);
|
|
11383
11390
|
}
|
|
11384
11391
|
|
|
11392
|
+
// src/design-system/components/files/file-card-item.tsx
|
|
11393
|
+
var import_react17 = __toESM(require("react"));
|
|
11394
|
+
var import_lucide_react48 = require("lucide-react");
|
|
11395
|
+
var import_date_fns3 = require("date-fns");
|
|
11396
|
+
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
11397
|
+
function getFileCategoryTheme(category) {
|
|
11398
|
+
switch (category) {
|
|
11399
|
+
case "Pdf":
|
|
11400
|
+
return {
|
|
11401
|
+
bg: "bg-red-500/10 dark:bg-red-950/40",
|
|
11402
|
+
text: "text-red-600 dark:text-red-400",
|
|
11403
|
+
border: "border-red-200/40 dark:border-red-900/40",
|
|
11404
|
+
gradient: "from-red-500/20 to-orange-500/10"
|
|
11405
|
+
};
|
|
11406
|
+
case "Doc":
|
|
11407
|
+
return {
|
|
11408
|
+
bg: "bg-blue-500/10 dark:bg-blue-950/40",
|
|
11409
|
+
text: "text-blue-600 dark:text-blue-400",
|
|
11410
|
+
border: "border-blue-200/40 dark:border-blue-900/40",
|
|
11411
|
+
gradient: "from-blue-500/20 to-indigo-500/10"
|
|
11412
|
+
};
|
|
11413
|
+
case "Xls":
|
|
11414
|
+
case "Csv":
|
|
11415
|
+
return {
|
|
11416
|
+
bg: "bg-emerald-500/10 dark:bg-emerald-950/40",
|
|
11417
|
+
text: "text-emerald-600 dark:text-emerald-400",
|
|
11418
|
+
border: "border-emerald-200/40 dark:border-emerald-900/40",
|
|
11419
|
+
gradient: "from-emerald-500/20 to-teal-500/10"
|
|
11420
|
+
};
|
|
11421
|
+
case "Images":
|
|
11422
|
+
return {
|
|
11423
|
+
bg: "bg-amber-500/10 dark:bg-amber-950/40",
|
|
11424
|
+
text: "text-amber-600 dark:text-amber-400",
|
|
11425
|
+
border: "border-amber-200/40 dark:border-amber-900/40",
|
|
11426
|
+
gradient: "from-amber-500/20 to-yellow-500/10"
|
|
11427
|
+
};
|
|
11428
|
+
case "Videos":
|
|
11429
|
+
return {
|
|
11430
|
+
bg: "bg-purple-500/10 dark:bg-purple-950/40",
|
|
11431
|
+
text: "text-purple-600 dark:text-purple-400",
|
|
11432
|
+
border: "border-purple-200/40 dark:border-purple-900/40",
|
|
11433
|
+
gradient: "from-purple-500/20 to-pink-500/10"
|
|
11434
|
+
};
|
|
11435
|
+
case "Zip":
|
|
11436
|
+
return {
|
|
11437
|
+
bg: "bg-orange-500/10 dark:bg-orange-950/40",
|
|
11438
|
+
text: "text-orange-600 dark:text-orange-400",
|
|
11439
|
+
border: "border-orange-200/40 dark:border-orange-900/40",
|
|
11440
|
+
gradient: "from-orange-500/20 to-amber-500/10"
|
|
11441
|
+
};
|
|
11442
|
+
default:
|
|
11443
|
+
return {
|
|
11444
|
+
bg: "bg-indigo-500/10 dark:bg-indigo-950/40",
|
|
11445
|
+
text: "text-indigo-600 dark:text-indigo-400",
|
|
11446
|
+
border: "border-indigo-200/40 dark:border-indigo-900/40",
|
|
11447
|
+
gradient: "from-indigo-500/20 to-purple-500/10"
|
|
11448
|
+
};
|
|
11449
|
+
}
|
|
11450
|
+
}
|
|
11451
|
+
function formatBytes(bytes) {
|
|
11452
|
+
if (!bytes || bytes === 0) return "0 B";
|
|
11453
|
+
const k = 1024;
|
|
11454
|
+
const sizes = ["B", "KB", "MB", "GB", "TB"];
|
|
11455
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
11456
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;
|
|
11457
|
+
}
|
|
11458
|
+
function FileCardItem({
|
|
11459
|
+
file,
|
|
11460
|
+
isSelected = false,
|
|
11461
|
+
viewMode = "grid",
|
|
11462
|
+
onSelect,
|
|
11463
|
+
onPreview,
|
|
11464
|
+
onDownload,
|
|
11465
|
+
onCopyLink,
|
|
11466
|
+
onRename,
|
|
11467
|
+
onDelete,
|
|
11468
|
+
onShare,
|
|
11469
|
+
className
|
|
11470
|
+
}) {
|
|
11471
|
+
const theme = getFileCategoryTheme(file.category);
|
|
11472
|
+
const isImage = file.category === "Images" || /\.(jpg|jpeg|png|webp|svg|gif)$/i.test(file.fileName);
|
|
11473
|
+
const isVideo = file.category === "Videos" || /\.(mp4|webm|mov|mkv)$/i.test(file.fileName);
|
|
11474
|
+
const isPdf = file.category === "Pdf" || /\.pdf$/i.test(file.fileName);
|
|
11475
|
+
const isSheet = file.category === "Xls" || file.category === "Csv" || /\.(xls|xlsx|csv)$/i.test(file.fileName);
|
|
11476
|
+
const isZip = file.category === "Zip" || /\.(zip|rar|7z|tar|gz)$/i.test(file.fileName);
|
|
11477
|
+
const updatedTimeDisplay = import_react17.default.useMemo(() => {
|
|
11478
|
+
if (!file.updatedAt) return "Recently";
|
|
11479
|
+
try {
|
|
11480
|
+
const d = new Date(file.updatedAt);
|
|
11481
|
+
return (0, import_date_fns3.formatDistanceToNow)(d, { addSuffix: true });
|
|
11482
|
+
} catch {
|
|
11483
|
+
return "Recently";
|
|
11484
|
+
}
|
|
11485
|
+
}, [file.updatedAt]);
|
|
11486
|
+
if (viewMode === "table") {
|
|
11487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11488
|
+
"tr",
|
|
11489
|
+
{
|
|
11490
|
+
onClick: () => onSelect?.(file),
|
|
11491
|
+
className: cn(
|
|
11492
|
+
"group border-b border-border/50 transition-colors hover:bg-muted/40 cursor-pointer",
|
|
11493
|
+
isSelected && "bg-primary/5",
|
|
11494
|
+
className
|
|
11495
|
+
),
|
|
11496
|
+
children: [
|
|
11497
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-3 px-4", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
11498
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11499
|
+
"div",
|
|
11500
|
+
{
|
|
11501
|
+
className: cn(
|
|
11502
|
+
"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border shadow-2xs",
|
|
11503
|
+
theme.bg,
|
|
11504
|
+
theme.border
|
|
11505
|
+
),
|
|
11506
|
+
children: isImage ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Image, { className: cn("h-4 w-4", theme.text) }) : isVideo ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Film, { className: cn("h-4 w-4", theme.text) }) : isPdf ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileText, { className: cn("h-4 w-4", theme.text) }) : isSheet ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileSpreadsheet, { className: cn("h-4 w-4", theme.text) }) : isZip ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileArchive, { className: cn("h-4 w-4", theme.text) }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileCode, { className: cn("h-4 w-4", theme.text) })
|
|
11507
|
+
}
|
|
11508
|
+
),
|
|
11509
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "min-w-0", children: [
|
|
11510
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "font-semibold text-xs text-foreground truncate max-w-[240px] sm:max-w-xs", children: file.fileName }),
|
|
11511
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "text-[11px] text-muted-foreground", children: file.folderPath || file.section || "General" })
|
|
11512
|
+
] })
|
|
11513
|
+
] }) }),
|
|
11514
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-3 px-4 text-xs", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11515
|
+
Badge,
|
|
11516
|
+
{
|
|
11517
|
+
variant: "outline",
|
|
11518
|
+
className: cn("text-[10px] px-2 py-0.5 font-bold", theme.bg, theme.text, theme.border),
|
|
11519
|
+
children: file.category
|
|
11520
|
+
}
|
|
11521
|
+
) }),
|
|
11522
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-3 px-4 text-xs text-muted-foreground font-mono", children: formatBytes(file.fileSize) }),
|
|
11523
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-3 px-4 text-xs text-muted-foreground hidden sm:table-cell", children: updatedTimeDisplay }),
|
|
11524
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("td", { className: "py-3 px-4 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-end gap-1", children: [
|
|
11525
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11526
|
+
"button",
|
|
11527
|
+
{
|
|
11528
|
+
type: "button",
|
|
11529
|
+
onClick: (e) => {
|
|
11530
|
+
e.stopPropagation();
|
|
11531
|
+
onPreview?.(file);
|
|
11532
|
+
},
|
|
11533
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
11534
|
+
title: "Preview",
|
|
11535
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-4 w-4" })
|
|
11536
|
+
}
|
|
11537
|
+
),
|
|
11538
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11539
|
+
"button",
|
|
11540
|
+
{
|
|
11541
|
+
type: "button",
|
|
11542
|
+
onClick: (e) => {
|
|
11543
|
+
e.stopPropagation();
|
|
11544
|
+
onDownload?.(file);
|
|
11545
|
+
},
|
|
11546
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
11547
|
+
title: "Download",
|
|
11548
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-4 w-4" })
|
|
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
|
+
type: "button",
|
|
11556
|
+
onClick: (e) => e.stopPropagation(),
|
|
11557
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
11558
|
+
title: "More actions",
|
|
11559
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.MoreHorizontal, { className: "h-4 w-4" })
|
|
11560
|
+
}
|
|
11561
|
+
) }),
|
|
11562
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuContent, { align: "end", className: "w-40 rounded-xl p-1 shadow-lg", children: [
|
|
11563
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11564
|
+
DropdownMenuItem,
|
|
11565
|
+
{
|
|
11566
|
+
onClick: () => onPreview?.(file),
|
|
11567
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11568
|
+
children: [
|
|
11569
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
11570
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Preview" })
|
|
11571
|
+
]
|
|
11572
|
+
}
|
|
11573
|
+
),
|
|
11574
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11575
|
+
DropdownMenuItem,
|
|
11576
|
+
{
|
|
11577
|
+
onClick: () => onDownload?.(file),
|
|
11578
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11579
|
+
children: [
|
|
11580
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5 text-emerald-500" }),
|
|
11581
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Download" })
|
|
11582
|
+
]
|
|
11583
|
+
}
|
|
11584
|
+
),
|
|
11585
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11586
|
+
DropdownMenuItem,
|
|
11587
|
+
{
|
|
11588
|
+
onClick: () => onCopyLink?.(file),
|
|
11589
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11590
|
+
children: [
|
|
11591
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Copy, { className: "h-3.5 w-3.5 text-amber-500" }),
|
|
11592
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Copy Link" })
|
|
11593
|
+
]
|
|
11594
|
+
}
|
|
11595
|
+
),
|
|
11596
|
+
onShare && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11597
|
+
DropdownMenuItem,
|
|
11598
|
+
{
|
|
11599
|
+
onClick: () => onShare(file),
|
|
11600
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11601
|
+
children: [
|
|
11602
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Share2, { className: "h-3.5 w-3.5 text-indigo-500" }),
|
|
11603
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Share" })
|
|
11604
|
+
]
|
|
11605
|
+
}
|
|
11606
|
+
),
|
|
11607
|
+
onRename && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11608
|
+
DropdownMenuItem,
|
|
11609
|
+
{
|
|
11610
|
+
onClick: () => onRename(file),
|
|
11611
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11612
|
+
children: [
|
|
11613
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Pencil, { className: "h-3.5 w-3.5 text-purple-500" }),
|
|
11614
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Rename" })
|
|
11615
|
+
]
|
|
11616
|
+
}
|
|
11617
|
+
),
|
|
11618
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [
|
|
11619
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuSeparator, {}),
|
|
11620
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11621
|
+
DropdownMenuItem,
|
|
11622
|
+
{
|
|
11623
|
+
onClick: () => onDelete(file),
|
|
11624
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5 text-rose-500 hover:text-rose-600 hover:bg-rose-50 dark:hover:bg-rose-950/30 rounded-md",
|
|
11625
|
+
children: [
|
|
11626
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Trash2, { className: "h-3.5 w-3.5 text-rose-500" }),
|
|
11627
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Delete" })
|
|
11628
|
+
]
|
|
11629
|
+
}
|
|
11630
|
+
)
|
|
11631
|
+
] })
|
|
11632
|
+
] })
|
|
11633
|
+
] })
|
|
11634
|
+
] }) })
|
|
11635
|
+
]
|
|
11636
|
+
}
|
|
11637
|
+
);
|
|
11638
|
+
}
|
|
11639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11640
|
+
"div",
|
|
11641
|
+
{
|
|
11642
|
+
onClick: () => onSelect?.(file),
|
|
11643
|
+
className: cn(
|
|
11644
|
+
"group relative flex flex-col justify-between overflow-hidden rounded-2xl border border-border/80 bg-card p-3.5 shadow-2xs transition-all duration-200 hover:shadow-md hover:border-indigo-300 dark:hover:border-indigo-700/60 cursor-pointer select-none",
|
|
11645
|
+
isSelected && "border-indigo-500 ring-2 ring-indigo-500/20 bg-indigo-500/5",
|
|
11646
|
+
className
|
|
11647
|
+
),
|
|
11648
|
+
children: [
|
|
11649
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "relative mb-3 flex items-center justify-center overflow-hidden rounded-xl bg-muted/20 border border-border/40 min-h-[105px]", children: [
|
|
11650
|
+
isImage && file.fileUrl ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11651
|
+
"img",
|
|
11652
|
+
{
|
|
11653
|
+
src: file.fileUrl,
|
|
11654
|
+
alt: file.fileName,
|
|
11655
|
+
className: "h-28 w-full object-cover transition-transform duration-300 group-hover:scale-105",
|
|
11656
|
+
loading: "lazy"
|
|
11657
|
+
}
|
|
11658
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11659
|
+
"div",
|
|
11660
|
+
{
|
|
11661
|
+
className: cn(
|
|
11662
|
+
"flex h-16 w-16 items-center justify-center rounded-2xl border shadow-inner transition-transform duration-200 group-hover:scale-110",
|
|
11663
|
+
theme.bg,
|
|
11664
|
+
theme.border
|
|
11665
|
+
),
|
|
11666
|
+
children: isPdf ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileText, { className: cn("h-8 w-8", theme.text) }) : isVideo ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Film, { className: cn("h-8 w-8", theme.text) }) : isSheet ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileSpreadsheet, { className: cn("h-8 w-8", theme.text) }) : isZip ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileArchive, { className: cn("h-8 w-8", theme.text) }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.FileCode, { className: cn("h-8 w-8", theme.text) })
|
|
11667
|
+
}
|
|
11668
|
+
),
|
|
11669
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11670
|
+
Badge,
|
|
11671
|
+
{
|
|
11672
|
+
variant: "outline",
|
|
11673
|
+
className: cn(
|
|
11674
|
+
"absolute top-2 right-2 backdrop-blur-md text-[10px] font-bold px-1.5 py-0.5 shadow-2xs",
|
|
11675
|
+
theme.bg,
|
|
11676
|
+
theme.text,
|
|
11677
|
+
theme.border
|
|
11678
|
+
),
|
|
11679
|
+
children: file.category
|
|
11680
|
+
}
|
|
11681
|
+
)
|
|
11682
|
+
] }),
|
|
11683
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
11684
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("h4", { className: "font-bold text-xs text-foreground truncate tracking-tight", title: file.fileName, children: file.fileName }),
|
|
11685
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-between text-[11px] text-muted-foreground", children: [
|
|
11686
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "font-mono", children: formatBytes(file.fileSize) }),
|
|
11687
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "truncate", children: updatedTimeDisplay })
|
|
11688
|
+
] })
|
|
11689
|
+
] }),
|
|
11690
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "mt-3 pt-2.5 flex items-center justify-between border-t border-border/50 text-muted-foreground", children: [
|
|
11691
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "text-[10px] text-muted-foreground/70 font-medium truncate max-w-[120px]", children: file.folderPath || file.section || "General" }),
|
|
11692
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
11693
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11694
|
+
"button",
|
|
11695
|
+
{
|
|
11696
|
+
type: "button",
|
|
11697
|
+
onClick: (e) => {
|
|
11698
|
+
e.stopPropagation();
|
|
11699
|
+
onPreview?.(file);
|
|
11700
|
+
},
|
|
11701
|
+
className: "p-1 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
11702
|
+
title: "Preview file",
|
|
11703
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5" })
|
|
11704
|
+
}
|
|
11705
|
+
),
|
|
11706
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11707
|
+
"button",
|
|
11708
|
+
{
|
|
11709
|
+
type: "button",
|
|
11710
|
+
onClick: (e) => {
|
|
11711
|
+
e.stopPropagation();
|
|
11712
|
+
onDownload?.(file);
|
|
11713
|
+
},
|
|
11714
|
+
className: "p-1 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
11715
|
+
title: "Download file",
|
|
11716
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5" })
|
|
11717
|
+
}
|
|
11718
|
+
),
|
|
11719
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenu, { children: [
|
|
11720
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
11721
|
+
"button",
|
|
11722
|
+
{
|
|
11723
|
+
type: "button",
|
|
11724
|
+
onClick: (e) => e.stopPropagation(),
|
|
11725
|
+
className: "p-1 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
11726
|
+
title: "More",
|
|
11727
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.MoreHorizontal, { className: "h-3.5 w-3.5" })
|
|
11728
|
+
}
|
|
11729
|
+
) }),
|
|
11730
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DropdownMenuContent, { align: "end", className: "w-38 rounded-xl p-1 shadow-lg", children: [
|
|
11731
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11732
|
+
DropdownMenuItem,
|
|
11733
|
+
{
|
|
11734
|
+
onClick: () => onPreview?.(file),
|
|
11735
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11736
|
+
children: [
|
|
11737
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Eye, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
11738
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Preview" })
|
|
11739
|
+
]
|
|
11740
|
+
}
|
|
11741
|
+
),
|
|
11742
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11743
|
+
DropdownMenuItem,
|
|
11744
|
+
{
|
|
11745
|
+
onClick: () => onDownload?.(file),
|
|
11746
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11747
|
+
children: [
|
|
11748
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Download, { className: "h-3.5 w-3.5 text-emerald-500" }),
|
|
11749
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Download" })
|
|
11750
|
+
]
|
|
11751
|
+
}
|
|
11752
|
+
),
|
|
11753
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11754
|
+
DropdownMenuItem,
|
|
11755
|
+
{
|
|
11756
|
+
onClick: () => onCopyLink?.(file),
|
|
11757
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5",
|
|
11758
|
+
children: [
|
|
11759
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Copy, { className: "h-3.5 w-3.5 text-amber-500" }),
|
|
11760
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Copy Link" })
|
|
11761
|
+
]
|
|
11762
|
+
}
|
|
11763
|
+
),
|
|
11764
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [
|
|
11765
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DropdownMenuSeparator, {}),
|
|
11766
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
11767
|
+
DropdownMenuItem,
|
|
11768
|
+
{
|
|
11769
|
+
onClick: () => onDelete(file),
|
|
11770
|
+
className: "cursor-pointer text-xs flex items-center gap-2 py-1.5 text-rose-500 hover:text-rose-600 hover:bg-rose-50 dark:hover:bg-rose-950/30 rounded-md",
|
|
11771
|
+
children: [
|
|
11772
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_lucide_react48.Trash2, { className: "h-3.5 w-3.5 text-rose-500" }),
|
|
11773
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: "Delete" })
|
|
11774
|
+
]
|
|
11775
|
+
}
|
|
11776
|
+
)
|
|
11777
|
+
] })
|
|
11778
|
+
] })
|
|
11779
|
+
] })
|
|
11780
|
+
] })
|
|
11781
|
+
] })
|
|
11782
|
+
]
|
|
11783
|
+
}
|
|
11784
|
+
);
|
|
11785
|
+
}
|
|
11786
|
+
|
|
11787
|
+
// src/design-system/components/files/folder-tree-item.tsx
|
|
11788
|
+
var import_lucide_react49 = require("lucide-react");
|
|
11789
|
+
var import_jsx_runtime95 = require("react/jsx-runtime");
|
|
11790
|
+
function FolderTreeItem({
|
|
11791
|
+
folder,
|
|
11792
|
+
isFolderActive,
|
|
11793
|
+
isExpanded,
|
|
11794
|
+
onToggleExpand,
|
|
11795
|
+
onSelectFolder,
|
|
11796
|
+
className
|
|
11797
|
+
}) {
|
|
11798
|
+
const isLevel0 = folder.level === 0;
|
|
11799
|
+
const isLevel1 = folder.level === 1;
|
|
11800
|
+
const isLevel2 = folder.level === 2;
|
|
11801
|
+
const hasChildren = isLevel0 || isLevel1;
|
|
11802
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
|
|
11803
|
+
"div",
|
|
11804
|
+
{
|
|
11805
|
+
id: `folder-card-${folder.id}`,
|
|
11806
|
+
onClick: () => {
|
|
11807
|
+
if (hasChildren) {
|
|
11808
|
+
onToggleExpand(folder.id);
|
|
11809
|
+
} else {
|
|
11810
|
+
onSelectFolder(folder);
|
|
11811
|
+
}
|
|
11812
|
+
},
|
|
11813
|
+
className: cn(
|
|
11814
|
+
"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",
|
|
11815
|
+
isLevel0 && "font-bold bg-muted/20 border-border/50 my-1",
|
|
11816
|
+
isLevel1 && "ml-3 border-border/40 my-0.5",
|
|
11817
|
+
isLevel2 && "ml-6 border-transparent hover:bg-muted/40 my-0.5",
|
|
11818
|
+
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",
|
|
11819
|
+
className
|
|
11820
|
+
),
|
|
11821
|
+
children: [
|
|
11822
|
+
isFolderActive && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "absolute top-1 bottom-1 left-0 w-1 rounded-l-full bg-indigo-600" }),
|
|
11823
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center gap-1.5 min-w-0 flex-1", children: [
|
|
11824
|
+
hasChildren && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11825
|
+
"button",
|
|
11826
|
+
{
|
|
11827
|
+
type: "button",
|
|
11828
|
+
onClick: (e) => onToggleExpand(folder.id, e),
|
|
11829
|
+
className: "flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer",
|
|
11830
|
+
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" })
|
|
11831
|
+
}
|
|
11832
|
+
),
|
|
11833
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11834
|
+
"div",
|
|
11835
|
+
{
|
|
11836
|
+
className: cn(
|
|
11837
|
+
"flex shrink-0 items-center justify-center rounded-lg text-indigo-600 dark:text-indigo-400 transition-colors",
|
|
11838
|
+
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"
|
|
11839
|
+
),
|
|
11840
|
+
children: isExpanded ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11841
|
+
import_lucide_react49.FolderOpen,
|
|
11842
|
+
{
|
|
11843
|
+
className: isLevel0 ? "h-3.5 w-3.5" : isLevel1 ? "h-3 w-3" : "h-3 w-3 text-indigo-500"
|
|
11844
|
+
}
|
|
11845
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11846
|
+
import_lucide_react49.Folder,
|
|
11847
|
+
{
|
|
11848
|
+
className: isLevel0 ? "h-3.5 w-3.5" : isLevel1 ? "h-3 w-3" : "h-3 w-3 text-indigo-500"
|
|
11849
|
+
}
|
|
11850
|
+
)
|
|
11851
|
+
}
|
|
11852
|
+
),
|
|
11853
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11854
|
+
"span",
|
|
11855
|
+
{
|
|
11856
|
+
className: cn(
|
|
11857
|
+
"truncate text-foreground",
|
|
11858
|
+
isLevel0 ? "text-xs font-bold" : isLevel1 ? "text-[11px] font-semibold" : "text-[11px] font-medium",
|
|
11859
|
+
isFolderActive && "text-indigo-600 dark:text-indigo-400"
|
|
11860
|
+
),
|
|
11861
|
+
children: folder.name
|
|
11862
|
+
}
|
|
11863
|
+
)
|
|
11864
|
+
] }),
|
|
11865
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
11866
|
+
Badge,
|
|
11867
|
+
{
|
|
11868
|
+
variant: isFolderActive ? "default" : "secondary",
|
|
11869
|
+
className: cn(
|
|
11870
|
+
"text-[10px] px-1.5 py-0 h-4 min-w-4 flex items-center justify-center font-mono",
|
|
11871
|
+
isFolderActive ? "bg-indigo-600 text-white" : "bg-muted text-muted-foreground group-hover:bg-indigo-500/10 group-hover:text-indigo-600"
|
|
11872
|
+
),
|
|
11873
|
+
children: folder.fileCount
|
|
11874
|
+
}
|
|
11875
|
+
)
|
|
11876
|
+
]
|
|
11877
|
+
}
|
|
11878
|
+
);
|
|
11879
|
+
}
|
|
11880
|
+
|
|
11881
|
+
// src/design-system/components/files/storage-stat-card.tsx
|
|
11882
|
+
var import_lucide_react50 = require("lucide-react");
|
|
11883
|
+
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
11884
|
+
function StorageStatCard({
|
|
11885
|
+
totalFiles,
|
|
11886
|
+
totalSizeBytes = 0,
|
|
11887
|
+
maxStorageBytes = 10 * 1024 * 1024 * 1024,
|
|
11888
|
+
// 10 GB default
|
|
11889
|
+
stats,
|
|
11890
|
+
onViewAllFiles,
|
|
11891
|
+
onUploadClick,
|
|
11892
|
+
className
|
|
11893
|
+
}) {
|
|
11894
|
+
const percentUsed = Math.min(
|
|
11895
|
+
100,
|
|
11896
|
+
Math.max(1, Math.round(totalSizeBytes / (maxStorageBytes || 1) * 100))
|
|
11897
|
+
);
|
|
11898
|
+
const defaultStats = stats || [
|
|
11899
|
+
{
|
|
11900
|
+
label: "Documents & PDFs",
|
|
11901
|
+
count: Math.round(totalFiles * 0.4),
|
|
11902
|
+
sizeBytes: Math.round(totalSizeBytes * 0.45),
|
|
11903
|
+
colorClass: "bg-red-500",
|
|
11904
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.FileText, { className: "h-4 w-4 text-red-500" })
|
|
11905
|
+
},
|
|
11906
|
+
{
|
|
11907
|
+
label: "Images & Photos",
|
|
11908
|
+
count: Math.round(totalFiles * 0.35),
|
|
11909
|
+
sizeBytes: Math.round(totalSizeBytes * 0.3),
|
|
11910
|
+
colorClass: "bg-amber-500",
|
|
11911
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.Image, { className: "h-4 w-4 text-amber-500" })
|
|
11912
|
+
},
|
|
11913
|
+
{
|
|
11914
|
+
label: "Media & Videos",
|
|
11915
|
+
count: Math.round(totalFiles * 0.15),
|
|
11916
|
+
sizeBytes: Math.round(totalSizeBytes * 0.2),
|
|
11917
|
+
colorClass: "bg-purple-500",
|
|
11918
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.Film, { className: "h-4 w-4 text-purple-500" })
|
|
11919
|
+
},
|
|
11920
|
+
{
|
|
11921
|
+
label: "Other & Archives",
|
|
11922
|
+
count: Math.max(0, totalFiles - Math.round(totalFiles * 0.9)),
|
|
11923
|
+
sizeBytes: Math.round(totalSizeBytes * 0.05),
|
|
11924
|
+
colorClass: "bg-indigo-500",
|
|
11925
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.Database, { className: "h-4 w-4 text-indigo-500" })
|
|
11926
|
+
}
|
|
11927
|
+
];
|
|
11928
|
+
return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
11929
|
+
"div",
|
|
11930
|
+
{
|
|
11931
|
+
className: cn(
|
|
11932
|
+
"flex flex-col gap-4 rounded-2xl border border-border/80 bg-card p-4 shadow-2xs select-none",
|
|
11933
|
+
className
|
|
11934
|
+
),
|
|
11935
|
+
children: [
|
|
11936
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
11937
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
11938
|
+
/* @__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" }) }),
|
|
11939
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
|
|
11940
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("h3", { className: "text-xs font-bold text-foreground", children: "Storage Overview" }),
|
|
11941
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("p", { className: "text-[11px] text-muted-foreground", children: [
|
|
11942
|
+
totalFiles,
|
|
11943
|
+
" items stored in workspace"
|
|
11944
|
+
] })
|
|
11945
|
+
] })
|
|
11946
|
+
] }),
|
|
11947
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "text-right", children: [
|
|
11948
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "text-xs font-bold text-foreground font-mono", children: formatBytes(totalSizeBytes) }),
|
|
11949
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("p", { className: "text-[10px] text-muted-foreground font-mono", children: [
|
|
11950
|
+
"of ",
|
|
11951
|
+
formatBytes(maxStorageBytes)
|
|
11952
|
+
] })
|
|
11953
|
+
] })
|
|
11954
|
+
] }),
|
|
11955
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "space-y-1.5", children: [
|
|
11956
|
+
/* @__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)(
|
|
11957
|
+
"div",
|
|
11958
|
+
{
|
|
11959
|
+
className: "h-full rounded-full bg-linear-to-r from-indigo-500 via-purple-500 to-amber-500 transition-all duration-500",
|
|
11960
|
+
style: { width: `${percentUsed}%` }
|
|
11961
|
+
}
|
|
11962
|
+
) }),
|
|
11963
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex justify-between text-[10px] text-muted-foreground", children: [
|
|
11964
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
|
|
11965
|
+
percentUsed,
|
|
11966
|
+
"% capacity utilized"
|
|
11967
|
+
] }),
|
|
11968
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
|
|
11969
|
+
formatBytes(Math.max(0, maxStorageBytes - totalSizeBytes)),
|
|
11970
|
+
" available"
|
|
11971
|
+
] })
|
|
11972
|
+
] })
|
|
11973
|
+
] }),
|
|
11974
|
+
/* @__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)(
|
|
11975
|
+
"div",
|
|
11976
|
+
{
|
|
11977
|
+
className: "flex items-center gap-2 rounded-xl border border-border/40 bg-muted/20 p-2",
|
|
11978
|
+
children: [
|
|
11979
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "shrink-0", children: item.icon }),
|
|
11980
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
11981
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "truncate text-[11px] font-semibold text-foreground", children: item.label }),
|
|
11982
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between text-[10px] text-muted-foreground", children: [
|
|
11983
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
|
|
11984
|
+
item.count,
|
|
11985
|
+
" files"
|
|
11986
|
+
] }),
|
|
11987
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "font-mono", children: formatBytes(item.sizeBytes) })
|
|
11988
|
+
] })
|
|
11989
|
+
] })
|
|
11990
|
+
]
|
|
11991
|
+
},
|
|
11992
|
+
idx
|
|
11993
|
+
)) }),
|
|
11994
|
+
(onViewAllFiles || onUploadClick) && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between pt-2 border-t border-border/50", children: [
|
|
11995
|
+
onViewAllFiles && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
11996
|
+
"button",
|
|
11997
|
+
{
|
|
11998
|
+
type: "button",
|
|
11999
|
+
onClick: onViewAllFiles,
|
|
12000
|
+
className: "text-xs font-semibold text-indigo-600 dark:text-indigo-400 hover:underline flex items-center gap-1 cursor-pointer",
|
|
12001
|
+
children: [
|
|
12002
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { children: "Explore All Files" }),
|
|
12003
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react50.ArrowUpRight, { className: "h-3.5 w-3.5" })
|
|
12004
|
+
]
|
|
12005
|
+
}
|
|
12006
|
+
),
|
|
12007
|
+
onUploadClick && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
12008
|
+
"button",
|
|
12009
|
+
{
|
|
12010
|
+
type: "button",
|
|
12011
|
+
onClick: onUploadClick,
|
|
12012
|
+
className: "text-xs font-semibold bg-indigo-600 text-white hover:bg-indigo-700 px-3 py-1 rounded-lg transition-colors cursor-pointer",
|
|
12013
|
+
children: "Upload New"
|
|
12014
|
+
}
|
|
12015
|
+
)
|
|
12016
|
+
] })
|
|
12017
|
+
]
|
|
12018
|
+
}
|
|
12019
|
+
);
|
|
12020
|
+
}
|
|
12021
|
+
|
|
12022
|
+
// src/design-system/components/files/user-file-cards-view.tsx
|
|
12023
|
+
var import_react18 = require("react");
|
|
12024
|
+
var import_lucide_react52 = require("lucide-react");
|
|
12025
|
+
|
|
12026
|
+
// src/features/Message/components/chat/header-actions.tsx
|
|
12027
|
+
var import_lucide_react51 = require("lucide-react");
|
|
12028
|
+
var import_sonner3 = require("sonner");
|
|
12029
|
+
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
12030
|
+
function HeaderActions({
|
|
12031
|
+
onDelete,
|
|
12032
|
+
onDownload,
|
|
12033
|
+
onPrint,
|
|
12034
|
+
onShare,
|
|
12035
|
+
onReply,
|
|
12036
|
+
onForward,
|
|
12037
|
+
onPin,
|
|
12038
|
+
onStar,
|
|
12039
|
+
onFavorite,
|
|
12040
|
+
onArchive,
|
|
12041
|
+
onActionThis,
|
|
12042
|
+
onClose
|
|
12043
|
+
}) {
|
|
12044
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-1 shrink-0 select-none", children: [
|
|
12045
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12046
|
+
"button",
|
|
12047
|
+
{
|
|
12048
|
+
type: "button",
|
|
12049
|
+
onClick: () => {
|
|
12050
|
+
if (onActionThis) onActionThis();
|
|
12051
|
+
else import_sonner3.toast.info("Act on this option selected");
|
|
12052
|
+
},
|
|
12053
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-amber-500 hover:text-amber-600 transition-colors cursor-pointer",
|
|
12054
|
+
title: "Act on this",
|
|
12055
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Bell, { className: "h-4.5 w-4.5" })
|
|
12056
|
+
}
|
|
12057
|
+
),
|
|
12058
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12059
|
+
"button",
|
|
12060
|
+
{
|
|
12061
|
+
type: "button",
|
|
12062
|
+
onClick: () => import_sonner3.toast.success("Flagged item"),
|
|
12063
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
12064
|
+
title: "Flag",
|
|
12065
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Flag, { className: "h-4.5 w-4.5" })
|
|
12066
|
+
}
|
|
12067
|
+
),
|
|
12068
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(DropdownMenu, { children: [
|
|
12069
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12070
|
+
"button",
|
|
12071
|
+
{
|
|
12072
|
+
type: "button",
|
|
12073
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
12074
|
+
title: "More options",
|
|
12075
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.MoreVertical, { className: "h-4.5 w-4.5" })
|
|
12076
|
+
}
|
|
12077
|
+
) }),
|
|
12078
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
12079
|
+
DropdownMenuContent,
|
|
12080
|
+
{
|
|
12081
|
+
align: "end",
|
|
12082
|
+
className: "w-48 border border-border/80 bg-background shadow-lg p-1 space-y-0.5",
|
|
12083
|
+
children: [
|
|
12084
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12085
|
+
DropdownMenuItem,
|
|
12086
|
+
{
|
|
12087
|
+
onClick: () => {
|
|
12088
|
+
if (onReply) onReply();
|
|
12089
|
+
else import_sonner3.toast.info("Reply option selected");
|
|
12090
|
+
},
|
|
12091
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12092
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12093
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Reply, { className: "h-4 w-4 text-blue-500" }),
|
|
12094
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Reply" })
|
|
12095
|
+
] })
|
|
12096
|
+
}
|
|
12097
|
+
),
|
|
12098
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12099
|
+
DropdownMenuItem,
|
|
12100
|
+
{
|
|
12101
|
+
onClick: () => {
|
|
12102
|
+
if (onForward) onForward();
|
|
12103
|
+
else import_sonner3.toast.info("Forward option selected");
|
|
12104
|
+
},
|
|
12105
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12106
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12107
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Forward, { className: "h-4 w-4 text-sky-400" }),
|
|
12108
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Forward" })
|
|
12109
|
+
] })
|
|
12110
|
+
}
|
|
12111
|
+
),
|
|
12112
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12113
|
+
DropdownMenuItem,
|
|
12114
|
+
{
|
|
12115
|
+
onClick: () => {
|
|
12116
|
+
if (onPin) onPin();
|
|
12117
|
+
else import_sonner3.toast.success("Message pinned");
|
|
12118
|
+
},
|
|
12119
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12120
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12121
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Pin, { className: "h-4 w-4 text-purple-500" }),
|
|
12122
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Pin Message" })
|
|
12123
|
+
] })
|
|
12124
|
+
}
|
|
12125
|
+
),
|
|
12126
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12127
|
+
DropdownMenuItem,
|
|
12128
|
+
{
|
|
12129
|
+
onClick: () => {
|
|
12130
|
+
if (onStar) onStar();
|
|
12131
|
+
else import_sonner3.toast.success("Starred successfully");
|
|
12132
|
+
},
|
|
12133
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12134
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12135
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Star, { className: "h-4 w-4 text-amber-500" }),
|
|
12136
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Star" })
|
|
12137
|
+
] })
|
|
12138
|
+
}
|
|
12139
|
+
),
|
|
12140
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12141
|
+
DropdownMenuItem,
|
|
12142
|
+
{
|
|
12143
|
+
onClick: () => {
|
|
12144
|
+
if (onFavorite) onFavorite();
|
|
12145
|
+
else import_sonner3.toast.success("Added to favorites");
|
|
12146
|
+
},
|
|
12147
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12148
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12149
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Heart, { className: "h-4 w-4 text-rose-500" }),
|
|
12150
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Favorite" })
|
|
12151
|
+
] })
|
|
12152
|
+
}
|
|
12153
|
+
),
|
|
12154
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12155
|
+
DropdownMenuItem,
|
|
12156
|
+
{
|
|
12157
|
+
onClick: () => import_sonner3.toast.success("Flagged message"),
|
|
12158
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12159
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12160
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Flag, { className: "h-4 w-4 text-red-500" }),
|
|
12161
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Flag" })
|
|
12162
|
+
] })
|
|
12163
|
+
}
|
|
12164
|
+
),
|
|
12165
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12166
|
+
DropdownMenuItem,
|
|
12167
|
+
{
|
|
12168
|
+
onClick: () => {
|
|
12169
|
+
if (onArchive) onArchive();
|
|
12170
|
+
else import_sonner3.toast.success("Archived successfully");
|
|
12171
|
+
},
|
|
12172
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12173
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12174
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Archive, { className: "h-4 w-4 text-indigo-500" }),
|
|
12175
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Archive" })
|
|
12176
|
+
] })
|
|
12177
|
+
}
|
|
12178
|
+
),
|
|
12179
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12180
|
+
DropdownMenuItem,
|
|
12181
|
+
{
|
|
12182
|
+
onClick: () => {
|
|
12183
|
+
if (onActionThis) onActionThis();
|
|
12184
|
+
else import_sonner3.toast.info("Action This selected");
|
|
12185
|
+
},
|
|
12186
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-muted/80 rounded-md",
|
|
12187
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12188
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Bell, { className: "h-4 w-4 text-amber-500" }),
|
|
12189
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-foreground", children: "Action This" })
|
|
12190
|
+
] })
|
|
12191
|
+
}
|
|
12192
|
+
),
|
|
12193
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12194
|
+
DropdownMenuItem,
|
|
12195
|
+
{
|
|
12196
|
+
onClick: () => {
|
|
12197
|
+
if (onDelete) onDelete();
|
|
12198
|
+
else import_sonner3.toast.success("Item deleted");
|
|
12199
|
+
},
|
|
12200
|
+
className: "cursor-pointer text-xs flex items-center justify-between py-2 px-2.5 font-medium hover:bg-red-500/10 rounded-md text-red-500 focus:text-red-500",
|
|
12201
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
12202
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.Trash2, { className: "h-4 w-4 text-red-500" }),
|
|
12203
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "font-semibold text-red-500", children: "Delete" })
|
|
12204
|
+
] })
|
|
12205
|
+
}
|
|
12206
|
+
)
|
|
12207
|
+
]
|
|
12208
|
+
}
|
|
12209
|
+
)
|
|
12210
|
+
] }),
|
|
12211
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
12212
|
+
"button",
|
|
12213
|
+
{
|
|
12214
|
+
type: "button",
|
|
12215
|
+
onClick: onClose,
|
|
12216
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors cursor-pointer ml-0.5",
|
|
12217
|
+
title: "Close",
|
|
12218
|
+
"aria-label": "Close",
|
|
12219
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react51.X, { className: "h-4.5 w-4.5" })
|
|
12220
|
+
}
|
|
12221
|
+
)
|
|
12222
|
+
] });
|
|
12223
|
+
}
|
|
12224
|
+
|
|
12225
|
+
// src/design-system/components/files/user-file-cards-view.tsx
|
|
12226
|
+
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
12227
|
+
var CATEGORY_TABS = [
|
|
12228
|
+
{ label: "All Files", value: "all" },
|
|
12229
|
+
{ label: "PDFs", value: "Pdf" },
|
|
12230
|
+
{ label: "Documents", value: "Doc" },
|
|
12231
|
+
{ label: "Spreadsheets", value: "Xls" },
|
|
12232
|
+
{ label: "Images", value: "Images" },
|
|
12233
|
+
{ label: "Videos", value: "Videos" },
|
|
12234
|
+
{ label: "Archives", value: "Zip" }
|
|
12235
|
+
];
|
|
12236
|
+
function UserFileCardsView({
|
|
12237
|
+
folder,
|
|
12238
|
+
files,
|
|
12239
|
+
selectedFileId,
|
|
12240
|
+
onSelectFileForPreview,
|
|
12241
|
+
onDownloadFile,
|
|
12242
|
+
onDeleteFile,
|
|
12243
|
+
onCopyLink,
|
|
12244
|
+
onRenameFile,
|
|
12245
|
+
onShareFile,
|
|
12246
|
+
onUploadClick,
|
|
12247
|
+
onBack,
|
|
12248
|
+
className
|
|
12249
|
+
}) {
|
|
12250
|
+
const [searchQuery, setSearchQuery] = (0, import_react18.useState)("");
|
|
12251
|
+
const [selectedCategory, setSelectedCategory] = (0, import_react18.useState)("all");
|
|
12252
|
+
const [sortBy, setSortBy] = (0, import_react18.useState)("date");
|
|
12253
|
+
const [sortOrder, setSortOrder] = (0, import_react18.useState)("desc");
|
|
12254
|
+
const [viewMode, setViewMode] = (0, import_react18.useState)("grid");
|
|
12255
|
+
const [currentPage, setCurrentPage] = (0, import_react18.useState)(1);
|
|
12256
|
+
const itemsPerPage = viewMode === "grid" ? 12 : 20;
|
|
12257
|
+
const [selectedIds, setSelectedIds] = (0, import_react18.useState)(/* @__PURE__ */ new Set());
|
|
12258
|
+
const filteredFiles = (0, import_react18.useMemo)(() => {
|
|
12259
|
+
return files.filter((f) => {
|
|
12260
|
+
const matchCategory = selectedCategory === "all" || f.category.toLowerCase() === selectedCategory.toLowerCase() || selectedCategory === "Xls" && (f.category === "Csv" || f.category === "Xls");
|
|
12261
|
+
const matchSearch = !searchQuery.trim() || f.fileName.toLowerCase().includes(searchQuery.toLowerCase()) || f.folderPath && f.folderPath.toLowerCase().includes(searchQuery.toLowerCase());
|
|
12262
|
+
return matchCategory && matchSearch;
|
|
12263
|
+
});
|
|
12264
|
+
}, [files, selectedCategory, searchQuery]);
|
|
12265
|
+
const sortedFiles = (0, import_react18.useMemo)(() => {
|
|
12266
|
+
return [...filteredFiles].sort((a, b) => {
|
|
12267
|
+
let compare = 0;
|
|
12268
|
+
if (sortBy === "date") {
|
|
12269
|
+
const timeA = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
|
12270
|
+
const timeB = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
|
|
12271
|
+
compare = timeB - timeA;
|
|
12272
|
+
} else if (sortBy === "name") {
|
|
12273
|
+
compare = a.fileName.localeCompare(b.fileName);
|
|
12274
|
+
} else if (sortBy === "size") {
|
|
12275
|
+
compare = (b.fileSize || 0) - (a.fileSize || 0);
|
|
12276
|
+
}
|
|
12277
|
+
return sortOrder === "asc" ? -compare : compare;
|
|
12278
|
+
});
|
|
12279
|
+
}, [filteredFiles, sortBy, sortOrder]);
|
|
12280
|
+
const totalPages = Math.ceil(sortedFiles.length / itemsPerPage) || 1;
|
|
12281
|
+
const paginatedFiles = (0, import_react18.useMemo)(() => {
|
|
12282
|
+
const start = (currentPage - 1) * itemsPerPage;
|
|
12283
|
+
return sortedFiles.slice(start, start + itemsPerPage);
|
|
12284
|
+
}, [sortedFiles, currentPage, itemsPerPage]);
|
|
12285
|
+
const totalBytes = (0, import_react18.useMemo)(() => {
|
|
12286
|
+
return files.reduce((acc, curr) => acc + (curr.fileSize || 0), 0);
|
|
12287
|
+
}, [files]);
|
|
12288
|
+
const toggleSelectAll = () => {
|
|
12289
|
+
if (selectedIds.size === paginatedFiles.length) {
|
|
12290
|
+
setSelectedIds(/* @__PURE__ */ new Set());
|
|
12291
|
+
} else {
|
|
12292
|
+
setSelectedIds(new Set(paginatedFiles.map((f) => f.id)));
|
|
12293
|
+
}
|
|
12294
|
+
};
|
|
12295
|
+
const toggleSelectOne = (id) => {
|
|
12296
|
+
setSelectedIds((prev) => {
|
|
12297
|
+
const next = new Set(prev);
|
|
12298
|
+
if (next.has(id)) next.delete(id);
|
|
12299
|
+
else next.add(id);
|
|
12300
|
+
return next;
|
|
12301
|
+
});
|
|
12302
|
+
};
|
|
12303
|
+
const handleBulkDownload = () => {
|
|
12304
|
+
const toDownload = files.filter((f) => selectedIds.has(f.id));
|
|
12305
|
+
toDownload.forEach((f) => onDownloadFile?.(f));
|
|
12306
|
+
};
|
|
12307
|
+
const handleBulkDelete = () => {
|
|
12308
|
+
const toDelete = files.filter((f) => selectedIds.has(f.id));
|
|
12309
|
+
toDelete.forEach((f) => onDeleteFile?.(f));
|
|
12310
|
+
setSelectedIds(/* @__PURE__ */ new Set());
|
|
12311
|
+
};
|
|
12312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12313
|
+
"div",
|
|
12314
|
+
{
|
|
12315
|
+
className: cn(
|
|
12316
|
+
"flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden bg-background select-none",
|
|
12317
|
+
className
|
|
12318
|
+
),
|
|
12319
|
+
children: [
|
|
12320
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between border-b border-border bg-background px-4 py-3 shrink-0", children: [
|
|
12321
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2.5 min-w-0", children: [
|
|
12322
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12323
|
+
"button",
|
|
12324
|
+
{
|
|
12325
|
+
type: "button",
|
|
12326
|
+
onClick: onBack,
|
|
12327
|
+
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",
|
|
12328
|
+
title: "Back",
|
|
12329
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.ArrowLeft, { className: "h-4 w-4" })
|
|
12330
|
+
}
|
|
12331
|
+
),
|
|
12332
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.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 shrink-0 shadow-2xs", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.FolderOpen, { className: "h-5 w-5" }) }),
|
|
12333
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "min-w-0", children: [
|
|
12334
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12335
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("h2", { className: "truncate text-sm font-bold text-foreground tracking-tight", children: folder?.name || "All Files & Folders" }),
|
|
12336
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Badge, { variant: "secondary", className: "text-[10px] px-1.5 py-0 h-4 font-mono", children: [
|
|
12337
|
+
filteredFiles.length,
|
|
12338
|
+
" files"
|
|
12339
|
+
] })
|
|
12340
|
+
] }),
|
|
12341
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("p", { className: "truncate text-xs text-muted-foreground", children: [
|
|
12342
|
+
folder?.path || "Storage Space",
|
|
12343
|
+
" \xB7 Total size: ",
|
|
12344
|
+
formatBytes(totalBytes)
|
|
12345
|
+
] })
|
|
12346
|
+
] })
|
|
12347
|
+
] }),
|
|
12348
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-1.5 shrink-0", children: [
|
|
12349
|
+
onUploadClick && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12350
|
+
Button,
|
|
12351
|
+
{
|
|
12352
|
+
size: "sm",
|
|
12353
|
+
onClick: onUploadClick,
|
|
12354
|
+
className: "gap-1.5 h-8 text-xs font-semibold shadow-xs",
|
|
12355
|
+
children: [
|
|
12356
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Upload, { className: "h-3.5 w-3.5" }),
|
|
12357
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "hidden sm:inline", children: "Upload Files" })
|
|
12358
|
+
]
|
|
12359
|
+
}
|
|
12360
|
+
),
|
|
12361
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(HeaderActions, { onDelete: onBack })
|
|
12362
|
+
] })
|
|
12363
|
+
] }),
|
|
12364
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex flex-col gap-2.5 border-b border-border/60 bg-muted/10 p-3 shrink-0", children: [
|
|
12365
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
12366
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "relative min-w-[200px] flex-1 max-w-md", children: [
|
|
12367
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground" }),
|
|
12368
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12369
|
+
Input,
|
|
12370
|
+
{
|
|
12371
|
+
value: searchQuery,
|
|
12372
|
+
onChange: (e) => {
|
|
12373
|
+
setSearchQuery(e.target.value);
|
|
12374
|
+
setCurrentPage(1);
|
|
12375
|
+
},
|
|
12376
|
+
placeholder: "Search files by name, type, or path...",
|
|
12377
|
+
className: "h-8.5 pl-8 pr-8 text-xs rounded-xl bg-background border-border/80"
|
|
12378
|
+
}
|
|
12379
|
+
),
|
|
12380
|
+
searchQuery && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12381
|
+
"button",
|
|
12382
|
+
{
|
|
12383
|
+
type: "button",
|
|
12384
|
+
onClick: () => setSearchQuery(""),
|
|
12385
|
+
className: "absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
|
|
12386
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.X, { className: "h-3.5 w-3.5" })
|
|
12387
|
+
}
|
|
12388
|
+
)
|
|
12389
|
+
] }),
|
|
12390
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
12391
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(DropdownMenu, { children: [
|
|
12392
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Button, { variant: "outline", size: "sm", className: "h-8 gap-1.5 text-xs rounded-xl", children: [
|
|
12393
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.ArrowUpDown, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
12394
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "hidden sm:inline capitalize", children: [
|
|
12395
|
+
"Sort: ",
|
|
12396
|
+
sortBy
|
|
12397
|
+
] })
|
|
12398
|
+
] }) }),
|
|
12399
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(DropdownMenuContent, { align: "end", className: "w-44 rounded-xl p-1 shadow-lg", children: [
|
|
12400
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(DropdownMenuLabel, { className: "text-[10px] text-muted-foreground uppercase font-bold tracking-wider", children: "Sort By" }),
|
|
12401
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12402
|
+
DropdownMenuItem,
|
|
12403
|
+
{
|
|
12404
|
+
onClick: () => setSortBy("date"),
|
|
12405
|
+
className: cn("text-xs cursor-pointer", sortBy === "date" && "font-bold text-primary"),
|
|
12406
|
+
children: "Last Updated"
|
|
12407
|
+
}
|
|
12408
|
+
),
|
|
12409
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12410
|
+
DropdownMenuItem,
|
|
12411
|
+
{
|
|
12412
|
+
onClick: () => setSortBy("name"),
|
|
12413
|
+
className: cn("text-xs cursor-pointer", sortBy === "name" && "font-bold text-primary"),
|
|
12414
|
+
children: "File Name (A-Z)"
|
|
12415
|
+
}
|
|
12416
|
+
),
|
|
12417
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12418
|
+
DropdownMenuItem,
|
|
12419
|
+
{
|
|
12420
|
+
onClick: () => setSortBy("size"),
|
|
12421
|
+
className: cn("text-xs cursor-pointer", sortBy === "size" && "font-bold text-primary"),
|
|
12422
|
+
children: "File Size"
|
|
12423
|
+
}
|
|
12424
|
+
),
|
|
12425
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(DropdownMenuSeparator, {}),
|
|
12426
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12427
|
+
DropdownMenuItem,
|
|
12428
|
+
{
|
|
12429
|
+
onClick: () => setSortOrder((prev) => prev === "asc" ? "desc" : "asc"),
|
|
12430
|
+
className: "text-xs cursor-pointer",
|
|
12431
|
+
children: [
|
|
12432
|
+
"Order: ",
|
|
12433
|
+
sortOrder === "asc" ? "Ascending \u2191" : "Descending \u2193"
|
|
12434
|
+
]
|
|
12435
|
+
}
|
|
12436
|
+
)
|
|
12437
|
+
] })
|
|
12438
|
+
] }),
|
|
12439
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center rounded-xl bg-muted/50 p-0.5 border border-border/60", children: [
|
|
12440
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12441
|
+
"button",
|
|
12442
|
+
{
|
|
12443
|
+
type: "button",
|
|
12444
|
+
onClick: () => setViewMode("grid"),
|
|
12445
|
+
className: cn(
|
|
12446
|
+
"flex h-7 w-7 items-center justify-center rounded-lg transition-all cursor-pointer",
|
|
12447
|
+
viewMode === "grid" ? "bg-background text-foreground shadow-2xs font-bold" : "text-muted-foreground hover:text-foreground"
|
|
12448
|
+
),
|
|
12449
|
+
title: "Grid View",
|
|
12450
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.LayoutGrid, { className: "h-3.5 w-3.5" })
|
|
12451
|
+
}
|
|
12452
|
+
),
|
|
12453
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12454
|
+
"button",
|
|
12455
|
+
{
|
|
12456
|
+
type: "button",
|
|
12457
|
+
onClick: () => setViewMode("table"),
|
|
12458
|
+
className: cn(
|
|
12459
|
+
"flex h-7 w-7 items-center justify-center rounded-lg transition-all cursor-pointer",
|
|
12460
|
+
viewMode === "table" ? "bg-background text-foreground shadow-2xs font-bold" : "text-muted-foreground hover:text-foreground"
|
|
12461
|
+
),
|
|
12462
|
+
title: "Table View",
|
|
12463
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Table, { className: "h-3.5 w-3.5" })
|
|
12464
|
+
}
|
|
12465
|
+
)
|
|
12466
|
+
] })
|
|
12467
|
+
] })
|
|
12468
|
+
] }),
|
|
12469
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "flex items-center gap-1.5 overflow-x-auto scrollbar-none pb-0.5", children: CATEGORY_TABS.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12470
|
+
"button",
|
|
12471
|
+
{
|
|
12472
|
+
type: "button",
|
|
12473
|
+
onClick: () => {
|
|
12474
|
+
setSelectedCategory(tab.value);
|
|
12475
|
+
setCurrentPage(1);
|
|
12476
|
+
},
|
|
12477
|
+
className: cn(
|
|
12478
|
+
"rounded-lg px-2.5 py-1 text-xs font-semibold whitespace-nowrap transition-all duration-200 cursor-pointer border",
|
|
12479
|
+
selectedCategory === tab.value ? "bg-indigo-600 text-white border-indigo-600 shadow-2xs" : "bg-background border-border/80 text-muted-foreground hover:text-foreground hover:bg-muted/40"
|
|
12480
|
+
),
|
|
12481
|
+
children: tab.label
|
|
12482
|
+
},
|
|
12483
|
+
tab.value
|
|
12484
|
+
)) })
|
|
12485
|
+
] }),
|
|
12486
|
+
selectedIds.size > 0 && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between bg-indigo-500/10 border-b border-indigo-200/40 px-4 py-2 text-xs", children: [
|
|
12487
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "font-semibold text-indigo-700 dark:text-indigo-300", children: [
|
|
12488
|
+
selectedIds.size,
|
|
12489
|
+
" files selected"
|
|
12490
|
+
] }),
|
|
12491
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12492
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12493
|
+
Button,
|
|
12494
|
+
{
|
|
12495
|
+
size: "sm",
|
|
12496
|
+
variant: "outline",
|
|
12497
|
+
onClick: handleBulkDownload,
|
|
12498
|
+
className: "h-7 text-xs gap-1 bg-background",
|
|
12499
|
+
children: [
|
|
12500
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Download, { className: "h-3 w-3" }),
|
|
12501
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: "Download" })
|
|
12502
|
+
]
|
|
12503
|
+
}
|
|
12504
|
+
),
|
|
12505
|
+
onDeleteFile && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
12506
|
+
Button,
|
|
12507
|
+
{
|
|
12508
|
+
size: "sm",
|
|
12509
|
+
variant: "destructive",
|
|
12510
|
+
onClick: handleBulkDelete,
|
|
12511
|
+
className: "h-7 text-xs gap-1",
|
|
12512
|
+
children: [
|
|
12513
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Trash2, { className: "h-3 w-3" }),
|
|
12514
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: "Delete" })
|
|
12515
|
+
]
|
|
12516
|
+
}
|
|
12517
|
+
),
|
|
12518
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12519
|
+
Button,
|
|
12520
|
+
{
|
|
12521
|
+
size: "sm",
|
|
12522
|
+
variant: "ghost",
|
|
12523
|
+
onClick: () => setSelectedIds(/* @__PURE__ */ new Set()),
|
|
12524
|
+
className: "h-7 text-xs",
|
|
12525
|
+
children: "Clear"
|
|
12526
|
+
}
|
|
12527
|
+
)
|
|
12528
|
+
] })
|
|
12529
|
+
] }),
|
|
12530
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: paginatedFiles.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex h-64 flex-col items-center justify-center gap-3 text-center text-muted-foreground border-2 border-dashed border-border/60 rounded-2xl bg-muted/5 p-8", children: [
|
|
12531
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.FolderOpen, { className: "h-10 w-10 text-muted-foreground/40" }),
|
|
12532
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { children: [
|
|
12533
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("p", { className: "text-sm font-bold text-foreground", children: "No files found" }),
|
|
12534
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("p", { className: "text-xs text-muted-foreground mt-0.5", children: searchQuery ? "No documents match your search criteria" : "This folder is currently empty. Upload your first document." })
|
|
12535
|
+
] }),
|
|
12536
|
+
onUploadClick && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Button, { size: "sm", onClick: onUploadClick, className: "gap-1.5 text-xs mt-2", children: [
|
|
12537
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.Upload, { className: "h-3.5 w-3.5" }),
|
|
12538
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { children: "Upload New File" })
|
|
12539
|
+
] })
|
|
12540
|
+
] }) : viewMode === "grid" ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3.5", children: paginatedFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12541
|
+
FileCardItem,
|
|
12542
|
+
{
|
|
12543
|
+
file,
|
|
12544
|
+
isSelected: file.id === selectedFileId || selectedIds.has(file.id),
|
|
12545
|
+
viewMode: "grid",
|
|
12546
|
+
onSelect: () => onSelectFileForPreview?.(file),
|
|
12547
|
+
onPreview: () => onSelectFileForPreview?.(file),
|
|
12548
|
+
onDownload: () => onDownloadFile?.(file),
|
|
12549
|
+
onCopyLink: () => onCopyLink?.(file),
|
|
12550
|
+
onRename: () => onRenameFile?.(file),
|
|
12551
|
+
onDelete: () => onDeleteFile?.(file),
|
|
12552
|
+
onShare: () => onShareFile?.(file)
|
|
12553
|
+
},
|
|
12554
|
+
file.id
|
|
12555
|
+
)) }) : /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "overflow-hidden rounded-2xl border border-border/80 bg-card shadow-2xs", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("table", { className: "w-full text-left text-xs border-collapse", children: [
|
|
12556
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("thead", { className: "border-b border-border/80 bg-muted/30 text-muted-foreground font-bold", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("tr", { children: [
|
|
12557
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("th", { className: "py-2.5 px-4", children: "Name" }),
|
|
12558
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("th", { className: "py-2.5 px-4", children: "Category" }),
|
|
12559
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("th", { className: "py-2.5 px-4", children: "Size" }),
|
|
12560
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("th", { className: "py-2.5 px-4 hidden sm:table-cell", children: "Updated" }),
|
|
12561
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("th", { className: "py-2.5 px-4 text-right", children: "Actions" })
|
|
12562
|
+
] }) }),
|
|
12563
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("tbody", { children: paginatedFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12564
|
+
FileCardItem,
|
|
12565
|
+
{
|
|
12566
|
+
file,
|
|
12567
|
+
isSelected: file.id === selectedFileId || selectedIds.has(file.id),
|
|
12568
|
+
viewMode: "table",
|
|
12569
|
+
onSelect: () => onSelectFileForPreview?.(file),
|
|
12570
|
+
onPreview: () => onSelectFileForPreview?.(file),
|
|
12571
|
+
onDownload: () => onDownloadFile?.(file),
|
|
12572
|
+
onCopyLink: () => onCopyLink?.(file),
|
|
12573
|
+
onRename: () => onRenameFile?.(file),
|
|
12574
|
+
onDelete: () => onDeleteFile?.(file),
|
|
12575
|
+
onShare: () => onShareFile?.(file)
|
|
12576
|
+
},
|
|
12577
|
+
file.id
|
|
12578
|
+
)) })
|
|
12579
|
+
] }) }) }),
|
|
12580
|
+
totalPages > 1 && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between border-t border-border bg-background px-4 py-2.5 shrink-0 text-xs text-muted-foreground", children: [
|
|
12581
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { children: [
|
|
12582
|
+
"Showing ",
|
|
12583
|
+
(currentPage - 1) * itemsPerPage + 1,
|
|
12584
|
+
" -",
|
|
12585
|
+
" ",
|
|
12586
|
+
Math.min(currentPage * itemsPerPage, sortedFiles.length),
|
|
12587
|
+
" of ",
|
|
12588
|
+
sortedFiles.length
|
|
12589
|
+
] }),
|
|
12590
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
12591
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12592
|
+
Button,
|
|
12593
|
+
{
|
|
12594
|
+
variant: "outline",
|
|
12595
|
+
size: "sm",
|
|
12596
|
+
onClick: () => setCurrentPage((p) => Math.max(1, p - 1)),
|
|
12597
|
+
disabled: currentPage === 1,
|
|
12598
|
+
className: "h-7 w-7 p-0 rounded-lg",
|
|
12599
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.ChevronLeft, { className: "h-3.5 w-3.5" })
|
|
12600
|
+
}
|
|
12601
|
+
),
|
|
12602
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "px-2 font-mono font-bold text-foreground", children: [
|
|
12603
|
+
currentPage,
|
|
12604
|
+
" / ",
|
|
12605
|
+
totalPages
|
|
12606
|
+
] }),
|
|
12607
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
12608
|
+
Button,
|
|
12609
|
+
{
|
|
12610
|
+
variant: "outline",
|
|
12611
|
+
size: "sm",
|
|
12612
|
+
onClick: () => setCurrentPage((p) => Math.min(totalPages, p + 1)),
|
|
12613
|
+
disabled: currentPage === totalPages,
|
|
12614
|
+
className: "h-7 w-7 p-0 rounded-lg",
|
|
12615
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react52.ChevronRight, { className: "h-3.5 w-3.5" })
|
|
12616
|
+
}
|
|
12617
|
+
)
|
|
12618
|
+
] })
|
|
12619
|
+
] })
|
|
12620
|
+
]
|
|
12621
|
+
}
|
|
12622
|
+
);
|
|
12623
|
+
}
|
|
12624
|
+
|
|
12625
|
+
// src/design-system/components/files/file-upload-form.tsx
|
|
12626
|
+
var import_react19 = require("react");
|
|
12627
|
+
var import_lucide_react53 = require("lucide-react");
|
|
12628
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
12629
|
+
var TEMPLATE_OPTIONS = [
|
|
12630
|
+
{ id: "1", name: "Standard Document" },
|
|
12631
|
+
{ id: "2", name: "Financial Invoice" },
|
|
12632
|
+
{ id: "3", name: "Report & Spreadsheet" },
|
|
12633
|
+
{ id: "4", name: "Contract & Legal" }
|
|
12634
|
+
];
|
|
12635
|
+
var FOLDER_OPTIONS = ["Finance", "Chat", "Files", "Email", "AI Chat", "Order"];
|
|
12636
|
+
var SUB_FOLDER_OPTIONS = [
|
|
12637
|
+
"Pdf",
|
|
12638
|
+
"Doc",
|
|
12639
|
+
"Xls",
|
|
12640
|
+
"Images",
|
|
12641
|
+
"Videos",
|
|
12642
|
+
"Ppt",
|
|
12643
|
+
"Txt",
|
|
12644
|
+
"Csv",
|
|
12645
|
+
"Zip",
|
|
12646
|
+
"Other"
|
|
12647
|
+
];
|
|
12648
|
+
function FileUploadForm({
|
|
12649
|
+
userEmail,
|
|
12650
|
+
folders,
|
|
12651
|
+
initialSubject = "",
|
|
12652
|
+
initialFolder = "Finance",
|
|
12653
|
+
initialSubFolder = "Pdf",
|
|
12654
|
+
onClose,
|
|
12655
|
+
onSave,
|
|
12656
|
+
onUploadSuccess,
|
|
12657
|
+
onPreviewAttachment,
|
|
12658
|
+
className
|
|
12659
|
+
}) {
|
|
12660
|
+
const [template, setTemplate] = (0, import_react19.useState)(TEMPLATE_OPTIONS[0].id);
|
|
12661
|
+
const [subject, setSubject] = (0, import_react19.useState)(initialSubject);
|
|
12662
|
+
const [folder, setFolder] = (0, import_react19.useState)(initialFolder);
|
|
12663
|
+
const [subFolder, setSubFolder] = (0, import_react19.useState)(initialSubFolder);
|
|
12664
|
+
const [remarks, setRemarks] = (0, import_react19.useState)("");
|
|
12665
|
+
const [body, setBody] = (0, import_react19.useState)("");
|
|
12666
|
+
const [attachments, setAttachments] = (0, import_react19.useState)([]);
|
|
12667
|
+
const [isSaving, setIsSaving] = (0, import_react19.useState)(false);
|
|
12668
|
+
const fileInputRef = (0, import_react19.useRef)(null);
|
|
12669
|
+
const handleFileChange = (e) => {
|
|
12670
|
+
const files = e.target.files;
|
|
12671
|
+
if (!files || files.length === 0) return;
|
|
12672
|
+
const newAttachments = Array.from(files).map((f) => ({
|
|
12673
|
+
id: `att-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
12674
|
+
name: f.name,
|
|
12675
|
+
type: f.type || "application/octet-stream",
|
|
12676
|
+
size: formatBytes(f.size),
|
|
12677
|
+
url: URL.createObjectURL(f),
|
|
12678
|
+
fileObj: f,
|
|
12679
|
+
progress: 100
|
|
12680
|
+
}));
|
|
12681
|
+
setAttachments((prev) => [...prev, ...newAttachments]);
|
|
12682
|
+
if (fileInputRef.current) fileInputRef.current.value = "";
|
|
12683
|
+
};
|
|
12684
|
+
const handleRemoveAttachment = (id) => {
|
|
12685
|
+
setAttachments((prev) => prev.filter((a) => a.id !== id));
|
|
12686
|
+
};
|
|
12687
|
+
const handleFormSubmit = async (e) => {
|
|
12688
|
+
e.preventDefault();
|
|
12689
|
+
setIsSaving(true);
|
|
12690
|
+
try {
|
|
12691
|
+
if (onSave) {
|
|
12692
|
+
await onSave({
|
|
12693
|
+
subject,
|
|
12694
|
+
folder,
|
|
12695
|
+
subFolder,
|
|
12696
|
+
remarks,
|
|
12697
|
+
body,
|
|
12698
|
+
attachments
|
|
12699
|
+
});
|
|
12700
|
+
}
|
|
12701
|
+
onUploadSuccess?.();
|
|
12702
|
+
} finally {
|
|
12703
|
+
setIsSaving(false);
|
|
12704
|
+
}
|
|
12705
|
+
};
|
|
12706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
12707
|
+
"div",
|
|
12708
|
+
{
|
|
12709
|
+
className: cn(
|
|
12710
|
+
"flex h-full min-h-0 w-full flex-1 flex-col overflow-hidden bg-background select-none",
|
|
12711
|
+
className
|
|
12712
|
+
),
|
|
12713
|
+
children: [
|
|
12714
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center justify-between border-b border-border bg-background px-4 py-3 shrink-0", children: [
|
|
12715
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-2.5 min-w-0", children: [
|
|
12716
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12717
|
+
"button",
|
|
12718
|
+
{
|
|
12719
|
+
type: "button",
|
|
12720
|
+
onClick: onClose,
|
|
12721
|
+
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",
|
|
12722
|
+
title: "Back",
|
|
12723
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.ArrowLeft, { className: "h-4 w-4" })
|
|
12724
|
+
}
|
|
12725
|
+
),
|
|
12726
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.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 shrink-0 shadow-2xs", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.FileText, { className: "h-5 w-5" }) }),
|
|
12727
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "min-w-0", children: [
|
|
12728
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h2", { className: "truncate text-sm font-bold text-foreground tracking-tight", children: "Create & Upload Document" }),
|
|
12729
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "truncate text-xs text-muted-foreground", children: "Add metadata, descriptions, and attach files to your cloud storage" })
|
|
12730
|
+
] })
|
|
12731
|
+
] }),
|
|
12732
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-2 shrink-0", children: [
|
|
12733
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Button, { variant: "ghost", size: "sm", onClick: onClose, className: "h-8 text-xs", children: "Cancel" }),
|
|
12734
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
12735
|
+
Button,
|
|
12736
|
+
{
|
|
12737
|
+
size: "sm",
|
|
12738
|
+
onClick: handleFormSubmit,
|
|
12739
|
+
disabled: isSaving || !subject && attachments.length === 0,
|
|
12740
|
+
className: "h-8 gap-1.5 text-xs font-semibold shadow-xs bg-indigo-600 hover:bg-indigo-700 text-white",
|
|
12741
|
+
children: [
|
|
12742
|
+
isSaving ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Loader2, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Save, { className: "h-3.5 w-3.5" }),
|
|
12743
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Save & Upload" })
|
|
12744
|
+
]
|
|
12745
|
+
}
|
|
12746
|
+
)
|
|
12747
|
+
] })
|
|
12748
|
+
] }),
|
|
12749
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "min-h-0 flex-1 overflow-y-auto p-4 space-y-4", children: [
|
|
12750
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3 p-3.5 rounded-2xl border border-border/80 bg-muted/10", children: [
|
|
12751
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12752
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Document Template" }),
|
|
12753
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Select, { value: template, onValueChange: setTemplate, children: [
|
|
12754
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectTrigger, { className: "h-8.5 text-xs rounded-xl bg-background border-border/80", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectValue, { placeholder: "Select template" }) }),
|
|
12755
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectContent, { className: "rounded-xl shadow-lg", children: TEMPLATE_OPTIONS.map((t) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectItem, { value: t.id, className: "text-xs", children: t.name }, t.id)) })
|
|
12756
|
+
] })
|
|
12757
|
+
] }),
|
|
12758
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12759
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Target Space" }),
|
|
12760
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Select, { value: folder, onValueChange: setFolder, children: [
|
|
12761
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectTrigger, { className: "h-8.5 text-xs rounded-xl bg-background border-border/80", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectValue, { placeholder: "Select space" }) }),
|
|
12762
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectContent, { className: "rounded-xl shadow-lg", children: (folders || FOLDER_OPTIONS.map((f) => ({ id: f, name: f }))).map((f) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectItem, { value: f.name, className: "text-xs", children: f.name }, f.id)) })
|
|
12763
|
+
] })
|
|
12764
|
+
] }),
|
|
12765
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12766
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Category Subfolder" }),
|
|
12767
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Select, { value: subFolder, onValueChange: setSubFolder, children: [
|
|
12768
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectTrigger, { className: "h-8.5 text-xs rounded-xl bg-background border-border/80", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectValue, { placeholder: "Select category" }) }),
|
|
12769
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectContent, { className: "rounded-xl shadow-lg", children: SUB_FOLDER_OPTIONS.map((cat) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SelectItem, { value: cat, className: "text-xs", children: cat }, cat)) })
|
|
12770
|
+
] })
|
|
12771
|
+
] })
|
|
12772
|
+
] }),
|
|
12773
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12774
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Document Title / Subject" }),
|
|
12775
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12776
|
+
Input,
|
|
12777
|
+
{
|
|
12778
|
+
value: subject,
|
|
12779
|
+
onChange: (e) => setSubject(e.target.value),
|
|
12780
|
+
placeholder: "e.g. Q3 Sales & Performance Report",
|
|
12781
|
+
className: "h-9 text-xs rounded-xl bg-background border-border/80"
|
|
12782
|
+
}
|
|
12783
|
+
)
|
|
12784
|
+
] }),
|
|
12785
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12786
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Document Content / Notes" }),
|
|
12787
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "rounded-2xl border border-border/80 overflow-hidden bg-background", children: [
|
|
12788
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-1 border-b border-border/60 bg-muted/20 p-1.5", children: [
|
|
12789
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12790
|
+
"button",
|
|
12791
|
+
{
|
|
12792
|
+
type: "button",
|
|
12793
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground",
|
|
12794
|
+
title: "Bold",
|
|
12795
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Bold, { className: "h-3.5 w-3.5" })
|
|
12796
|
+
}
|
|
12797
|
+
),
|
|
12798
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12799
|
+
"button",
|
|
12800
|
+
{
|
|
12801
|
+
type: "button",
|
|
12802
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground",
|
|
12803
|
+
title: "Italic",
|
|
12804
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Italic, { className: "h-3.5 w-3.5" })
|
|
12805
|
+
}
|
|
12806
|
+
),
|
|
12807
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12808
|
+
"button",
|
|
12809
|
+
{
|
|
12810
|
+
type: "button",
|
|
12811
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground",
|
|
12812
|
+
title: "Underline",
|
|
12813
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Underline, { className: "h-3.5 w-3.5" })
|
|
12814
|
+
}
|
|
12815
|
+
),
|
|
12816
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "h-4 w-px bg-border/80 mx-1" }),
|
|
12817
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12818
|
+
"button",
|
|
12819
|
+
{
|
|
12820
|
+
type: "button",
|
|
12821
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground",
|
|
12822
|
+
title: "Bullet List",
|
|
12823
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.List, { className: "h-3.5 w-3.5" })
|
|
12824
|
+
}
|
|
12825
|
+
),
|
|
12826
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12827
|
+
"button",
|
|
12828
|
+
{
|
|
12829
|
+
type: "button",
|
|
12830
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground",
|
|
12831
|
+
title: "Numbered List",
|
|
12832
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.ListOrdered, { className: "h-3.5 w-3.5" })
|
|
12833
|
+
}
|
|
12834
|
+
),
|
|
12835
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "h-4 w-px bg-border/80 mx-1" }),
|
|
12836
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
12837
|
+
"button",
|
|
12838
|
+
{
|
|
12839
|
+
type: "button",
|
|
12840
|
+
onClick: () => fileInputRef.current?.click(),
|
|
12841
|
+
className: "p-1.5 rounded-lg hover:bg-muted text-indigo-600 dark:text-indigo-400 font-semibold flex items-center gap-1 text-xs",
|
|
12842
|
+
title: "Attach Files",
|
|
12843
|
+
children: [
|
|
12844
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Paperclip, { className: "h-3.5 w-3.5" }),
|
|
12845
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Attach" })
|
|
12846
|
+
]
|
|
12847
|
+
}
|
|
12848
|
+
)
|
|
12849
|
+
] }),
|
|
12850
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12851
|
+
"textarea",
|
|
12852
|
+
{
|
|
12853
|
+
value: body,
|
|
12854
|
+
onChange: (e) => setBody(e.target.value),
|
|
12855
|
+
placeholder: "Write or paste your document notes and text here...",
|
|
12856
|
+
rows: 4,
|
|
12857
|
+
className: "w-full p-3 text-xs bg-transparent border-0 focus:outline-hidden resize-y min-h-[90px]"
|
|
12858
|
+
}
|
|
12859
|
+
)
|
|
12860
|
+
] })
|
|
12861
|
+
] }),
|
|
12862
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-2", children: [
|
|
12863
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
12864
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Label, { className: "text-xs font-semibold text-foreground", children: [
|
|
12865
|
+
"Attachments (",
|
|
12866
|
+
attachments.length,
|
|
12867
|
+
")"
|
|
12868
|
+
] }),
|
|
12869
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12870
|
+
"input",
|
|
12871
|
+
{
|
|
12872
|
+
type: "file",
|
|
12873
|
+
multiple: true,
|
|
12874
|
+
ref: fileInputRef,
|
|
12875
|
+
onChange: handleFileChange,
|
|
12876
|
+
className: "hidden"
|
|
12877
|
+
}
|
|
12878
|
+
),
|
|
12879
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
12880
|
+
Button,
|
|
12881
|
+
{
|
|
12882
|
+
type: "button",
|
|
12883
|
+
variant: "outline",
|
|
12884
|
+
size: "sm",
|
|
12885
|
+
onClick: () => fileInputRef.current?.click(),
|
|
12886
|
+
className: "h-7 text-xs gap-1.5 rounded-xl border-dashed",
|
|
12887
|
+
children: [
|
|
12888
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Paperclip, { className: "h-3 w-3" }),
|
|
12889
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Browse Files" })
|
|
12890
|
+
]
|
|
12891
|
+
}
|
|
12892
|
+
)
|
|
12893
|
+
] }),
|
|
12894
|
+
attachments.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
12895
|
+
"div",
|
|
12896
|
+
{
|
|
12897
|
+
onClick: () => fileInputRef.current?.click(),
|
|
12898
|
+
className: "flex flex-col items-center justify-center gap-2 p-6 border-2 border-dashed border-border/80 rounded-2xl bg-muted/10 text-muted-foreground hover:border-indigo-400 hover:bg-indigo-50/20 dark:hover:bg-indigo-950/20 transition-all cursor-pointer text-center",
|
|
12899
|
+
children: [
|
|
12900
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.UploadCloud, { className: "h-8 w-8 text-indigo-500" }),
|
|
12901
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { children: [
|
|
12902
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "text-xs font-bold text-foreground", children: "Click to upload or drag and drop" }),
|
|
12903
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "text-[11px] text-muted-foreground mt-0.5", children: "PDF, DOCX, XLSX, PNG, JPG, MP4 or ZIP up to 50MB" })
|
|
12904
|
+
] })
|
|
12905
|
+
]
|
|
12906
|
+
}
|
|
12907
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2", children: attachments.map((att) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
12908
|
+
"div",
|
|
12909
|
+
{
|
|
12910
|
+
className: "flex items-center justify-between gap-2 p-2.5 rounded-xl border border-border/80 bg-card shadow-2xs",
|
|
12911
|
+
children: [
|
|
12912
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-2.5 min-w-0", children: [
|
|
12913
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-indigo-500/10 text-indigo-600 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.FileText, { className: "h-4 w-4" }) }),
|
|
12914
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "min-w-0", children: [
|
|
12915
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "truncate text-xs font-semibold text-foreground", children: att.name }),
|
|
12916
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "text-[10px] text-muted-foreground font-mono", children: att.size })
|
|
12917
|
+
] })
|
|
12918
|
+
] }),
|
|
12919
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-1 shrink-0", children: [
|
|
12920
|
+
onPreviewAttachment && att.url && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12921
|
+
"button",
|
|
12922
|
+
{
|
|
12923
|
+
type: "button",
|
|
12924
|
+
onClick: () => onPreviewAttachment({ name: att.name, url: att.url }),
|
|
12925
|
+
className: "p-1 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground",
|
|
12926
|
+
title: "Preview",
|
|
12927
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.Eye, { className: "h-3.5 w-3.5" })
|
|
12928
|
+
}
|
|
12929
|
+
),
|
|
12930
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12931
|
+
"button",
|
|
12932
|
+
{
|
|
12933
|
+
type: "button",
|
|
12934
|
+
onClick: () => handleRemoveAttachment(att.id),
|
|
12935
|
+
className: "p-1 rounded-lg hover:bg-rose-50 dark:hover:bg-rose-950/30 text-rose-500 hover:text-rose-600",
|
|
12936
|
+
title: "Remove",
|
|
12937
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react53.X, { className: "h-3.5 w-3.5" })
|
|
12938
|
+
}
|
|
12939
|
+
)
|
|
12940
|
+
] })
|
|
12941
|
+
]
|
|
12942
|
+
},
|
|
12943
|
+
att.id
|
|
12944
|
+
)) })
|
|
12945
|
+
] }),
|
|
12946
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "space-y-1.5", children: [
|
|
12947
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Label, { className: "text-xs font-semibold text-foreground", children: "Remarks / Tags" }),
|
|
12948
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
12949
|
+
Input,
|
|
12950
|
+
{
|
|
12951
|
+
value: remarks,
|
|
12952
|
+
onChange: (e) => setRemarks(e.target.value),
|
|
12953
|
+
placeholder: "e.g. Confidential, Q3 Approved, Client Copy",
|
|
12954
|
+
className: "h-8.5 text-xs rounded-xl bg-background border-border/80"
|
|
12955
|
+
}
|
|
12956
|
+
)
|
|
12957
|
+
] })
|
|
12958
|
+
] })
|
|
12959
|
+
]
|
|
12960
|
+
}
|
|
12961
|
+
);
|
|
12962
|
+
}
|
|
12963
|
+
|
|
11385
12964
|
// src/design-system/templates/list-template.tsx
|
|
11386
|
-
var
|
|
12965
|
+
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
11387
12966
|
function ListTemplate({
|
|
11388
12967
|
title,
|
|
11389
12968
|
description,
|
|
@@ -11403,8 +12982,8 @@ function ListTemplate({
|
|
|
11403
12982
|
...props
|
|
11404
12983
|
}) {
|
|
11405
12984
|
const hasFilterBar = Boolean(onSearchChange) || Boolean(filters) || activeFilters && activeFilters.length > 0 || Boolean(filterActions);
|
|
11406
|
-
return /* @__PURE__ */ (0,
|
|
11407
|
-
/* @__PURE__ */ (0,
|
|
12985
|
+
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: [
|
|
12986
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
11408
12987
|
PageHeader,
|
|
11409
12988
|
{
|
|
11410
12989
|
title,
|
|
@@ -11414,7 +12993,7 @@ function ListTemplate({
|
|
|
11414
12993
|
actions
|
|
11415
12994
|
}
|
|
11416
12995
|
),
|
|
11417
|
-
hasFilterBar && /* @__PURE__ */ (0,
|
|
12996
|
+
hasFilterBar && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
11418
12997
|
FilterBar,
|
|
11419
12998
|
{
|
|
11420
12999
|
searchPlaceholder,
|
|
@@ -11426,14 +13005,14 @@ function ListTemplate({
|
|
|
11426
13005
|
actions: filterActions
|
|
11427
13006
|
}
|
|
11428
13007
|
),
|
|
11429
|
-
/* @__PURE__ */ (0,
|
|
11430
|
-
footer && /* @__PURE__ */ (0,
|
|
13008
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "flex-1", children }),
|
|
13009
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "pt-2", children: footer })
|
|
11431
13010
|
] });
|
|
11432
13011
|
}
|
|
11433
13012
|
|
|
11434
13013
|
// src/design-system/templates/detail-template.tsx
|
|
11435
|
-
var
|
|
11436
|
-
var
|
|
13014
|
+
var import_lucide_react54 = require("lucide-react");
|
|
13015
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
11437
13016
|
function DetailTemplate({
|
|
11438
13017
|
title,
|
|
11439
13018
|
description,
|
|
@@ -11448,9 +13027,9 @@ function DetailTemplate({
|
|
|
11448
13027
|
className,
|
|
11449
13028
|
...props
|
|
11450
13029
|
}) {
|
|
11451
|
-
return /* @__PURE__ */ (0,
|
|
11452
|
-
/* @__PURE__ */ (0,
|
|
11453
|
-
onBack && /* @__PURE__ */ (0,
|
|
13030
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
|
|
13031
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
13032
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
11454
13033
|
Button,
|
|
11455
13034
|
{
|
|
11456
13035
|
variant: "ghost",
|
|
@@ -11458,12 +13037,12 @@ function DetailTemplate({
|
|
|
11458
13037
|
onClick: onBack,
|
|
11459
13038
|
className: "w-fit gap-1.5 px-0 text-xs text-muted-foreground hover:bg-transparent hover:text-foreground",
|
|
11460
13039
|
children: [
|
|
11461
|
-
/* @__PURE__ */ (0,
|
|
13040
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react54.ArrowLeft, { className: "h-3.5 w-3.5" }),
|
|
11462
13041
|
backLabel
|
|
11463
13042
|
]
|
|
11464
13043
|
}
|
|
11465
13044
|
),
|
|
11466
|
-
/* @__PURE__ */ (0,
|
|
13045
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
11467
13046
|
PageHeader,
|
|
11468
13047
|
{
|
|
11469
13048
|
title,
|
|
@@ -11474,8 +13053,8 @@ function DetailTemplate({
|
|
|
11474
13053
|
}
|
|
11475
13054
|
)
|
|
11476
13055
|
] }),
|
|
11477
|
-
highlights && /* @__PURE__ */ (0,
|
|
11478
|
-
/* @__PURE__ */ (0,
|
|
13056
|
+
highlights && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: highlights }),
|
|
13057
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
11479
13058
|
"div",
|
|
11480
13059
|
{
|
|
11481
13060
|
className: cn(
|
|
@@ -11483,8 +13062,8 @@ function DetailTemplate({
|
|
|
11483
13062
|
sidebar ? "grid-cols-1 lg:grid-cols-3" : "grid-cols-1"
|
|
11484
13063
|
),
|
|
11485
13064
|
children: [
|
|
11486
|
-
/* @__PURE__ */ (0,
|
|
11487
|
-
sidebar && /* @__PURE__ */ (0,
|
|
13065
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: cn(sidebar ? "lg:col-span-2 space-y-6" : "space-y-6"), children }),
|
|
13066
|
+
sidebar && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("aside", { className: "space-y-6 lg:col-span-1", children: sidebar })
|
|
11488
13067
|
]
|
|
11489
13068
|
}
|
|
11490
13069
|
)
|
|
@@ -11492,8 +13071,8 @@ function DetailTemplate({
|
|
|
11492
13071
|
}
|
|
11493
13072
|
|
|
11494
13073
|
// src/design-system/templates/form-template.tsx
|
|
11495
|
-
var
|
|
11496
|
-
var
|
|
13074
|
+
var import_lucide_react55 = require("lucide-react");
|
|
13075
|
+
var import_jsx_runtime102 = require("react/jsx-runtime");
|
|
11497
13076
|
function FormTemplate({
|
|
11498
13077
|
title,
|
|
11499
13078
|
description,
|
|
@@ -11512,9 +13091,9 @@ function FormTemplate({
|
|
|
11512
13091
|
onSubmit,
|
|
11513
13092
|
...props
|
|
11514
13093
|
}) {
|
|
11515
|
-
return /* @__PURE__ */ (0,
|
|
11516
|
-
/* @__PURE__ */ (0,
|
|
11517
|
-
onBack && /* @__PURE__ */ (0,
|
|
13094
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex flex-col gap-6 p-4 sm:p-6 md:p-8", children: [
|
|
13095
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
13096
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
11518
13097
|
Button,
|
|
11519
13098
|
{
|
|
11520
13099
|
type: "button",
|
|
@@ -11523,12 +13102,12 @@ function FormTemplate({
|
|
|
11523
13102
|
onClick: onBack,
|
|
11524
13103
|
className: "w-fit gap-1.5 px-0 text-xs text-muted-foreground hover:bg-transparent hover:text-foreground",
|
|
11525
13104
|
children: [
|
|
11526
|
-
/* @__PURE__ */ (0,
|
|
13105
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react55.ArrowLeft, { className: "h-3.5 w-3.5" }),
|
|
11527
13106
|
backLabel
|
|
11528
13107
|
]
|
|
11529
13108
|
}
|
|
11530
13109
|
),
|
|
11531
|
-
/* @__PURE__ */ (0,
|
|
13110
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
11532
13111
|
PageHeader,
|
|
11533
13112
|
{
|
|
11534
13113
|
title,
|
|
@@ -11538,9 +13117,9 @@ function FormTemplate({
|
|
|
11538
13117
|
}
|
|
11539
13118
|
)
|
|
11540
13119
|
] }),
|
|
11541
|
-
/* @__PURE__ */ (0,
|
|
11542
|
-
/* @__PURE__ */ (0,
|
|
11543
|
-
/* @__PURE__ */ (0,
|
|
13120
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("form", { onSubmit, className: cn("space-y-8", className), ...props, children: [
|
|
13121
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "space-y-6", children }),
|
|
13122
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
|
|
11544
13123
|
"div",
|
|
11545
13124
|
{
|
|
11546
13125
|
className: cn(
|
|
@@ -11548,9 +13127,9 @@ function FormTemplate({
|
|
|
11548
13127
|
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
13128
|
),
|
|
11550
13129
|
children: [
|
|
11551
|
-
/* @__PURE__ */ (0,
|
|
11552
|
-
/* @__PURE__ */ (0,
|
|
11553
|
-
onCancel && /* @__PURE__ */ (0,
|
|
13130
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { children: secondaryActions }),
|
|
13131
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
13132
|
+
onCancel && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
11554
13133
|
Button,
|
|
11555
13134
|
{
|
|
11556
13135
|
type: "button",
|
|
@@ -11560,7 +13139,7 @@ function FormTemplate({
|
|
|
11560
13139
|
children: cancelLabel
|
|
11561
13140
|
}
|
|
11562
13141
|
),
|
|
11563
|
-
/* @__PURE__ */ (0,
|
|
13142
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Button, { type: "submit", disabled: isSubmitting, children: isSubmitting ? "Saving..." : submitLabel })
|
|
11564
13143
|
] })
|
|
11565
13144
|
]
|
|
11566
13145
|
}
|
|
@@ -11570,8 +13149,8 @@ function FormTemplate({
|
|
|
11570
13149
|
}
|
|
11571
13150
|
|
|
11572
13151
|
// src/design-system/templates/wizard-template.tsx
|
|
11573
|
-
var
|
|
11574
|
-
var
|
|
13152
|
+
var import_lucide_react56 = require("lucide-react");
|
|
13153
|
+
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
11575
13154
|
function WizardTemplate({
|
|
11576
13155
|
title,
|
|
11577
13156
|
description,
|
|
@@ -11592,18 +13171,18 @@ function WizardTemplate({
|
|
|
11592
13171
|
}) {
|
|
11593
13172
|
const isLastStep = currentStepIndex === steps.length - 1;
|
|
11594
13173
|
const isFirstStep = currentStepIndex === 0;
|
|
11595
|
-
return /* @__PURE__ */ (0,
|
|
11596
|
-
/* @__PURE__ */ (0,
|
|
11597
|
-
/* @__PURE__ */ (0,
|
|
13174
|
+
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: [
|
|
13175
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(PageHeader, { title, description }),
|
|
13176
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("nav", { "aria-label": "Wizard Progress", className: "py-2", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("ol", { className: "flex items-center justify-between gap-2 overflow-x-auto pb-2", children: steps.map((step, idx) => {
|
|
11598
13177
|
const isCompleted = idx < currentStepIndex;
|
|
11599
13178
|
const isCurrent = idx === currentStepIndex;
|
|
11600
13179
|
const isClickable = onStepChange && idx < currentStepIndex;
|
|
11601
|
-
return /* @__PURE__ */ (0,
|
|
13180
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
11602
13181
|
"li",
|
|
11603
13182
|
{
|
|
11604
13183
|
className: "flex flex-1 items-center gap-2.5 min-w-[120px]",
|
|
11605
13184
|
children: [
|
|
11606
|
-
/* @__PURE__ */ (0,
|
|
13185
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
11607
13186
|
"button",
|
|
11608
13187
|
{
|
|
11609
13188
|
type: "button",
|
|
@@ -11614,7 +13193,7 @@ function WizardTemplate({
|
|
|
11614
13193
|
isClickable && "cursor-pointer hover:opacity-80"
|
|
11615
13194
|
),
|
|
11616
13195
|
children: [
|
|
11617
|
-
/* @__PURE__ */ (0,
|
|
13196
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
11618
13197
|
"span",
|
|
11619
13198
|
{
|
|
11620
13199
|
className: cn(
|
|
@@ -11623,10 +13202,10 @@ function WizardTemplate({
|
|
|
11623
13202
|
isCurrent && "border-2 border-primary bg-primary/10 text-primary font-bold",
|
|
11624
13203
|
!isCompleted && !isCurrent && "border border-border bg-muted text-muted-foreground"
|
|
11625
13204
|
),
|
|
11626
|
-
children: isCompleted ? /* @__PURE__ */ (0,
|
|
13205
|
+
children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react56.Check, { className: "h-4 w-4" }) : idx + 1
|
|
11627
13206
|
}
|
|
11628
13207
|
),
|
|
11629
|
-
/* @__PURE__ */ (0,
|
|
13208
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "hidden sm:block", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
11630
13209
|
"div",
|
|
11631
13210
|
{
|
|
11632
13211
|
className: cn(
|
|
@@ -11639,7 +13218,7 @@ function WizardTemplate({
|
|
|
11639
13218
|
]
|
|
11640
13219
|
}
|
|
11641
13220
|
),
|
|
11642
|
-
idx < steps.length - 1 && /* @__PURE__ */ (0,
|
|
13221
|
+
idx < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
11643
13222
|
"div",
|
|
11644
13223
|
{
|
|
11645
13224
|
className: cn(
|
|
@@ -11653,9 +13232,9 @@ function WizardTemplate({
|
|
|
11653
13232
|
step.id
|
|
11654
13233
|
);
|
|
11655
13234
|
}) }) }),
|
|
11656
|
-
/* @__PURE__ */ (0,
|
|
11657
|
-
/* @__PURE__ */ (0,
|
|
11658
|
-
/* @__PURE__ */ (0,
|
|
13235
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "flex-1 rounded-lg border bg-card p-4 sm:p-6", children }),
|
|
13236
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex items-center justify-between pt-2", children: [
|
|
13237
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
11659
13238
|
Button,
|
|
11660
13239
|
{
|
|
11661
13240
|
type: "button",
|
|
@@ -11663,12 +13242,12 @@ function WizardTemplate({
|
|
|
11663
13242
|
disabled: isFirstStep || isSubmitting,
|
|
11664
13243
|
onClick: onPrevious,
|
|
11665
13244
|
children: [
|
|
11666
|
-
/* @__PURE__ */ (0,
|
|
13245
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react56.ChevronLeft, { className: "mr-1 h-4 w-4" }),
|
|
11667
13246
|
previousLabel
|
|
11668
13247
|
]
|
|
11669
13248
|
}
|
|
11670
13249
|
),
|
|
11671
|
-
isLastStep ? /* @__PURE__ */ (0,
|
|
13250
|
+
isLastStep ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
11672
13251
|
Button,
|
|
11673
13252
|
{
|
|
11674
13253
|
type: "button",
|
|
@@ -11676,7 +13255,7 @@ function WizardTemplate({
|
|
|
11676
13255
|
onClick: onSubmit,
|
|
11677
13256
|
children: isSubmitting ? "Submitting..." : submitLabel
|
|
11678
13257
|
}
|
|
11679
|
-
) : /* @__PURE__ */ (0,
|
|
13258
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
11680
13259
|
Button,
|
|
11681
13260
|
{
|
|
11682
13261
|
type: "button",
|
|
@@ -11684,7 +13263,7 @@ function WizardTemplate({
|
|
|
11684
13263
|
onClick: onNext,
|
|
11685
13264
|
children: [
|
|
11686
13265
|
nextLabel,
|
|
11687
|
-
/* @__PURE__ */ (0,
|
|
13266
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react56.ChevronRight, { className: "ml-1 h-4 w-4" })
|
|
11688
13267
|
]
|
|
11689
13268
|
}
|
|
11690
13269
|
)
|
|
@@ -11693,7 +13272,7 @@ function WizardTemplate({
|
|
|
11693
13272
|
}
|
|
11694
13273
|
|
|
11695
13274
|
// src/design-system/templates/dashboard-template.tsx
|
|
11696
|
-
var
|
|
13275
|
+
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
11697
13276
|
function DashboardTemplate({
|
|
11698
13277
|
title,
|
|
11699
13278
|
description,
|
|
@@ -11707,8 +13286,8 @@ function DashboardTemplate({
|
|
|
11707
13286
|
className,
|
|
11708
13287
|
...props
|
|
11709
13288
|
}) {
|
|
11710
|
-
return /* @__PURE__ */ (0,
|
|
11711
|
-
/* @__PURE__ */ (0,
|
|
13289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
|
|
13290
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
11712
13291
|
PageHeader,
|
|
11713
13292
|
{
|
|
11714
13293
|
title,
|
|
@@ -11718,15 +13297,15 @@ function DashboardTemplate({
|
|
|
11718
13297
|
actions
|
|
11719
13298
|
}
|
|
11720
13299
|
),
|
|
11721
|
-
metrics && /* @__PURE__ */ (0,
|
|
11722
|
-
charts && /* @__PURE__ */ (0,
|
|
11723
|
-
activity && /* @__PURE__ */ (0,
|
|
11724
|
-
children && /* @__PURE__ */ (0,
|
|
13300
|
+
metrics && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("section", { "aria-label": "Key Metrics", className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: metrics }),
|
|
13301
|
+
charts && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("section", { "aria-label": "Charts and Visualizations", className: "grid gap-4 md:grid-cols-2 lg:grid-cols-7", children: charts }),
|
|
13302
|
+
activity && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("section", { "aria-label": "Recent Activity", className: "space-y-4", children: activity }),
|
|
13303
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "space-y-6", children })
|
|
11725
13304
|
] });
|
|
11726
13305
|
}
|
|
11727
13306
|
|
|
11728
13307
|
// src/design-system/templates/workspace-template.tsx
|
|
11729
|
-
var
|
|
13308
|
+
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
11730
13309
|
function WorkspaceTemplate({
|
|
11731
13310
|
header,
|
|
11732
13311
|
leftSidebar,
|
|
@@ -11736,7 +13315,7 @@ function WorkspaceTemplate({
|
|
|
11736
13315
|
className,
|
|
11737
13316
|
...props
|
|
11738
13317
|
}) {
|
|
11739
|
-
return /* @__PURE__ */ (0,
|
|
13318
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
|
|
11740
13319
|
"div",
|
|
11741
13320
|
{
|
|
11742
13321
|
className: cn(
|
|
@@ -11745,29 +13324,29 @@ function WorkspaceTemplate({
|
|
|
11745
13324
|
),
|
|
11746
13325
|
...props,
|
|
11747
13326
|
children: [
|
|
11748
|
-
header && /* @__PURE__ */ (0,
|
|
11749
|
-
/* @__PURE__ */ (0,
|
|
11750
|
-
leftSidebar && /* @__PURE__ */ (0,
|
|
11751
|
-
/* @__PURE__ */ (0,
|
|
11752
|
-
rightSidebar && /* @__PURE__ */ (0,
|
|
13327
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("header", { className: "flex h-14 shrink-0 items-center border-b px-4 bg-background z-10", children: header }),
|
|
13328
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex flex-1 overflow-hidden", children: [
|
|
13329
|
+
leftSidebar && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("aside", { className: "hidden md:flex w-64 shrink-0 flex-col border-r bg-sidebar p-3 overflow-y-auto", children: leftSidebar }),
|
|
13330
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("main", { className: "flex flex-1 flex-col overflow-y-auto p-4 sm:p-6 bg-muted/20", children }),
|
|
13331
|
+
rightSidebar && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("aside", { className: "hidden lg:flex w-80 shrink-0 flex-col border-l bg-background p-4 overflow-y-auto", children: rightSidebar })
|
|
11753
13332
|
] }),
|
|
11754
|
-
footer && /* @__PURE__ */ (0,
|
|
13333
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("footer", { className: "flex h-10 shrink-0 items-center border-t px-4 text-xs text-muted-foreground bg-background", children: footer })
|
|
11755
13334
|
]
|
|
11756
13335
|
}
|
|
11757
13336
|
);
|
|
11758
13337
|
}
|
|
11759
13338
|
|
|
11760
13339
|
// src/design-system/templates/app-header.tsx
|
|
11761
|
-
var
|
|
11762
|
-
var
|
|
13340
|
+
var import_react21 = require("react");
|
|
13341
|
+
var import_lucide_react58 = require("lucide-react");
|
|
11763
13342
|
var import_navigation2 = require("next/navigation");
|
|
11764
13343
|
|
|
11765
13344
|
// src/components/layout/header.tsx
|
|
11766
|
-
var
|
|
11767
|
-
var
|
|
13345
|
+
var import_react20 = require("react");
|
|
13346
|
+
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
11768
13347
|
function Header({ className, fixed, children, ...props }) {
|
|
11769
|
-
const [offset, setOffset] = (0,
|
|
11770
|
-
(0,
|
|
13348
|
+
const [offset, setOffset] = (0, import_react20.useState)(0);
|
|
13349
|
+
(0, import_react20.useEffect)(() => {
|
|
11771
13350
|
const onScroll = () => {
|
|
11772
13351
|
setOffset(document.body.scrollTop || document.documentElement.scrollTop);
|
|
11773
13352
|
};
|
|
@@ -11776,7 +13355,7 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11776
13355
|
}, []);
|
|
11777
13356
|
return (
|
|
11778
13357
|
// Page header container: fixed mode me top par sticky behavior deta hai.
|
|
11779
|
-
/* @__PURE__ */ (0,
|
|
13358
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
11780
13359
|
"header",
|
|
11781
13360
|
{
|
|
11782
13361
|
className: cn(
|
|
@@ -11786,7 +13365,7 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11786
13365
|
className
|
|
11787
13366
|
),
|
|
11788
13367
|
...props,
|
|
11789
|
-
children: /* @__PURE__ */ (0,
|
|
13368
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
|
|
11790
13369
|
"div",
|
|
11791
13370
|
{
|
|
11792
13371
|
className: cn(
|
|
@@ -11795,7 +13374,7 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11795
13374
|
offset > 10 && fixed && "after:absolute after:inset-0 after:-z-10 after:bg-background/20 after:backdrop-blur-lg"
|
|
11796
13375
|
),
|
|
11797
13376
|
children: [
|
|
11798
|
-
/* @__PURE__ */ (0,
|
|
13377
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(AppLogo, { className: "shrink-0 md:hidden" }),
|
|
11799
13378
|
children
|
|
11800
13379
|
]
|
|
11801
13380
|
}
|
|
@@ -11806,9 +13385,9 @@ function Header({ className, fixed, children, ...props }) {
|
|
|
11806
13385
|
}
|
|
11807
13386
|
|
|
11808
13387
|
// src/components/search.tsx
|
|
11809
|
-
var
|
|
11810
|
-
var
|
|
11811
|
-
function
|
|
13388
|
+
var import_lucide_react57 = require("lucide-react");
|
|
13389
|
+
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
13390
|
+
function Search7({
|
|
11812
13391
|
className = "",
|
|
11813
13392
|
placeholder = "Search",
|
|
11814
13393
|
iconOnly = true,
|
|
@@ -11820,7 +13399,7 @@ function Search6({
|
|
|
11820
13399
|
search.setOpen(true);
|
|
11821
13400
|
}
|
|
11822
13401
|
};
|
|
11823
|
-
return /* @__PURE__ */ (0,
|
|
13402
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
11824
13403
|
Button,
|
|
11825
13404
|
{
|
|
11826
13405
|
...props,
|
|
@@ -11830,7 +13409,7 @@ function Search6({
|
|
|
11830
13409
|
"aria-label": "Search",
|
|
11831
13410
|
"aria-keyshortcuts": "Meta+K Control+K",
|
|
11832
13411
|
onClick: openSearch,
|
|
11833
|
-
children: /* @__PURE__ */ (0,
|
|
13412
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react57.SearchIcon, { className: "size-5", "aria-hidden": "true" })
|
|
11834
13413
|
}
|
|
11835
13414
|
);
|
|
11836
13415
|
}
|
|
@@ -11999,7 +13578,7 @@ var useNotificationStore = (0, import_zustand2.create)((set, get) => ({
|
|
|
11999
13578
|
}));
|
|
12000
13579
|
|
|
12001
13580
|
// src/design-system/templates/app-header.tsx
|
|
12002
|
-
var
|
|
13581
|
+
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
12003
13582
|
function AppHeader({
|
|
12004
13583
|
title,
|
|
12005
13584
|
fixed = true,
|
|
@@ -12009,7 +13588,7 @@ function AppHeader({
|
|
|
12009
13588
|
const router = (0, import_navigation2.useRouter)();
|
|
12010
13589
|
const currentUser = useAuthStore((state) => state.auth.user);
|
|
12011
13590
|
const { unreadCount, fetchNotifications, subscribeToNotifications, unsubscribe } = useNotificationStore();
|
|
12012
|
-
(0,
|
|
13591
|
+
(0, import_react21.useEffect)(() => {
|
|
12013
13592
|
if (currentUser) {
|
|
12014
13593
|
fetchNotifications(currentUser.accountNo);
|
|
12015
13594
|
subscribeToNotifications(currentUser.accountNo);
|
|
@@ -12018,12 +13597,12 @@ function AppHeader({
|
|
|
12018
13597
|
unsubscribe();
|
|
12019
13598
|
};
|
|
12020
13599
|
}, [currentUser, fetchNotifications, subscribeToNotifications, unsubscribe]);
|
|
12021
|
-
return /* @__PURE__ */ (0,
|
|
12022
|
-
/* @__PURE__ */ (0,
|
|
12023
|
-
/* @__PURE__ */ (0,
|
|
12024
|
-
/* @__PURE__ */ (0,
|
|
13600
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Header, { fixed, className: "border-b bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-1 items-center justify-between w-full", children: iconsPosition === "left" ? /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center gap-2 sm:gap-3 min-w-0", children: [
|
|
13601
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("h1", { className: "min-w-0 truncate text-base font-semibold sm:text-lg", children: title }),
|
|
13602
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center gap-1 sm:gap-2 shrink-0 ml-1", children: [
|
|
13603
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Search7, { iconOnly: true }),
|
|
12025
13604
|
children,
|
|
12026
|
-
/* @__PURE__ */ (0,
|
|
13605
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
|
|
12027
13606
|
Button,
|
|
12028
13607
|
{
|
|
12029
13608
|
variant: "ghost",
|
|
@@ -12032,18 +13611,18 @@ function AppHeader({
|
|
|
12032
13611
|
"aria-label": "Notifications",
|
|
12033
13612
|
onClick: () => router.push("/notification"),
|
|
12034
13613
|
children: [
|
|
12035
|
-
/* @__PURE__ */ (0,
|
|
12036
|
-
unreadCount > 0 && /* @__PURE__ */ (0,
|
|
13614
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_lucide_react58.Bell, { className: "size-5" }),
|
|
13615
|
+
unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime108.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
13616
|
]
|
|
12038
13617
|
}
|
|
12039
13618
|
)
|
|
12040
13619
|
] })
|
|
12041
|
-
] }) : /* @__PURE__ */ (0,
|
|
12042
|
-
/* @__PURE__ */ (0,
|
|
12043
|
-
/* @__PURE__ */ (0,
|
|
12044
|
-
/* @__PURE__ */ (0,
|
|
13620
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_jsx_runtime108.Fragment, { children: [
|
|
13621
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("h1", { className: "min-w-0 truncate text-base font-semibold sm:text-lg", children: title }),
|
|
13622
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "ml-auto flex items-center gap-2 sm:gap-3", children: [
|
|
13623
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Search7, { iconOnly: true }),
|
|
12045
13624
|
children,
|
|
12046
|
-
/* @__PURE__ */ (0,
|
|
13625
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
|
|
12047
13626
|
Button,
|
|
12048
13627
|
{
|
|
12049
13628
|
variant: "ghost",
|
|
@@ -12052,8 +13631,8 @@ function AppHeader({
|
|
|
12052
13631
|
"aria-label": "Notifications",
|
|
12053
13632
|
onClick: () => router.push("/notification"),
|
|
12054
13633
|
children: [
|
|
12055
|
-
/* @__PURE__ */ (0,
|
|
12056
|
-
unreadCount > 0 && /* @__PURE__ */ (0,
|
|
13634
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_lucide_react58.Bell, { className: "size-5" }),
|
|
13635
|
+
unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime108.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
13636
|
]
|
|
12058
13637
|
}
|
|
12059
13638
|
)
|
|
@@ -12062,7 +13641,7 @@ function AppHeader({
|
|
|
12062
13641
|
}
|
|
12063
13642
|
|
|
12064
13643
|
// src/design-system/templates/data/sidebar-data.ts
|
|
12065
|
-
var
|
|
13644
|
+
var import_lucide_react59 = require("lucide-react");
|
|
12066
13645
|
var sidebarData2 = {
|
|
12067
13646
|
user: {
|
|
12068
13647
|
name: "satnaing",
|
|
@@ -12072,7 +13651,7 @@ var sidebarData2 = {
|
|
|
12072
13651
|
teams: [
|
|
12073
13652
|
{
|
|
12074
13653
|
name: "Amoga App",
|
|
12075
|
-
logo:
|
|
13654
|
+
logo: import_lucide_react59.Command,
|
|
12076
13655
|
plan: "Demo Company"
|
|
12077
13656
|
}
|
|
12078
13657
|
],
|
|
@@ -12083,52 +13662,52 @@ var sidebarData2 = {
|
|
|
12083
13662
|
{
|
|
12084
13663
|
title: "Message",
|
|
12085
13664
|
url: "/message",
|
|
12086
|
-
icon:
|
|
13665
|
+
icon: import_lucide_react59.Mail
|
|
12087
13666
|
},
|
|
12088
13667
|
{
|
|
12089
13668
|
title: "Email Settings",
|
|
12090
13669
|
url: "/email-settings",
|
|
12091
|
-
icon:
|
|
13670
|
+
icon: import_lucide_react59.Settings
|
|
12092
13671
|
},
|
|
12093
13672
|
{
|
|
12094
13673
|
title: "Design System",
|
|
12095
13674
|
url: "/",
|
|
12096
|
-
icon:
|
|
13675
|
+
icon: import_lucide_react59.Settings
|
|
12097
13676
|
},
|
|
12098
13677
|
{
|
|
12099
13678
|
title: "Vouchers",
|
|
12100
13679
|
url: "/vouchers",
|
|
12101
|
-
icon:
|
|
13680
|
+
icon: import_lucide_react59.Ticket
|
|
12102
13681
|
},
|
|
12103
13682
|
{
|
|
12104
13683
|
title: "AI Chat",
|
|
12105
13684
|
url: "/ai_chat",
|
|
12106
|
-
icon:
|
|
13685
|
+
icon: import_lucide_react59.Bot
|
|
12107
13686
|
},
|
|
12108
13687
|
{
|
|
12109
13688
|
title: "AI Search",
|
|
12110
13689
|
url: "/ai_search",
|
|
12111
|
-
icon:
|
|
13690
|
+
icon: import_lucide_react59.SearchIcon
|
|
12112
13691
|
},
|
|
12113
13692
|
{
|
|
12114
13693
|
title: "Chart Template",
|
|
12115
13694
|
url: "/charttemplate",
|
|
12116
|
-
icon:
|
|
13695
|
+
icon: import_lucide_react59.ChartArea
|
|
12117
13696
|
},
|
|
12118
13697
|
{
|
|
12119
13698
|
title: "Map Template",
|
|
12120
13699
|
url: "/map",
|
|
12121
|
-
icon:
|
|
13700
|
+
icon: import_lucide_react59.Map
|
|
12122
13701
|
},
|
|
12123
13702
|
{
|
|
12124
13703
|
title: "Route Doc",
|
|
12125
13704
|
url: "/routedoc",
|
|
12126
|
-
icon:
|
|
13705
|
+
icon: import_lucide_react59.Route
|
|
12127
13706
|
},
|
|
12128
13707
|
{
|
|
12129
13708
|
title: "Link Maker",
|
|
12130
13709
|
url: "/link-maker",
|
|
12131
|
-
icon:
|
|
13710
|
+
icon: import_lucide_react59.Link
|
|
12132
13711
|
}
|
|
12133
13712
|
]
|
|
12134
13713
|
},
|
|
@@ -12137,7 +13716,7 @@ var sidebarData2 = {
|
|
|
12137
13716
|
items: [
|
|
12138
13717
|
{
|
|
12139
13718
|
title: "Settings",
|
|
12140
|
-
icon:
|
|
13719
|
+
icon: import_lucide_react59.Settings,
|
|
12141
13720
|
items: [
|
|
12142
13721
|
// Add settings pages here
|
|
12143
13722
|
]
|
|
@@ -12145,7 +13724,7 @@ var sidebarData2 = {
|
|
|
12145
13724
|
{
|
|
12146
13725
|
title: "Help Center",
|
|
12147
13726
|
url: "/help-center",
|
|
12148
|
-
icon:
|
|
13727
|
+
icon: import_lucide_react59.HelpCircle
|
|
12149
13728
|
}
|
|
12150
13729
|
]
|
|
12151
13730
|
}
|
|
@@ -12153,7 +13732,7 @@ var sidebarData2 = {
|
|
|
12153
13732
|
};
|
|
12154
13733
|
|
|
12155
13734
|
// src/design-system/templates/app-logo.tsx
|
|
12156
|
-
var
|
|
13735
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
12157
13736
|
function AppLogo({ className, onClick }) {
|
|
12158
13737
|
const { toggleSidebar, setOpenMobile, isMobile } = useSidebar();
|
|
12159
13738
|
const team = sidebarData2.teams[0];
|
|
@@ -12170,7 +13749,7 @@ function AppLogo({ className, onClick }) {
|
|
|
12170
13749
|
toggleSidebar();
|
|
12171
13750
|
}
|
|
12172
13751
|
};
|
|
12173
|
-
return /* @__PURE__ */ (0,
|
|
13752
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
12174
13753
|
Button,
|
|
12175
13754
|
{
|
|
12176
13755
|
type: "button",
|
|
@@ -12181,30 +13760,30 @@ function AppLogo({ className, onClick }) {
|
|
|
12181
13760
|
className
|
|
12182
13761
|
),
|
|
12183
13762
|
"aria-label": "Open sidebar menu",
|
|
12184
|
-
children: /* @__PURE__ */ (0,
|
|
13763
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex size-full items-center justify-center rounded-lg bg-primary text-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Logo, { className: "size-4" }) })
|
|
12185
13764
|
}
|
|
12186
13765
|
);
|
|
12187
13766
|
}
|
|
12188
13767
|
|
|
12189
13768
|
// src/context/layout-provider.tsx
|
|
12190
|
-
var
|
|
12191
|
-
var
|
|
13769
|
+
var import_react22 = require("react");
|
|
13770
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
12192
13771
|
var LAYOUT_COLLAPSIBLE_COOKIE_NAME = "layout_collapsible";
|
|
12193
13772
|
var LAYOUT_VARIANT_COOKIE_NAME = "layout_variant";
|
|
12194
13773
|
var LAYOUT_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
12195
13774
|
var DEFAULT_VARIANT = "inset";
|
|
12196
13775
|
var DEFAULT_COLLAPSIBLE = "icon";
|
|
12197
|
-
var LayoutContext = (0,
|
|
13776
|
+
var LayoutContext = (0, import_react22.createContext)(null);
|
|
12198
13777
|
function LayoutProvider({ children }) {
|
|
12199
|
-
const [collapsible, _setCollapsible] = (0,
|
|
13778
|
+
const [collapsible, _setCollapsible] = (0, import_react22.useState)(() => {
|
|
12200
13779
|
const saved = getCookie(LAYOUT_COLLAPSIBLE_COOKIE_NAME);
|
|
12201
13780
|
return saved || DEFAULT_COLLAPSIBLE;
|
|
12202
13781
|
});
|
|
12203
|
-
const [variant, _setVariant] = (0,
|
|
13782
|
+
const [variant, _setVariant] = (0, import_react22.useState)(() => {
|
|
12204
13783
|
const saved = getCookie(LAYOUT_VARIANT_COOKIE_NAME);
|
|
12205
13784
|
return saved || DEFAULT_VARIANT;
|
|
12206
13785
|
});
|
|
12207
|
-
const [showInlineNotFound, setShowInlineNotFound] = (0,
|
|
13786
|
+
const [showInlineNotFound, setShowInlineNotFound] = (0, import_react22.useState)(false);
|
|
12208
13787
|
const setCollapsible = (newCollapsible) => {
|
|
12209
13788
|
_setCollapsible(newCollapsible);
|
|
12210
13789
|
setCookie(
|
|
@@ -12232,10 +13811,10 @@ function LayoutProvider({ children }) {
|
|
|
12232
13811
|
showInlineNotFound,
|
|
12233
13812
|
setShowInlineNotFound
|
|
12234
13813
|
};
|
|
12235
|
-
return /* @__PURE__ */ (0,
|
|
13814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(LayoutContext, { value: contextValue, children });
|
|
12236
13815
|
}
|
|
12237
13816
|
function useLayout() {
|
|
12238
|
-
const context = (0,
|
|
13817
|
+
const context = (0, import_react22.useContext)(LayoutContext);
|
|
12239
13818
|
if (!context) {
|
|
12240
13819
|
return {
|
|
12241
13820
|
resetLayout: () => {
|
|
@@ -12259,13 +13838,13 @@ function useLayout() {
|
|
|
12259
13838
|
// src/design-system/templates/nav-group.tsx
|
|
12260
13839
|
var import_link = __toESM(require("next/link"));
|
|
12261
13840
|
var import_navigation3 = require("next/navigation");
|
|
12262
|
-
var
|
|
12263
|
-
var
|
|
13841
|
+
var import_lucide_react60 = require("lucide-react");
|
|
13842
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
12264
13843
|
function NavGroup({ title, items }) {
|
|
12265
13844
|
const { state, isMobile, openMobile, setOpenMobile } = useSidebar();
|
|
12266
13845
|
const href = (0, import_navigation3.usePathname)();
|
|
12267
|
-
return /* @__PURE__ */ (0,
|
|
12268
|
-
/* @__PURE__ */ (0,
|
|
13846
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(SidebarGroup, { className: cn(title === "Menu" && "pt-0"), children: [
|
|
13847
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12269
13848
|
SidebarGroupLabel,
|
|
12270
13849
|
{
|
|
12271
13850
|
className: cn(
|
|
@@ -12273,8 +13852,8 @@ function NavGroup({ title, items }) {
|
|
|
12273
13852
|
title === "Menu" && state !== "collapsed" && "sticky top-0 z-20 bg-sidebar py-1.5"
|
|
12274
13853
|
),
|
|
12275
13854
|
children: [
|
|
12276
|
-
/* @__PURE__ */ (0,
|
|
12277
|
-
title === "Menu" && !isMobile && /* @__PURE__ */ (0,
|
|
13855
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { children: title }),
|
|
13856
|
+
title === "Menu" && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
12278
13857
|
SidebarTrigger,
|
|
12279
13858
|
{
|
|
12280
13859
|
variant: "ghost",
|
|
@@ -12282,7 +13861,7 @@ function NavGroup({ title, items }) {
|
|
|
12282
13861
|
"aria-label": "Toggle sidebar"
|
|
12283
13862
|
}
|
|
12284
13863
|
),
|
|
12285
|
-
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0,
|
|
13864
|
+
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
12286
13865
|
Button,
|
|
12287
13866
|
{
|
|
12288
13867
|
type: "button",
|
|
@@ -12291,37 +13870,37 @@ function NavGroup({ title, items }) {
|
|
|
12291
13870
|
className: "size-6 shrink-0",
|
|
12292
13871
|
"aria-label": "Close sidebar",
|
|
12293
13872
|
onClick: () => setOpenMobile(false),
|
|
12294
|
-
children: /* @__PURE__ */ (0,
|
|
13873
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react60.X, { className: "size-4", "aria-hidden": "true" })
|
|
12295
13874
|
}
|
|
12296
13875
|
)
|
|
12297
13876
|
]
|
|
12298
13877
|
}
|
|
12299
13878
|
),
|
|
12300
|
-
/* @__PURE__ */ (0,
|
|
13879
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenu, { children: items.map((item) => {
|
|
12301
13880
|
const key = `${item.title}-${item.url}`;
|
|
12302
13881
|
if (!item.items)
|
|
12303
|
-
return /* @__PURE__ */ (0,
|
|
13882
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuLink, { item, href }, key);
|
|
12304
13883
|
if (item.title === "Settings" && item.items.length === 0)
|
|
12305
|
-
return /* @__PURE__ */ (0,
|
|
13884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuSettings, { item }, key);
|
|
12306
13885
|
if (state === "collapsed" && !isMobile)
|
|
12307
|
-
return /* @__PURE__ */ (0,
|
|
12308
|
-
return /* @__PURE__ */ (0,
|
|
13886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuCollapsedDropdown, { item, href }, key);
|
|
13887
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuCollapsible, { item, href }, key);
|
|
12309
13888
|
}) })
|
|
12310
13889
|
] });
|
|
12311
13890
|
}
|
|
12312
13891
|
function NavBadge({ children }) {
|
|
12313
|
-
return /* @__PURE__ */ (0,
|
|
13892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Badge, { className: "rounded-full px-1 py-0 text-xs", children });
|
|
12314
13893
|
}
|
|
12315
13894
|
function SidebarMenuLink({ item, href }) {
|
|
12316
13895
|
const { setOpenMobile } = useSidebar();
|
|
12317
13896
|
const { setShowInlineNotFound } = useLayout();
|
|
12318
|
-
return /* @__PURE__ */ (0,
|
|
13897
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
12319
13898
|
SidebarMenuButton,
|
|
12320
13899
|
{
|
|
12321
13900
|
asChild: true,
|
|
12322
13901
|
isActive: checkIsActive(href, item),
|
|
12323
13902
|
tooltip: item.title,
|
|
12324
|
-
children: /* @__PURE__ */ (0,
|
|
13903
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12325
13904
|
import_link.default,
|
|
12326
13905
|
{
|
|
12327
13906
|
href: item.url,
|
|
@@ -12330,9 +13909,9 @@ function SidebarMenuLink({ item, href }) {
|
|
|
12330
13909
|
setOpenMobile(false);
|
|
12331
13910
|
},
|
|
12332
13911
|
children: [
|
|
12333
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12334
|
-
/* @__PURE__ */ (0,
|
|
12335
|
-
item.badge && /* @__PURE__ */ (0,
|
|
13912
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(item.icon, {}),
|
|
13913
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { children: item.title }),
|
|
13914
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(NavBadge, { children: item.badge })
|
|
12336
13915
|
]
|
|
12337
13916
|
}
|
|
12338
13917
|
)
|
|
@@ -12342,7 +13921,7 @@ function SidebarMenuLink({ item, href }) {
|
|
|
12342
13921
|
function SidebarMenuSettings({ item }) {
|
|
12343
13922
|
const { setOpenMobile } = useSidebar();
|
|
12344
13923
|
const { showInlineNotFound, setShowInlineNotFound } = useLayout();
|
|
12345
|
-
return /* @__PURE__ */ (0,
|
|
13924
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12346
13925
|
SidebarMenuButton,
|
|
12347
13926
|
{
|
|
12348
13927
|
tooltip: item.title,
|
|
@@ -12352,8 +13931,8 @@ function SidebarMenuSettings({ item }) {
|
|
|
12352
13931
|
setOpenMobile(false);
|
|
12353
13932
|
},
|
|
12354
13933
|
children: [
|
|
12355
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12356
|
-
/* @__PURE__ */ (0,
|
|
13934
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(item.icon, {}),
|
|
13935
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { children: item.title })
|
|
12357
13936
|
]
|
|
12358
13937
|
}
|
|
12359
13938
|
) });
|
|
@@ -12364,25 +13943,25 @@ function SidebarMenuCollapsible({
|
|
|
12364
13943
|
}) {
|
|
12365
13944
|
const { setOpenMobile } = useSidebar();
|
|
12366
13945
|
const { setShowInlineNotFound } = useLayout();
|
|
12367
|
-
return /* @__PURE__ */ (0,
|
|
13946
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
12368
13947
|
Collapsible,
|
|
12369
13948
|
{
|
|
12370
13949
|
asChild: true,
|
|
12371
13950
|
defaultOpen: checkIsActive(href, item, true),
|
|
12372
13951
|
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,
|
|
13952
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(SidebarMenuItem, { children: [
|
|
13953
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(SidebarMenuButton, { tooltip: item.title, children: [
|
|
13954
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(item.icon, {}),
|
|
13955
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { children: item.title }),
|
|
13956
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(NavBadge, { children: item.badge }),
|
|
13957
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react60.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180" })
|
|
12379
13958
|
] }) }),
|
|
12380
|
-
/* @__PURE__ */ (0,
|
|
13959
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(CollapsibleContent, { className: "CollapsibleContent", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuSubItem, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
12381
13960
|
SidebarMenuSubButton,
|
|
12382
13961
|
{
|
|
12383
13962
|
asChild: true,
|
|
12384
13963
|
isActive: checkIsActive(href, subItem),
|
|
12385
|
-
children: /* @__PURE__ */ (0,
|
|
13964
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12386
13965
|
import_link.default,
|
|
12387
13966
|
{
|
|
12388
13967
|
href: subItem.url,
|
|
@@ -12391,9 +13970,9 @@ function SidebarMenuCollapsible({
|
|
|
12391
13970
|
setOpenMobile(false);
|
|
12392
13971
|
},
|
|
12393
13972
|
children: [
|
|
12394
|
-
subItem.icon && /* @__PURE__ */ (0,
|
|
12395
|
-
/* @__PURE__ */ (0,
|
|
12396
|
-
subItem.badge && /* @__PURE__ */ (0,
|
|
13973
|
+
subItem.icon && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(subItem.icon, {}),
|
|
13974
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { children: subItem.title }),
|
|
13975
|
+
subItem.badge && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(NavBadge, { children: subItem.badge })
|
|
12397
13976
|
]
|
|
12398
13977
|
}
|
|
12399
13978
|
)
|
|
@@ -12407,36 +13986,36 @@ function SidebarMenuCollapsedDropdown({
|
|
|
12407
13986
|
item,
|
|
12408
13987
|
href
|
|
12409
13988
|
}) {
|
|
12410
|
-
return /* @__PURE__ */ (0,
|
|
12411
|
-
/* @__PURE__ */ (0,
|
|
13989
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(DropdownMenu, { children: [
|
|
13990
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12412
13991
|
SidebarMenuButton,
|
|
12413
13992
|
{
|
|
12414
13993
|
tooltip: item.title,
|
|
12415
13994
|
isActive: checkIsActive(href, item),
|
|
12416
13995
|
children: [
|
|
12417
|
-
item.icon && /* @__PURE__ */ (0,
|
|
12418
|
-
/* @__PURE__ */ (0,
|
|
12419
|
-
item.badge && /* @__PURE__ */ (0,
|
|
12420
|
-
/* @__PURE__ */ (0,
|
|
13996
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(item.icon, {}),
|
|
13997
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { children: item.title }),
|
|
13998
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(NavBadge, { children: item.badge }),
|
|
13999
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react60.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
|
|
12421
14000
|
]
|
|
12422
14001
|
}
|
|
12423
14002
|
) }),
|
|
12424
|
-
/* @__PURE__ */ (0,
|
|
12425
|
-
/* @__PURE__ */ (0,
|
|
14003
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(DropdownMenuContent, { side: "right", align: "start", sideOffset: 4, children: [
|
|
14004
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(DropdownMenuLabel, { children: [
|
|
12426
14005
|
item.title,
|
|
12427
14006
|
" ",
|
|
12428
14007
|
item.badge ? `(${item.badge})` : ""
|
|
12429
14008
|
] }),
|
|
12430
|
-
/* @__PURE__ */ (0,
|
|
12431
|
-
item.items.map((sub) => /* @__PURE__ */ (0,
|
|
14009
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(DropdownMenuSeparator, {}),
|
|
14010
|
+
item.items.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
12432
14011
|
import_link.default,
|
|
12433
14012
|
{
|
|
12434
14013
|
href: sub.url,
|
|
12435
14014
|
className: `${checkIsActive(href, sub) ? "bg-secondary" : ""}`,
|
|
12436
14015
|
children: [
|
|
12437
|
-
sub.icon && /* @__PURE__ */ (0,
|
|
12438
|
-
/* @__PURE__ */ (0,
|
|
12439
|
-
sub.badge && /* @__PURE__ */ (0,
|
|
14016
|
+
sub.icon && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(sub.icon, {}),
|
|
14017
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "max-w-52 text-wrap", children: sub.title }),
|
|
14018
|
+
sub.badge && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "ms-auto text-xs", children: sub.badge })
|
|
12440
14019
|
]
|
|
12441
14020
|
}
|
|
12442
14021
|
) }, `${sub.title}-${sub.url}`))
|
|
@@ -12451,20 +14030,20 @@ function checkIsActive(href, item, mainNav = false) {
|
|
|
12451
14030
|
}
|
|
12452
14031
|
|
|
12453
14032
|
// src/design-system/templates/team-switcher.tsx
|
|
12454
|
-
var
|
|
14033
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
12455
14034
|
function TeamSwitcher({ teams }) {
|
|
12456
14035
|
useSidebar();
|
|
12457
14036
|
const activeTeam = teams[0];
|
|
12458
|
-
return /* @__PURE__ */ (0,
|
|
14037
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(
|
|
12459
14038
|
SidebarMenuButton,
|
|
12460
14039
|
{
|
|
12461
14040
|
size: "lg",
|
|
12462
14041
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
12463
14042
|
children: [
|
|
12464
|
-
/* @__PURE__ */ (0,
|
|
12465
|
-
/* @__PURE__ */ (0,
|
|
12466
|
-
/* @__PURE__ */ (0,
|
|
12467
|
-
/* @__PURE__ */ (0,
|
|
14043
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.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_runtime112.jsx)(activeTeam.logo, { className: "size-4" }) }),
|
|
14044
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14045
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: "truncate font-semibold", children: activeTeam.name }),
|
|
14046
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: "truncate text-xs", children: activeTeam.plan })
|
|
12468
14047
|
] })
|
|
12469
14048
|
]
|
|
12470
14049
|
}
|
|
@@ -12472,25 +14051,25 @@ function TeamSwitcher({ teams }) {
|
|
|
12472
14051
|
}
|
|
12473
14052
|
|
|
12474
14053
|
// src/design-system/templates/nav-user.tsx
|
|
12475
|
-
var
|
|
14054
|
+
var import_lucide_react62 = require("lucide-react");
|
|
12476
14055
|
|
|
12477
14056
|
// src/hooks/use-dialog-state.tsx
|
|
12478
|
-
var
|
|
14057
|
+
var import_react23 = require("react");
|
|
12479
14058
|
function useDialogState(initialState2 = null) {
|
|
12480
|
-
const [open, _setOpen] = (0,
|
|
14059
|
+
const [open, _setOpen] = (0, import_react23.useState)(initialState2);
|
|
12481
14060
|
const setOpen = (str) => _setOpen((prev) => prev === str ? null : str);
|
|
12482
14061
|
return [open, setOpen];
|
|
12483
14062
|
}
|
|
12484
14063
|
|
|
12485
14064
|
// src/components/config-drawer.tsx
|
|
12486
|
-
var
|
|
14065
|
+
var import_react24 = require("react");
|
|
12487
14066
|
var import_react_radio_group = require("@radix-ui/react-radio-group");
|
|
12488
|
-
var
|
|
14067
|
+
var import_lucide_react61 = require("lucide-react");
|
|
12489
14068
|
|
|
12490
14069
|
// src/assets/custom/icon-theme-dark.tsx
|
|
12491
|
-
var
|
|
14070
|
+
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
12492
14071
|
function IconThemeDark(props) {
|
|
12493
|
-
return /* @__PURE__ */ (0,
|
|
14072
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
|
|
12494
14073
|
"svg",
|
|
12495
14074
|
{
|
|
12496
14075
|
"data-name": "icon-theme-dark",
|
|
@@ -12498,27 +14077,27 @@ function IconThemeDark(props) {
|
|
|
12498
14077
|
viewBox: "0 0 79.86 51.14",
|
|
12499
14078
|
...props,
|
|
12500
14079
|
children: [
|
|
12501
|
-
/* @__PURE__ */ (0,
|
|
12502
|
-
/* @__PURE__ */ (0,
|
|
12503
|
-
/* @__PURE__ */ (0,
|
|
14080
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { fill: "#1d2b3f", children: [
|
|
14081
|
+
/* @__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 }),
|
|
14082
|
+
/* @__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" })
|
|
12504
14083
|
] }),
|
|
12505
|
-
/* @__PURE__ */ (0,
|
|
14084
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12506
14085
|
"path",
|
|
12507
14086
|
{
|
|
12508
14087
|
d: "M22.88 0h52.97c2.21 0 4 1.79 4 4v43.14c0 2.21-1.79 4-4 4H22.88V0z",
|
|
12509
14088
|
fill: "#0d1628"
|
|
12510
14089
|
}
|
|
12511
14090
|
),
|
|
12512
|
-
/* @__PURE__ */ (0,
|
|
12513
|
-
/* @__PURE__ */ (0,
|
|
14091
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("circle", { cx: 6.7, cy: 7.04, r: 3.54, fill: "#426187" }),
|
|
14092
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12514
14093
|
"path",
|
|
12515
14094
|
{
|
|
12516
14095
|
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
14096
|
fill: "#426187"
|
|
12518
14097
|
}
|
|
12519
14098
|
),
|
|
12520
|
-
/* @__PURE__ */ (0,
|
|
12521
|
-
/* @__PURE__ */ (0,
|
|
14099
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("g", { fill: "#2a62bc", children: [
|
|
14100
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12522
14101
|
"rect",
|
|
12523
14102
|
{
|
|
12524
14103
|
x: 33.36,
|
|
@@ -12530,7 +14109,7 @@ function IconThemeDark(props) {
|
|
|
12530
14109
|
opacity: 0.32
|
|
12531
14110
|
}
|
|
12532
14111
|
),
|
|
12533
|
-
/* @__PURE__ */ (0,
|
|
14112
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12534
14113
|
"rect",
|
|
12535
14114
|
{
|
|
12536
14115
|
x: 29.64,
|
|
@@ -12542,7 +14121,7 @@ function IconThemeDark(props) {
|
|
|
12542
14121
|
opacity: 0.44
|
|
12543
14122
|
}
|
|
12544
14123
|
),
|
|
12545
|
-
/* @__PURE__ */ (0,
|
|
14124
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12546
14125
|
"rect",
|
|
12547
14126
|
{
|
|
12548
14127
|
x: 37.16,
|
|
@@ -12554,7 +14133,7 @@ function IconThemeDark(props) {
|
|
|
12554
14133
|
opacity: 0.53
|
|
12555
14134
|
}
|
|
12556
14135
|
),
|
|
12557
|
-
/* @__PURE__ */ (0,
|
|
14136
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12558
14137
|
"rect",
|
|
12559
14138
|
{
|
|
12560
14139
|
x: 41.19,
|
|
@@ -12567,8 +14146,8 @@ function IconThemeDark(props) {
|
|
|
12567
14146
|
}
|
|
12568
14147
|
)
|
|
12569
14148
|
] }),
|
|
12570
|
-
/* @__PURE__ */ (0,
|
|
12571
|
-
/* @__PURE__ */ (0,
|
|
14149
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, fill: "#2f5491", opacity: 0.5 }),
|
|
14150
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12572
14151
|
"path",
|
|
12573
14152
|
{
|
|
12574
14153
|
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 +14155,7 @@ function IconThemeDark(props) {
|
|
|
12576
14155
|
opacity: 0.74
|
|
12577
14156
|
}
|
|
12578
14157
|
),
|
|
12579
|
-
/* @__PURE__ */ (0,
|
|
14158
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
12580
14159
|
"rect",
|
|
12581
14160
|
{
|
|
12582
14161
|
x: 29.64,
|
|
@@ -12594,9 +14173,9 @@ function IconThemeDark(props) {
|
|
|
12594
14173
|
}
|
|
12595
14174
|
|
|
12596
14175
|
// src/assets/custom/icon-theme-light.tsx
|
|
12597
|
-
var
|
|
14176
|
+
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
12598
14177
|
function IconThemeLight(props) {
|
|
12599
|
-
return /* @__PURE__ */ (0,
|
|
14178
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
|
|
12600
14179
|
"svg",
|
|
12601
14180
|
{
|
|
12602
14181
|
"data-name": "icon-theme-light",
|
|
@@ -12604,27 +14183,27 @@ function IconThemeLight(props) {
|
|
|
12604
14183
|
viewBox: "0 0 79.86 51.14",
|
|
12605
14184
|
...props,
|
|
12606
14185
|
children: [
|
|
12607
|
-
/* @__PURE__ */ (0,
|
|
12608
|
-
/* @__PURE__ */ (0,
|
|
12609
|
-
/* @__PURE__ */ (0,
|
|
14186
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("g", { fill: "#d9d9d9", children: [
|
|
14187
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("rect", { x: 0.53, y: 0.5, width: 78.83, height: 50.14, rx: 3.5, ry: 3.5 }),
|
|
14188
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.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
14189
|
] }),
|
|
12611
|
-
/* @__PURE__ */ (0,
|
|
14190
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12612
14191
|
"path",
|
|
12613
14192
|
{
|
|
12614
14193
|
d: "M22.88 0h52.97c2.21 0 4 1.79 4 4v43.14c0 2.21-1.79 4-4 4H22.88V0z",
|
|
12615
14194
|
fill: "#ecedef"
|
|
12616
14195
|
}
|
|
12617
14196
|
),
|
|
12618
|
-
/* @__PURE__ */ (0,
|
|
12619
|
-
/* @__PURE__ */ (0,
|
|
14197
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("circle", { cx: 6.7, cy: 7.04, r: 3.54, fill: "#fff" }),
|
|
14198
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12620
14199
|
"path",
|
|
12621
14200
|
{
|
|
12622
14201
|
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
14202
|
fill: "#fff"
|
|
12624
14203
|
}
|
|
12625
14204
|
),
|
|
12626
|
-
/* @__PURE__ */ (0,
|
|
12627
|
-
/* @__PURE__ */ (0,
|
|
14205
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("g", { fill: "#c0c4c4", children: [
|
|
14206
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12628
14207
|
"rect",
|
|
12629
14208
|
{
|
|
12630
14209
|
x: 33.36,
|
|
@@ -12636,7 +14215,7 @@ function IconThemeLight(props) {
|
|
|
12636
14215
|
opacity: 0.32
|
|
12637
14216
|
}
|
|
12638
14217
|
),
|
|
12639
|
-
/* @__PURE__ */ (0,
|
|
14218
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12640
14219
|
"rect",
|
|
12641
14220
|
{
|
|
12642
14221
|
x: 29.64,
|
|
@@ -12648,7 +14227,7 @@ function IconThemeLight(props) {
|
|
|
12648
14227
|
opacity: 0.44
|
|
12649
14228
|
}
|
|
12650
14229
|
),
|
|
12651
|
-
/* @__PURE__ */ (0,
|
|
14230
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12652
14231
|
"rect",
|
|
12653
14232
|
{
|
|
12654
14233
|
x: 37.16,
|
|
@@ -12660,7 +14239,7 @@ function IconThemeLight(props) {
|
|
|
12660
14239
|
opacity: 0.53
|
|
12661
14240
|
}
|
|
12662
14241
|
),
|
|
12663
|
-
/* @__PURE__ */ (0,
|
|
14242
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12664
14243
|
"rect",
|
|
12665
14244
|
{
|
|
12666
14245
|
x: 41.19,
|
|
@@ -12673,12 +14252,12 @@ function IconThemeLight(props) {
|
|
|
12673
14252
|
}
|
|
12674
14253
|
)
|
|
12675
14254
|
] }),
|
|
12676
|
-
/* @__PURE__ */ (0,
|
|
12677
|
-
/* @__PURE__ */ (0,
|
|
12678
|
-
/* @__PURE__ */ (0,
|
|
12679
|
-
/* @__PURE__ */ (0,
|
|
14255
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, fill: "#fff" }),
|
|
14256
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("g", { fill: "#d9d9d9", children: [
|
|
14257
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.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" }),
|
|
14258
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.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
14259
|
] }),
|
|
12681
|
-
/* @__PURE__ */ (0,
|
|
14260
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
12682
14261
|
"rect",
|
|
12683
14262
|
{
|
|
12684
14263
|
x: 29.64,
|
|
@@ -12696,12 +14275,12 @@ function IconThemeLight(props) {
|
|
|
12696
14275
|
}
|
|
12697
14276
|
|
|
12698
14277
|
// src/assets/custom/icon-theme-system.tsx
|
|
12699
|
-
var
|
|
14278
|
+
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
12700
14279
|
function IconThemeSystem({
|
|
12701
14280
|
className,
|
|
12702
14281
|
...props
|
|
12703
14282
|
}) {
|
|
12704
|
-
return /* @__PURE__ */ (0,
|
|
14283
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
12705
14284
|
"svg",
|
|
12706
14285
|
{
|
|
12707
14286
|
"data-name": "icon-theme-system",
|
|
@@ -12714,8 +14293,8 @@ function IconThemeSystem({
|
|
|
12714
14293
|
),
|
|
12715
14294
|
...props,
|
|
12716
14295
|
children: [
|
|
12717
|
-
/* @__PURE__ */ (0,
|
|
12718
|
-
/* @__PURE__ */ (0,
|
|
14296
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("path", { opacity: 0.2, d: "M0 0.03H22.88V51.17H0z" }),
|
|
14297
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12719
14298
|
"circle",
|
|
12720
14299
|
{
|
|
12721
14300
|
cx: 6.7,
|
|
@@ -12728,7 +14307,7 @@ function IconThemeSystem({
|
|
|
12728
14307
|
strokeMiterlimit: 10
|
|
12729
14308
|
}
|
|
12730
14309
|
),
|
|
12731
|
-
/* @__PURE__ */ (0,
|
|
14310
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12732
14311
|
"path",
|
|
12733
14312
|
{
|
|
12734
14313
|
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 +14316,7 @@ function IconThemeSystem({
|
|
|
12737
14316
|
opacity: 0.75
|
|
12738
14317
|
}
|
|
12739
14318
|
),
|
|
12740
|
-
/* @__PURE__ */ (0,
|
|
14319
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12741
14320
|
"path",
|
|
12742
14321
|
{
|
|
12743
14322
|
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 +14325,7 @@ function IconThemeSystem({
|
|
|
12746
14325
|
opacity: 0.72
|
|
12747
14326
|
}
|
|
12748
14327
|
),
|
|
12749
|
-
/* @__PURE__ */ (0,
|
|
14328
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12750
14329
|
"path",
|
|
12751
14330
|
{
|
|
12752
14331
|
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 +14334,7 @@ function IconThemeSystem({
|
|
|
12755
14334
|
opacity: 0.55
|
|
12756
14335
|
}
|
|
12757
14336
|
),
|
|
12758
|
-
/* @__PURE__ */ (0,
|
|
14337
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12759
14338
|
"path",
|
|
12760
14339
|
{
|
|
12761
14340
|
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 +14343,7 @@ function IconThemeSystem({
|
|
|
12764
14343
|
opacity: 0.67
|
|
12765
14344
|
}
|
|
12766
14345
|
),
|
|
12767
|
-
/* @__PURE__ */ (0,
|
|
14346
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12768
14347
|
"rect",
|
|
12769
14348
|
{
|
|
12770
14349
|
x: 33.36,
|
|
@@ -12777,7 +14356,7 @@ function IconThemeSystem({
|
|
|
12777
14356
|
stroke: "none"
|
|
12778
14357
|
}
|
|
12779
14358
|
),
|
|
12780
|
-
/* @__PURE__ */ (0,
|
|
14359
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12781
14360
|
"rect",
|
|
12782
14361
|
{
|
|
12783
14362
|
x: 29.64,
|
|
@@ -12790,7 +14369,7 @@ function IconThemeSystem({
|
|
|
12790
14369
|
stroke: "none"
|
|
12791
14370
|
}
|
|
12792
14371
|
),
|
|
12793
|
-
/* @__PURE__ */ (0,
|
|
14372
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12794
14373
|
"rect",
|
|
12795
14374
|
{
|
|
12796
14375
|
x: 37.16,
|
|
@@ -12803,7 +14382,7 @@ function IconThemeSystem({
|
|
|
12803
14382
|
stroke: "none"
|
|
12804
14383
|
}
|
|
12805
14384
|
),
|
|
12806
|
-
/* @__PURE__ */ (0,
|
|
14385
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12807
14386
|
"rect",
|
|
12808
14387
|
{
|
|
12809
14388
|
x: 41.19,
|
|
@@ -12816,9 +14395,9 @@ function IconThemeSystem({
|
|
|
12816
14395
|
stroke: "none"
|
|
12817
14396
|
}
|
|
12818
14397
|
),
|
|
12819
|
-
/* @__PURE__ */ (0,
|
|
12820
|
-
/* @__PURE__ */ (0,
|
|
12821
|
-
/* @__PURE__ */ (0,
|
|
14398
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("g", { children: [
|
|
14399
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, opacity: 0.25 }),
|
|
14400
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12822
14401
|
"path",
|
|
12823
14402
|
{
|
|
12824
14403
|
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 +14405,7 @@ function IconThemeSystem({
|
|
|
12826
14405
|
}
|
|
12827
14406
|
)
|
|
12828
14407
|
] }),
|
|
12829
|
-
/* @__PURE__ */ (0,
|
|
14408
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
12830
14409
|
"rect",
|
|
12831
14410
|
{
|
|
12832
14411
|
x: 29.64,
|
|
@@ -12847,7 +14426,7 @@ function IconThemeSystem({
|
|
|
12847
14426
|
}
|
|
12848
14427
|
|
|
12849
14428
|
// src/components/config-drawer.tsx
|
|
12850
|
-
var
|
|
14429
|
+
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
12851
14430
|
function ConfigDrawer({
|
|
12852
14431
|
trigger
|
|
12853
14432
|
}) {
|
|
@@ -12857,27 +14436,27 @@ function ConfigDrawer({
|
|
|
12857
14436
|
resetTheme();
|
|
12858
14437
|
resetColorTheme();
|
|
12859
14438
|
};
|
|
12860
|
-
return /* @__PURE__ */ (0,
|
|
12861
|
-
/* @__PURE__ */ (0,
|
|
14439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Sheet, { children: [
|
|
14440
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SheetTrigger, { asChild: true, children: trigger ?? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12862
14441
|
Button,
|
|
12863
14442
|
{
|
|
12864
14443
|
size: "icon",
|
|
12865
14444
|
variant: "ghost",
|
|
12866
14445
|
"aria-label": "Open theme settings",
|
|
12867
14446
|
className: "rounded-full",
|
|
12868
|
-
children: /* @__PURE__ */ (0,
|
|
14447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Settings, { "aria-hidden": "true" })
|
|
12869
14448
|
}
|
|
12870
14449
|
) }),
|
|
12871
|
-
/* @__PURE__ */ (0,
|
|
12872
|
-
/* @__PURE__ */ (0,
|
|
12873
|
-
/* @__PURE__ */ (0,
|
|
12874
|
-
/* @__PURE__ */ (0,
|
|
14450
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(SheetContent, { className: "flex flex-col", children: [
|
|
14451
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(SheetHeader, { className: "pb-0 text-start", children: [
|
|
14452
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SheetTitle, { children: "Theme Settings" }),
|
|
14453
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SheetDescription, { children: "Customize the look and feel of your dashboard." })
|
|
12875
14454
|
] }),
|
|
12876
|
-
/* @__PURE__ */ (0,
|
|
12877
|
-
/* @__PURE__ */ (0,
|
|
12878
|
-
/* @__PURE__ */ (0,
|
|
14455
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex flex-1 flex-col gap-6 overflow-hidden px-4", children: [
|
|
14456
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ThemeConfig, {}),
|
|
14457
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ThemeListSelector, {})
|
|
12879
14458
|
] }),
|
|
12880
|
-
/* @__PURE__ */ (0,
|
|
14459
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SheetFooter, { className: "gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12881
14460
|
Button,
|
|
12882
14461
|
{
|
|
12883
14462
|
variant: "destructive",
|
|
@@ -12895,7 +14474,7 @@ function SectionTitle({
|
|
|
12895
14474
|
resetAriaLabel,
|
|
12896
14475
|
className
|
|
12897
14476
|
}) {
|
|
12898
|
-
return /* @__PURE__ */ (0,
|
|
14477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
12899
14478
|
"div",
|
|
12900
14479
|
{
|
|
12901
14480
|
className: cn(
|
|
@@ -12904,7 +14483,7 @@ function SectionTitle({
|
|
|
12904
14483
|
),
|
|
12905
14484
|
children: [
|
|
12906
14485
|
title,
|
|
12907
|
-
showReset && onReset && /* @__PURE__ */ (0,
|
|
14486
|
+
showReset && onReset && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12908
14487
|
Button,
|
|
12909
14488
|
{
|
|
12910
14489
|
type: "button",
|
|
@@ -12913,7 +14492,7 @@ function SectionTitle({
|
|
|
12913
14492
|
className: "size-4 rounded-full",
|
|
12914
14493
|
onClick: onReset,
|
|
12915
14494
|
"aria-label": resetAriaLabel,
|
|
12916
|
-
children: /* @__PURE__ */ (0,
|
|
14495
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.RotateCcw, { className: "size-3" })
|
|
12917
14496
|
}
|
|
12918
14497
|
)
|
|
12919
14498
|
]
|
|
@@ -12924,7 +14503,7 @@ function RadioGroupItem2({
|
|
|
12924
14503
|
item,
|
|
12925
14504
|
isTheme = false
|
|
12926
14505
|
}) {
|
|
12927
|
-
return /* @__PURE__ */ (0,
|
|
14506
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
12928
14507
|
import_react_radio_group.Item,
|
|
12929
14508
|
{
|
|
12930
14509
|
value: item.value,
|
|
@@ -12932,7 +14511,7 @@ function RadioGroupItem2({
|
|
|
12932
14511
|
"aria-label": `Select ${item.label.toLowerCase()}`,
|
|
12933
14512
|
"aria-describedby": `${item.value}-description`,
|
|
12934
14513
|
children: [
|
|
12935
|
-
/* @__PURE__ */ (0,
|
|
14514
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
12936
14515
|
"div",
|
|
12937
14516
|
{
|
|
12938
14517
|
className: cn(
|
|
@@ -12944,8 +14523,8 @@ function RadioGroupItem2({
|
|
|
12944
14523
|
"aria-hidden": "false",
|
|
12945
14524
|
"aria-label": `${item.label} option preview`,
|
|
12946
14525
|
children: [
|
|
12947
|
-
/* @__PURE__ */ (0,
|
|
12948
|
-
|
|
14526
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
14527
|
+
import_lucide_react61.CircleCheck,
|
|
12949
14528
|
{
|
|
12950
14529
|
className: cn(
|
|
12951
14530
|
"size-6 fill-primary stroke-white",
|
|
@@ -12955,7 +14534,7 @@ function RadioGroupItem2({
|
|
|
12955
14534
|
"aria-hidden": "true"
|
|
12956
14535
|
}
|
|
12957
14536
|
),
|
|
12958
|
-
/* @__PURE__ */ (0,
|
|
14537
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12959
14538
|
item.icon,
|
|
12960
14539
|
{
|
|
12961
14540
|
className: cn(
|
|
@@ -12967,7 +14546,7 @@ function RadioGroupItem2({
|
|
|
12967
14546
|
]
|
|
12968
14547
|
}
|
|
12969
14548
|
),
|
|
12970
|
-
/* @__PURE__ */ (0,
|
|
14549
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12971
14550
|
"div",
|
|
12972
14551
|
{
|
|
12973
14552
|
className: "mt-1 text-xs",
|
|
@@ -12982,8 +14561,8 @@ function RadioGroupItem2({
|
|
|
12982
14561
|
}
|
|
12983
14562
|
function ThemeConfig() {
|
|
12984
14563
|
const { defaultTheme, theme, setTheme } = useTheme2();
|
|
12985
|
-
return /* @__PURE__ */ (0,
|
|
12986
|
-
/* @__PURE__ */ (0,
|
|
14564
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { children: [
|
|
14565
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12987
14566
|
SectionTitle,
|
|
12988
14567
|
{
|
|
12989
14568
|
title: "Theme",
|
|
@@ -12992,7 +14571,7 @@ function ThemeConfig() {
|
|
|
12992
14571
|
resetAriaLabel: "Reset theme preference to default"
|
|
12993
14572
|
}
|
|
12994
14573
|
),
|
|
12995
|
-
/* @__PURE__ */ (0,
|
|
14574
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
12996
14575
|
import_react_radio_group.Root,
|
|
12997
14576
|
{
|
|
12998
14577
|
value: theme,
|
|
@@ -13016,20 +14595,20 @@ function ThemeConfig() {
|
|
|
13016
14595
|
label: "Dark",
|
|
13017
14596
|
icon: IconThemeDark
|
|
13018
14597
|
}
|
|
13019
|
-
].map((item) => /* @__PURE__ */ (0,
|
|
14598
|
+
].map((item) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(RadioGroupItem2, { item, isTheme: true }, item.value))
|
|
13020
14599
|
}
|
|
13021
14600
|
),
|
|
13022
|
-
/* @__PURE__ */ (0,
|
|
14601
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { id: "theme-description", className: "sr-only", children: "Choose between system preference, light mode, or dark mode" })
|
|
13023
14602
|
] });
|
|
13024
14603
|
}
|
|
13025
14604
|
function ThemeListSelector() {
|
|
13026
|
-
const [search, setSearch] = (0,
|
|
14605
|
+
const [search, setSearch] = (0, import_react24.useState)("");
|
|
13027
14606
|
const { colorTheme, setColorTheme } = useColorTheme();
|
|
13028
14607
|
const filtered = colorThemes.filter(
|
|
13029
14608
|
(t) => t.label.toLowerCase().includes(search.toLowerCase())
|
|
13030
14609
|
);
|
|
13031
|
-
return /* @__PURE__ */ (0,
|
|
13032
|
-
/* @__PURE__ */ (0,
|
|
14610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex min-h-0 flex-1 flex-col", children: [
|
|
14611
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13033
14612
|
SectionTitle,
|
|
13034
14613
|
{
|
|
13035
14614
|
title: "Color Theme",
|
|
@@ -13038,9 +14617,9 @@ function ThemeListSelector() {
|
|
|
13038
14617
|
resetAriaLabel: "Reset color theme to default"
|
|
13039
14618
|
}
|
|
13040
14619
|
),
|
|
13041
|
-
/* @__PURE__ */ (0,
|
|
13042
|
-
/* @__PURE__ */ (0,
|
|
13043
|
-
/* @__PURE__ */ (0,
|
|
14620
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "relative mb-2.5", children: [
|
|
14621
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
|
|
14622
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13044
14623
|
"input",
|
|
13045
14624
|
{
|
|
13046
14625
|
type: "text",
|
|
@@ -13056,21 +14635,21 @@ function ThemeListSelector() {
|
|
|
13056
14635
|
}
|
|
13057
14636
|
)
|
|
13058
14637
|
] }),
|
|
13059
|
-
/* @__PURE__ */ (0,
|
|
14638
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("p", { className: "mb-2 text-xs text-muted-foreground font-medium", children: [
|
|
13060
14639
|
filtered.length,
|
|
13061
14640
|
" theme",
|
|
13062
14641
|
filtered.length !== 1 ? "s" : "",
|
|
13063
14642
|
" available"
|
|
13064
14643
|
] }),
|
|
13065
|
-
/* @__PURE__ */ (0,
|
|
14644
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
13066
14645
|
"div",
|
|
13067
14646
|
{
|
|
13068
14647
|
className: "flex-1 space-y-1 overflow-y-auto rounded-lg pr-1",
|
|
13069
14648
|
role: "radiogroup",
|
|
13070
14649
|
"aria-label": "Select color theme",
|
|
13071
14650
|
children: [
|
|
13072
|
-
filtered.length === 0 && /* @__PURE__ */ (0,
|
|
13073
|
-
filtered.map((ct) => /* @__PURE__ */ (0,
|
|
14651
|
+
filtered.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("p", { className: "py-8 text-center text-sm text-muted-foreground", children: "No themes found" }),
|
|
14652
|
+
filtered.map((ct) => /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
13074
14653
|
"button",
|
|
13075
14654
|
{
|
|
13076
14655
|
onClick: () => setColorTheme(ct.name),
|
|
@@ -13082,7 +14661,7 @@ function ThemeListSelector() {
|
|
|
13082
14661
|
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
14662
|
),
|
|
13084
14663
|
children: [
|
|
13085
|
-
/* @__PURE__ */ (0,
|
|
14664
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "flex gap-1.5 shrink-0", children: ct.colors.map((color, i) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13086
14665
|
"span",
|
|
13087
14666
|
{
|
|
13088
14667
|
className: cn(
|
|
@@ -13093,9 +14672,9 @@ function ThemeListSelector() {
|
|
|
13093
14672
|
},
|
|
13094
14673
|
i
|
|
13095
14674
|
)) }),
|
|
13096
|
-
/* @__PURE__ */ (0,
|
|
13097
|
-
/* @__PURE__ */ (0,
|
|
13098
|
-
ct.category === "tweakcn" && /* @__PURE__ */ (0,
|
|
14675
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex items-center gap-1.5 truncate", children: [
|
|
14676
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "text-sm font-medium truncate", children: ct.label }),
|
|
14677
|
+
ct.category === "tweakcn" && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13099
14678
|
"span",
|
|
13100
14679
|
{
|
|
13101
14680
|
className: cn(
|
|
@@ -13105,7 +14684,7 @@ function ThemeListSelector() {
|
|
|
13105
14684
|
}
|
|
13106
14685
|
)
|
|
13107
14686
|
] }),
|
|
13108
|
-
colorTheme === ct.name && /* @__PURE__ */ (0,
|
|
14687
|
+
colorTheme === ct.name && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Check, { className: "ml-auto size-4 shrink-0", strokeWidth: 3 })
|
|
13109
14688
|
]
|
|
13110
14689
|
},
|
|
13111
14690
|
ct.name
|
|
@@ -13117,7 +14696,7 @@ function ThemeListSelector() {
|
|
|
13117
14696
|
}
|
|
13118
14697
|
|
|
13119
14698
|
// src/design-system/templates/nav-user.tsx
|
|
13120
|
-
var
|
|
14699
|
+
var import_jsx_runtime117 = require("react/jsx-runtime");
|
|
13121
14700
|
function NavUser({ user: fallbackUser }) {
|
|
13122
14701
|
const { isMobile } = useSidebar();
|
|
13123
14702
|
const [open, setOpen] = useDialogState();
|
|
@@ -13126,28 +14705,28 @@ function NavUser({ user: fallbackUser }) {
|
|
|
13126
14705
|
const userEmail = auth.user?.email || fallbackUser.email;
|
|
13127
14706
|
const userAvatar = auth.user?.picture || fallbackUser.avatar;
|
|
13128
14707
|
const userInitials = userName.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
13129
|
-
return /* @__PURE__ */ (0,
|
|
13130
|
-
/* @__PURE__ */ (0,
|
|
13131
|
-
/* @__PURE__ */ (0,
|
|
14708
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(import_jsx_runtime117.Fragment, { children: [
|
|
14709
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(DropdownMenu, { modal: false, children: [
|
|
14710
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
|
|
13132
14711
|
SidebarMenuButton,
|
|
13133
14712
|
{
|
|
13134
14713
|
size: "lg",
|
|
13135
14714
|
tooltip: userName,
|
|
13136
14715
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
13137
14716
|
children: [
|
|
13138
|
-
/* @__PURE__ */ (0,
|
|
13139
|
-
/* @__PURE__ */ (0,
|
|
13140
|
-
/* @__PURE__ */ (0,
|
|
14717
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
14718
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
14719
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13141
14720
|
] }),
|
|
13142
|
-
/* @__PURE__ */ (0,
|
|
13143
|
-
/* @__PURE__ */ (0,
|
|
13144
|
-
/* @__PURE__ */ (0,
|
|
14721
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14722
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
14723
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13145
14724
|
] }),
|
|
13146
|
-
/* @__PURE__ */ (0,
|
|
14725
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.ChevronsUpDown, { className: "ml-auto size-4 shrink-0" })
|
|
13147
14726
|
]
|
|
13148
14727
|
}
|
|
13149
14728
|
) }),
|
|
13150
|
-
/* @__PURE__ */ (0,
|
|
14729
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
|
|
13151
14730
|
DropdownMenuContent,
|
|
13152
14731
|
{
|
|
13153
14732
|
className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg",
|
|
@@ -13155,43 +14734,43 @@ function NavUser({ user: fallbackUser }) {
|
|
|
13155
14734
|
align: "end",
|
|
13156
14735
|
sideOffset: 4,
|
|
13157
14736
|
children: [
|
|
13158
|
-
/* @__PURE__ */ (0,
|
|
13159
|
-
/* @__PURE__ */ (0,
|
|
13160
|
-
/* @__PURE__ */ (0,
|
|
13161
|
-
/* @__PURE__ */ (0,
|
|
14737
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex items-center gap-2 px-1 py-1.5 text-start text-sm", children: [
|
|
14738
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
14739
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
14740
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13162
14741
|
] }),
|
|
13163
|
-
/* @__PURE__ */ (0,
|
|
13164
|
-
/* @__PURE__ */ (0,
|
|
13165
|
-
/* @__PURE__ */ (0,
|
|
14742
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
14743
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
14744
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13166
14745
|
] })
|
|
13167
14746
|
] }) }),
|
|
13168
|
-
/* @__PURE__ */ (0,
|
|
13169
|
-
/* @__PURE__ */ (0,
|
|
14747
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuSeparator, {}),
|
|
14748
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
13170
14749
|
ConfigDrawer,
|
|
13171
14750
|
{
|
|
13172
|
-
trigger: /* @__PURE__ */ (0,
|
|
13173
|
-
/* @__PURE__ */ (0,
|
|
14751
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
|
|
14752
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.Palette, { className: "mr-2 h-4 w-4" }),
|
|
13174
14753
|
"Theme"
|
|
13175
14754
|
] })
|
|
13176
14755
|
}
|
|
13177
14756
|
),
|
|
13178
|
-
/* @__PURE__ */ (0,
|
|
14757
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
13179
14758
|
ConfigDrawer,
|
|
13180
14759
|
{
|
|
13181
|
-
trigger: /* @__PURE__ */ (0,
|
|
13182
|
-
/* @__PURE__ */ (0,
|
|
14760
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
|
|
14761
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.Settings, { className: "mr-2 h-4 w-4" }),
|
|
13183
14762
|
"Setting"
|
|
13184
14763
|
] })
|
|
13185
14764
|
}
|
|
13186
14765
|
),
|
|
13187
|
-
/* @__PURE__ */ (0,
|
|
13188
|
-
/* @__PURE__ */ (0,
|
|
14766
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuSeparator, {}),
|
|
14767
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
|
|
13189
14768
|
DropdownMenuItem,
|
|
13190
14769
|
{
|
|
13191
14770
|
variant: "destructive",
|
|
13192
14771
|
onClick: () => setOpen(true),
|
|
13193
14772
|
children: [
|
|
13194
|
-
/* @__PURE__ */ (0,
|
|
14773
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.LogOut, { className: "mr-2 h-4 w-4" }),
|
|
13195
14774
|
"Sign out"
|
|
13196
14775
|
]
|
|
13197
14776
|
}
|
|
@@ -13200,19 +14779,19 @@ function NavUser({ user: fallbackUser }) {
|
|
|
13200
14779
|
}
|
|
13201
14780
|
)
|
|
13202
14781
|
] }) }) }),
|
|
13203
|
-
/* @__PURE__ */ (0,
|
|
14782
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SignOutDialog, { open: !!open, onOpenChange: setOpen })
|
|
13204
14783
|
] });
|
|
13205
14784
|
}
|
|
13206
14785
|
|
|
13207
14786
|
// src/design-system/templates/app-sidebar.tsx
|
|
13208
|
-
var
|
|
14787
|
+
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
13209
14788
|
function AppSidebar() {
|
|
13210
14789
|
const { collapsible } = useLayout();
|
|
13211
|
-
return /* @__PURE__ */ (0,
|
|
13212
|
-
/* @__PURE__ */ (0,
|
|
13213
|
-
/* @__PURE__ */ (0,
|
|
13214
|
-
/* @__PURE__ */ (0,
|
|
13215
|
-
/* @__PURE__ */ (0,
|
|
14790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(Sidebar, { collapsible, variant: "sidebar", children: [
|
|
14791
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(SidebarHeader, { className: "p-2 pb-1", children: [
|
|
14792
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center justify-between gap-1", children: [
|
|
14793
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TeamSwitcher, { teams: sidebarData2.teams }) }),
|
|
14794
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "group-data-[collapsible=icon]:hidden shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
13216
14795
|
SidebarTrigger,
|
|
13217
14796
|
{
|
|
13218
14797
|
variant: "ghost",
|
|
@@ -13221,7 +14800,7 @@ function AppSidebar() {
|
|
|
13221
14800
|
}
|
|
13222
14801
|
) })
|
|
13223
14802
|
] }),
|
|
13224
|
-
/* @__PURE__ */ (0,
|
|
14803
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "hidden group-data-[collapsible=icon]:flex justify-center pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
13225
14804
|
SidebarTrigger,
|
|
13226
14805
|
{
|
|
13227
14806
|
variant: "ghost",
|
|
@@ -13230,37 +14809,37 @@ function AppSidebar() {
|
|
|
13230
14809
|
}
|
|
13231
14810
|
) })
|
|
13232
14811
|
] }),
|
|
13233
|
-
/* @__PURE__ */ (0,
|
|
13234
|
-
/* @__PURE__ */ (0,
|
|
14812
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(SidebarContent, { children: sidebarData2.navGroups.map((props) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(NavGroup, { ...props }, props.title)) }),
|
|
14813
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(NavUser, { user: sidebarData2.user }) })
|
|
13235
14814
|
] });
|
|
13236
14815
|
}
|
|
13237
14816
|
|
|
13238
14817
|
// src/design-system/templates/app-title.tsx
|
|
13239
14818
|
var import_link2 = __toESM(require("next/link"));
|
|
13240
|
-
var
|
|
13241
|
-
var
|
|
14819
|
+
var import_lucide_react63 = require("lucide-react");
|
|
14820
|
+
var import_jsx_runtime119 = require("react/jsx-runtime");
|
|
13242
14821
|
function AppTitle() {
|
|
13243
14822
|
const { setOpenMobile } = useSidebar();
|
|
13244
|
-
return /* @__PURE__ */ (0,
|
|
14823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
13245
14824
|
SidebarMenuButton,
|
|
13246
14825
|
{
|
|
13247
14826
|
size: "lg",
|
|
13248
14827
|
className: "gap-0 py-0 hover:bg-transparent active:bg-transparent",
|
|
13249
14828
|
asChild: true,
|
|
13250
|
-
children: /* @__PURE__ */ (0,
|
|
13251
|
-
/* @__PURE__ */ (0,
|
|
14829
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { children: [
|
|
14830
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13252
14831
|
import_link2.default,
|
|
13253
14832
|
{
|
|
13254
14833
|
href: "/",
|
|
13255
14834
|
onClick: () => setOpenMobile(false),
|
|
13256
14835
|
className: "grid flex-1 text-start text-sm leading-tight",
|
|
13257
14836
|
children: [
|
|
13258
|
-
/* @__PURE__ */ (0,
|
|
13259
|
-
/* @__PURE__ */ (0,
|
|
14837
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { className: "truncate font-bold", children: "Shadcn-Admin" }),
|
|
14838
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { className: "truncate text-xs", children: "Vite + ShadcnUI" })
|
|
13260
14839
|
]
|
|
13261
14840
|
}
|
|
13262
14841
|
),
|
|
13263
|
-
/* @__PURE__ */ (0,
|
|
14842
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(ToggleSidebar, {})
|
|
13264
14843
|
] })
|
|
13265
14844
|
}
|
|
13266
14845
|
) }) });
|
|
@@ -13271,7 +14850,7 @@ function ToggleSidebar({
|
|
|
13271
14850
|
...props
|
|
13272
14851
|
}) {
|
|
13273
14852
|
const { toggleSidebar } = useSidebar();
|
|
13274
|
-
return /* @__PURE__ */ (0,
|
|
14853
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
13275
14854
|
Button,
|
|
13276
14855
|
{
|
|
13277
14856
|
"data-sidebar": "trigger",
|
|
@@ -13285,31 +14864,31 @@ function ToggleSidebar({
|
|
|
13285
14864
|
},
|
|
13286
14865
|
...props,
|
|
13287
14866
|
children: [
|
|
13288
|
-
/* @__PURE__ */ (0,
|
|
13289
|
-
/* @__PURE__ */ (0,
|
|
13290
|
-
/* @__PURE__ */ (0,
|
|
14867
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react63.X, { className: "md:hidden" }),
|
|
14868
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react63.Menu, { className: "max-md:hidden" }),
|
|
14869
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
13291
14870
|
]
|
|
13292
14871
|
}
|
|
13293
14872
|
);
|
|
13294
14873
|
}
|
|
13295
14874
|
|
|
13296
14875
|
// src/design-system/templates/authenticated-layout.tsx
|
|
13297
|
-
var
|
|
14876
|
+
var import_react26 = require("react");
|
|
13298
14877
|
var import_navigation6 = require("next/navigation");
|
|
13299
14878
|
|
|
13300
14879
|
// src/components/layout/app-sidebar.tsx
|
|
13301
|
-
var
|
|
14880
|
+
var import_react25 = require("react");
|
|
13302
14881
|
|
|
13303
14882
|
// src/components/layout/nav-group.tsx
|
|
13304
14883
|
var import_link3 = __toESM(require("next/link"));
|
|
13305
14884
|
var import_navigation4 = require("next/navigation");
|
|
13306
|
-
var
|
|
13307
|
-
var
|
|
14885
|
+
var import_lucide_react64 = require("lucide-react");
|
|
14886
|
+
var import_jsx_runtime120 = require("react/jsx-runtime");
|
|
13308
14887
|
function NavGroup2({ title, items }) {
|
|
13309
14888
|
const { state, isMobile, openMobile, setOpenMobile } = useSidebar();
|
|
13310
14889
|
const href = (0, import_navigation4.usePathname)();
|
|
13311
|
-
return /* @__PURE__ */ (0,
|
|
13312
|
-
/* @__PURE__ */ (0,
|
|
14890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(SidebarGroup, { className: cn(title === "Menu" && "pt-0"), children: [
|
|
14891
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13313
14892
|
SidebarGroupLabel,
|
|
13314
14893
|
{
|
|
13315
14894
|
className: cn(
|
|
@@ -13317,8 +14896,8 @@ function NavGroup2({ title, items }) {
|
|
|
13317
14896
|
title === "Menu" && state !== "collapsed" && "sticky top-0 z-20 bg-sidebar py-1.5"
|
|
13318
14897
|
),
|
|
13319
14898
|
children: [
|
|
13320
|
-
/* @__PURE__ */ (0,
|
|
13321
|
-
title === "Menu" && !isMobile && /* @__PURE__ */ (0,
|
|
14899
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: title }),
|
|
14900
|
+
title === "Menu" && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
13322
14901
|
SidebarTrigger,
|
|
13323
14902
|
{
|
|
13324
14903
|
variant: "ghost",
|
|
@@ -13326,7 +14905,7 @@ function NavGroup2({ title, items }) {
|
|
|
13326
14905
|
"aria-label": "Toggle sidebar"
|
|
13327
14906
|
}
|
|
13328
14907
|
),
|
|
13329
|
-
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0,
|
|
14908
|
+
title === "Menu" && isMobile && openMobile && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
13330
14909
|
Button,
|
|
13331
14910
|
{
|
|
13332
14911
|
type: "button",
|
|
@@ -13335,37 +14914,37 @@ function NavGroup2({ title, items }) {
|
|
|
13335
14914
|
className: "size-6 shrink-0",
|
|
13336
14915
|
"aria-label": "Close sidebar",
|
|
13337
14916
|
onClick: () => setOpenMobile(false),
|
|
13338
|
-
children: /* @__PURE__ */ (0,
|
|
14917
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.X, { className: "size-4", "aria-hidden": "true" })
|
|
13339
14918
|
}
|
|
13340
14919
|
)
|
|
13341
14920
|
]
|
|
13342
14921
|
}
|
|
13343
14922
|
),
|
|
13344
|
-
/* @__PURE__ */ (0,
|
|
14923
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenu, { children: items.map((item) => {
|
|
13345
14924
|
const key = `${item.title}-${item.url}`;
|
|
13346
14925
|
if (!item.items)
|
|
13347
|
-
return /* @__PURE__ */ (0,
|
|
14926
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuLink2, { item, href }, key);
|
|
13348
14927
|
if (item.title === "Settings" && item.items.length === 0)
|
|
13349
|
-
return /* @__PURE__ */ (0,
|
|
14928
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuSettings2, { item }, key);
|
|
13350
14929
|
if (state === "collapsed" && !isMobile)
|
|
13351
|
-
return /* @__PURE__ */ (0,
|
|
13352
|
-
return /* @__PURE__ */ (0,
|
|
14930
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuCollapsedDropdown2, { item, href }, key);
|
|
14931
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuCollapsible2, { item, href }, key);
|
|
13353
14932
|
}) })
|
|
13354
14933
|
] });
|
|
13355
14934
|
}
|
|
13356
14935
|
function NavBadge2({ children }) {
|
|
13357
|
-
return /* @__PURE__ */ (0,
|
|
14936
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Badge, { className: "rounded-full px-1 py-0 text-xs", children });
|
|
13358
14937
|
}
|
|
13359
14938
|
function SidebarMenuLink2({ item, href }) {
|
|
13360
14939
|
const { setOpenMobile } = useSidebar();
|
|
13361
14940
|
const { setShowInlineNotFound } = useLayout();
|
|
13362
|
-
return /* @__PURE__ */ (0,
|
|
14941
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
13363
14942
|
SidebarMenuButton,
|
|
13364
14943
|
{
|
|
13365
14944
|
asChild: true,
|
|
13366
14945
|
isActive: checkIsActive2(href, item),
|
|
13367
14946
|
tooltip: item.title,
|
|
13368
|
-
children: /* @__PURE__ */ (0,
|
|
14947
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13369
14948
|
import_link3.default,
|
|
13370
14949
|
{
|
|
13371
14950
|
href: item.url,
|
|
@@ -13374,9 +14953,9 @@ function SidebarMenuLink2({ item, href }) {
|
|
|
13374
14953
|
setOpenMobile(false);
|
|
13375
14954
|
},
|
|
13376
14955
|
children: [
|
|
13377
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13378
|
-
/* @__PURE__ */ (0,
|
|
13379
|
-
item.badge && /* @__PURE__ */ (0,
|
|
14956
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(item.icon, {}),
|
|
14957
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: item.title }),
|
|
14958
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(NavBadge2, { children: item.badge })
|
|
13380
14959
|
]
|
|
13381
14960
|
}
|
|
13382
14961
|
)
|
|
@@ -13386,7 +14965,7 @@ function SidebarMenuLink2({ item, href }) {
|
|
|
13386
14965
|
function SidebarMenuSettings2({ item }) {
|
|
13387
14966
|
const { setOpenMobile } = useSidebar();
|
|
13388
14967
|
const { showInlineNotFound, setShowInlineNotFound } = useLayout();
|
|
13389
|
-
return /* @__PURE__ */ (0,
|
|
14968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13390
14969
|
SidebarMenuButton,
|
|
13391
14970
|
{
|
|
13392
14971
|
tooltip: item.title,
|
|
@@ -13396,8 +14975,8 @@ function SidebarMenuSettings2({ item }) {
|
|
|
13396
14975
|
setOpenMobile(false);
|
|
13397
14976
|
},
|
|
13398
14977
|
children: [
|
|
13399
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13400
|
-
/* @__PURE__ */ (0,
|
|
14978
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(item.icon, {}),
|
|
14979
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: item.title })
|
|
13401
14980
|
]
|
|
13402
14981
|
}
|
|
13403
14982
|
) });
|
|
@@ -13408,25 +14987,25 @@ function SidebarMenuCollapsible2({
|
|
|
13408
14987
|
}) {
|
|
13409
14988
|
const { setOpenMobile } = useSidebar();
|
|
13410
14989
|
const { setShowInlineNotFound } = useLayout();
|
|
13411
|
-
return /* @__PURE__ */ (0,
|
|
14990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
13412
14991
|
Collapsible,
|
|
13413
14992
|
{
|
|
13414
14993
|
asChild: true,
|
|
13415
14994
|
defaultOpen: checkIsActive2(href, item, true),
|
|
13416
14995
|
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,
|
|
14996
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(SidebarMenuItem, { children: [
|
|
14997
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(SidebarMenuButton, { tooltip: item.title, children: [
|
|
14998
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(item.icon, {}),
|
|
14999
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: item.title }),
|
|
15000
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(NavBadge2, { children: item.badge }),
|
|
15001
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180" })
|
|
13423
15002
|
] }) }),
|
|
13424
|
-
/* @__PURE__ */ (0,
|
|
15003
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CollapsibleContent, { className: "CollapsibleContent", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuSubItem, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
13425
15004
|
SidebarMenuSubButton,
|
|
13426
15005
|
{
|
|
13427
15006
|
asChild: true,
|
|
13428
15007
|
isActive: checkIsActive2(href, subItem),
|
|
13429
|
-
children: /* @__PURE__ */ (0,
|
|
15008
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13430
15009
|
import_link3.default,
|
|
13431
15010
|
{
|
|
13432
15011
|
href: subItem.url,
|
|
@@ -13435,9 +15014,9 @@ function SidebarMenuCollapsible2({
|
|
|
13435
15014
|
setOpenMobile(false);
|
|
13436
15015
|
},
|
|
13437
15016
|
children: [
|
|
13438
|
-
subItem.icon && /* @__PURE__ */ (0,
|
|
13439
|
-
/* @__PURE__ */ (0,
|
|
13440
|
-
subItem.badge && /* @__PURE__ */ (0,
|
|
15017
|
+
subItem.icon && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(subItem.icon, {}),
|
|
15018
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: subItem.title }),
|
|
15019
|
+
subItem.badge && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(NavBadge2, { children: subItem.badge })
|
|
13441
15020
|
]
|
|
13442
15021
|
}
|
|
13443
15022
|
)
|
|
@@ -13451,36 +15030,36 @@ function SidebarMenuCollapsedDropdown2({
|
|
|
13451
15030
|
item,
|
|
13452
15031
|
href
|
|
13453
15032
|
}) {
|
|
13454
|
-
return /* @__PURE__ */ (0,
|
|
13455
|
-
/* @__PURE__ */ (0,
|
|
15033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenu, { children: [
|
|
15034
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13456
15035
|
SidebarMenuButton,
|
|
13457
15036
|
{
|
|
13458
15037
|
tooltip: item.title,
|
|
13459
15038
|
isActive: checkIsActive2(href, item),
|
|
13460
15039
|
children: [
|
|
13461
|
-
item.icon && /* @__PURE__ */ (0,
|
|
13462
|
-
/* @__PURE__ */ (0,
|
|
13463
|
-
item.badge && /* @__PURE__ */ (0,
|
|
13464
|
-
/* @__PURE__ */ (0,
|
|
15040
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(item.icon, {}),
|
|
15041
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: item.title }),
|
|
15042
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(NavBadge2, { children: item.badge }),
|
|
15043
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react64.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
|
|
13465
15044
|
]
|
|
13466
15045
|
}
|
|
13467
15046
|
) }),
|
|
13468
|
-
/* @__PURE__ */ (0,
|
|
13469
|
-
/* @__PURE__ */ (0,
|
|
15047
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuContent, { side: "right", align: "start", sideOffset: 4, children: [
|
|
15048
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(DropdownMenuLabel, { children: [
|
|
13470
15049
|
item.title,
|
|
13471
15050
|
" ",
|
|
13472
15051
|
item.badge ? `(${item.badge})` : ""
|
|
13473
15052
|
] }),
|
|
13474
|
-
/* @__PURE__ */ (0,
|
|
13475
|
-
item.items.map((sub) => /* @__PURE__ */ (0,
|
|
15053
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuSeparator, {}),
|
|
15054
|
+
item.items.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
13476
15055
|
import_link3.default,
|
|
13477
15056
|
{
|
|
13478
15057
|
href: sub.url,
|
|
13479
15058
|
className: `${checkIsActive2(href, sub) ? "bg-secondary" : ""}`,
|
|
13480
15059
|
children: [
|
|
13481
|
-
sub.icon && /* @__PURE__ */ (0,
|
|
13482
|
-
/* @__PURE__ */ (0,
|
|
13483
|
-
sub.badge && /* @__PURE__ */ (0,
|
|
15060
|
+
sub.icon && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(sub.icon, {}),
|
|
15061
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "max-w-52 text-wrap", children: sub.title }),
|
|
15062
|
+
sub.badge && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "ms-auto text-xs", children: sub.badge })
|
|
13484
15063
|
]
|
|
13485
15064
|
}
|
|
13486
15065
|
) }, `${sub.title}-${sub.url}`))
|
|
@@ -13495,9 +15074,9 @@ function checkIsActive2(href, item, mainNav = false) {
|
|
|
13495
15074
|
}
|
|
13496
15075
|
|
|
13497
15076
|
// src/components/layout/nav-user.tsx
|
|
13498
|
-
var
|
|
15077
|
+
var import_lucide_react65 = require("lucide-react");
|
|
13499
15078
|
var import_link4 = __toESM(require("next/link"));
|
|
13500
|
-
var
|
|
15079
|
+
var import_jsx_runtime121 = require("react/jsx-runtime");
|
|
13501
15080
|
function NavUser2({ user: fallbackUser }) {
|
|
13502
15081
|
const { isMobile } = useSidebar();
|
|
13503
15082
|
const [open, setOpen] = useDialogState();
|
|
@@ -13507,28 +15086,28 @@ function NavUser2({ user: fallbackUser }) {
|
|
|
13507
15086
|
const userEmail = auth.user?.email || fallbackUser.email;
|
|
13508
15087
|
const userAvatar = auth.user?.picture || fallbackUser.avatar;
|
|
13509
15088
|
const userInitials = userName.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
13510
|
-
return /* @__PURE__ */ (0,
|
|
13511
|
-
/* @__PURE__ */ (0,
|
|
13512
|
-
/* @__PURE__ */ (0,
|
|
15089
|
+
return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
|
|
15090
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenu, { modal: false, children: [
|
|
15091
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
|
|
13513
15092
|
SidebarMenuButton,
|
|
13514
15093
|
{
|
|
13515
15094
|
size: "lg",
|
|
13516
15095
|
tooltip: userName,
|
|
13517
15096
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
13518
15097
|
children: [
|
|
13519
|
-
/* @__PURE__ */ (0,
|
|
13520
|
-
/* @__PURE__ */ (0,
|
|
13521
|
-
/* @__PURE__ */ (0,
|
|
15098
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
15099
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
15100
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13522
15101
|
] }),
|
|
13523
|
-
/* @__PURE__ */ (0,
|
|
13524
|
-
/* @__PURE__ */ (0,
|
|
13525
|
-
/* @__PURE__ */ (0,
|
|
15102
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
15103
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
15104
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13526
15105
|
] }),
|
|
13527
|
-
/* @__PURE__ */ (0,
|
|
15106
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.ChevronsUpDown, { className: "ml-auto size-4 shrink-0" })
|
|
13528
15107
|
]
|
|
13529
15108
|
}
|
|
13530
15109
|
) }),
|
|
13531
|
-
/* @__PURE__ */ (0,
|
|
15110
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
|
|
13532
15111
|
DropdownMenuContent,
|
|
13533
15112
|
{
|
|
13534
15113
|
className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg",
|
|
@@ -13536,59 +15115,59 @@ function NavUser2({ user: fallbackUser }) {
|
|
|
13536
15115
|
align: "end",
|
|
13537
15116
|
sideOffset: 4,
|
|
13538
15117
|
children: [
|
|
13539
|
-
/* @__PURE__ */ (0,
|
|
13540
|
-
/* @__PURE__ */ (0,
|
|
13541
|
-
/* @__PURE__ */ (0,
|
|
13542
|
-
/* @__PURE__ */ (0,
|
|
15118
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex items-center gap-2 px-1 py-1.5 text-start text-sm", children: [
|
|
15119
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
|
|
15120
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
|
|
15121
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
|
|
13543
15122
|
] }),
|
|
13544
|
-
/* @__PURE__ */ (0,
|
|
13545
|
-
/* @__PURE__ */ (0,
|
|
13546
|
-
/* @__PURE__ */ (0,
|
|
15123
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
|
|
15124
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "truncate font-semibold", children: userName }),
|
|
15125
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
13547
15126
|
] })
|
|
13548
15127
|
] }) }),
|
|
13549
|
-
/* @__PURE__ */ (0,
|
|
13550
|
-
/* @__PURE__ */ (0,
|
|
13551
|
-
/* @__PURE__ */ (0,
|
|
15128
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(DropdownMenuSeparator, {}),
|
|
15129
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
15130
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.User, { className: "mr-2 h-4 w-4" }),
|
|
13552
15131
|
"My Profile"
|
|
13553
15132
|
] }),
|
|
13554
|
-
/* @__PURE__ */ (0,
|
|
13555
|
-
/* @__PURE__ */ (0,
|
|
15133
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
15134
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.Bell, { className: "mr-2 h-4 w-4" }),
|
|
13556
15135
|
"Notifications"
|
|
13557
15136
|
] }),
|
|
13558
|
-
/* @__PURE__ */ (0,
|
|
13559
|
-
/* @__PURE__ */ (0,
|
|
15137
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
15138
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.MessageCircle, { className: "mr-2 h-4 w-4" }),
|
|
13560
15139
|
"Help & Support"
|
|
13561
15140
|
] }),
|
|
13562
|
-
/* @__PURE__ */ (0,
|
|
13563
|
-
/* @__PURE__ */ (0,
|
|
13564
|
-
/* @__PURE__ */ (0,
|
|
15141
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(DropdownMenuSeparator, {}),
|
|
15142
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
15143
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.CreditCard, { className: "mr-2 h-4 w-4" }),
|
|
13565
15144
|
"Subscriptions"
|
|
13566
15145
|
] }),
|
|
13567
|
-
/* @__PURE__ */ (0,
|
|
13568
|
-
/* @__PURE__ */ (0,
|
|
15146
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_link4.default, { href: "/apps", children: [
|
|
15147
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.ShoppingBag, { className: "mr-2 h-4 w-4" }),
|
|
13569
15148
|
"Buy Apps"
|
|
13570
15149
|
] }) }),
|
|
13571
|
-
/* @__PURE__ */ (0,
|
|
15150
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
|
|
13572
15151
|
ConfigDrawer,
|
|
13573
15152
|
{
|
|
13574
|
-
trigger: /* @__PURE__ */ (0,
|
|
13575
|
-
/* @__PURE__ */ (0,
|
|
15153
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
|
|
15154
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.Palette, { className: "mr-2 h-4 w-4" }),
|
|
13576
15155
|
"Theme Settings"
|
|
13577
15156
|
] })
|
|
13578
15157
|
}
|
|
13579
15158
|
),
|
|
13580
|
-
/* @__PURE__ */ (0,
|
|
13581
|
-
/* @__PURE__ */ (0,
|
|
15159
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
|
|
15160
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.Settings, { className: "mr-2 h-4 w-4" }),
|
|
13582
15161
|
"Settings"
|
|
13583
15162
|
] }),
|
|
13584
|
-
/* @__PURE__ */ (0,
|
|
13585
|
-
/* @__PURE__ */ (0,
|
|
15163
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(DropdownMenuSeparator, {}),
|
|
15164
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
|
|
13586
15165
|
DropdownMenuItem,
|
|
13587
15166
|
{
|
|
13588
15167
|
variant: "destructive",
|
|
13589
15168
|
onClick: () => setOpen(true),
|
|
13590
15169
|
children: [
|
|
13591
|
-
/* @__PURE__ */ (0,
|
|
15170
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_lucide_react65.LogOut, { className: "mr-2 h-4 w-4" }),
|
|
13592
15171
|
"Sign out"
|
|
13593
15172
|
]
|
|
13594
15173
|
}
|
|
@@ -13597,12 +15176,12 @@ function NavUser2({ user: fallbackUser }) {
|
|
|
13597
15176
|
}
|
|
13598
15177
|
)
|
|
13599
15178
|
] }) }) }),
|
|
13600
|
-
/* @__PURE__ */ (0,
|
|
15179
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(SignOutDialog, { open: !!open, onOpenChange: setOpen })
|
|
13601
15180
|
] });
|
|
13602
15181
|
}
|
|
13603
15182
|
|
|
13604
15183
|
// src/components/layout/app-sidebar.tsx
|
|
13605
|
-
var
|
|
15184
|
+
var import_jsx_runtime122 = (
|
|
13606
15185
|
// Sidebar ko fixed "sidebar" variant par lock kiya gaya hai (floating remove).
|
|
13607
15186
|
require("react/jsx-runtime")
|
|
13608
15187
|
);
|
|
@@ -13610,7 +15189,7 @@ function AppSidebar2() {
|
|
|
13610
15189
|
const { collapsible } = useLayout();
|
|
13611
15190
|
const currentUser = useAuthStore((state) => state.auth.user);
|
|
13612
15191
|
const { unreadCount, fetchNotifications, subscribeToNotifications, unsubscribe } = useNotificationStore();
|
|
13613
|
-
(0,
|
|
15192
|
+
(0, import_react25.useEffect)(() => {
|
|
13614
15193
|
if (currentUser) {
|
|
13615
15194
|
fetchNotifications(currentUser.accountNo);
|
|
13616
15195
|
subscribeToNotifications(currentUser.accountNo);
|
|
@@ -13634,9 +15213,9 @@ function AppSidebar2() {
|
|
|
13634
15213
|
})
|
|
13635
15214
|
}))
|
|
13636
15215
|
};
|
|
13637
|
-
return /* @__PURE__ */ (0,
|
|
13638
|
-
/* @__PURE__ */ (0,
|
|
13639
|
-
/* @__PURE__ */ (0,
|
|
15216
|
+
return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Sidebar, { collapsible, variant: "sidebar", children: [
|
|
15217
|
+
/* @__PURE__ */ (0, import_jsx_runtime122.jsx)(SidebarHeader, { className: "pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(TeamSwitcher, { teams: dynamicSidebarData.teams }) }),
|
|
15218
|
+
/* @__PURE__ */ (0, import_jsx_runtime122.jsx)("div", { className: "hidden group-data-[state=collapsed]:flex justify-center py-2", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
|
|
13640
15219
|
SidebarTrigger,
|
|
13641
15220
|
{
|
|
13642
15221
|
variant: "ghost",
|
|
@@ -13644,15 +15223,15 @@ function AppSidebar2() {
|
|
|
13644
15223
|
"aria-label": "Toggle sidebar"
|
|
13645
15224
|
}
|
|
13646
15225
|
) }),
|
|
13647
|
-
/* @__PURE__ */ (0,
|
|
13648
|
-
/* @__PURE__ */ (0,
|
|
15226
|
+
/* @__PURE__ */ (0, import_jsx_runtime122.jsx)(SidebarContent, { children: dynamicSidebarData.navGroups.map((props) => /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(NavGroup2, { ...props }, props.title)) }),
|
|
15227
|
+
/* @__PURE__ */ (0, import_jsx_runtime122.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(NavUser2, { user: dynamicSidebarData.user }) })
|
|
13649
15228
|
] });
|
|
13650
15229
|
}
|
|
13651
15230
|
|
|
13652
15231
|
// src/components/skip-to-main.tsx
|
|
13653
|
-
var
|
|
15232
|
+
var import_jsx_runtime123 = require("react/jsx-runtime");
|
|
13654
15233
|
function SkipToMain() {
|
|
13655
|
-
return /* @__PURE__ */ (0,
|
|
15234
|
+
return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
|
|
13656
15235
|
"a",
|
|
13657
15236
|
{
|
|
13658
15237
|
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 +15243,7 @@ function SkipToMain() {
|
|
|
13664
15243
|
|
|
13665
15244
|
// src/features/errors/not-found-error.tsx
|
|
13666
15245
|
var import_navigation5 = require("next/navigation");
|
|
13667
|
-
var
|
|
15246
|
+
var import_jsx_runtime124 = require("react/jsx-runtime");
|
|
13668
15247
|
function NotFoundError({
|
|
13669
15248
|
className,
|
|
13670
15249
|
embedded = false,
|
|
@@ -13682,8 +15261,8 @@ function NotFoundError({
|
|
|
13682
15261
|
if (onDismiss) onDismiss();
|
|
13683
15262
|
router.push("/");
|
|
13684
15263
|
};
|
|
13685
|
-
return /* @__PURE__ */ (0,
|
|
13686
|
-
/* @__PURE__ */ (0,
|
|
15264
|
+
return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: cn(embedded ? "min-h-96 w-full py-8" : "h-svh", className), children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("div", { className: "m-auto flex h-full w-full flex-col items-center justify-center gap-2", children: [
|
|
15265
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
13687
15266
|
"h1",
|
|
13688
15267
|
{
|
|
13689
15268
|
className: cn(
|
|
@@ -13693,31 +15272,31 @@ function NotFoundError({
|
|
|
13693
15272
|
children: "404"
|
|
13694
15273
|
}
|
|
13695
15274
|
),
|
|
13696
|
-
/* @__PURE__ */ (0,
|
|
13697
|
-
/* @__PURE__ */ (0,
|
|
15275
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)("span", { className: "font-medium", children: "Oops! Page Not Found :-(!" }),
|
|
15276
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("p", { className: "text-center text-muted-foreground", children: [
|
|
13698
15277
|
"It seems like the page you're looking for ",
|
|
13699
|
-
/* @__PURE__ */ (0,
|
|
15278
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)("br", {}),
|
|
13700
15279
|
"does not exist or might have been removed."
|
|
13701
15280
|
] }),
|
|
13702
|
-
/* @__PURE__ */ (0,
|
|
13703
|
-
/* @__PURE__ */ (0,
|
|
13704
|
-
/* @__PURE__ */ (0,
|
|
15281
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("div", { className: "mt-6 flex gap-4", children: [
|
|
15282
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Button, { variant: "outline", onClick: handleGoBack, children: "Go Back" }),
|
|
15283
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Button, { onClick: handleGoHome, children: "Back to Home" })
|
|
13705
15284
|
] })
|
|
13706
15285
|
] }) });
|
|
13707
15286
|
}
|
|
13708
15287
|
|
|
13709
15288
|
// src/design-system/templates/authenticated-layout.tsx
|
|
13710
|
-
var
|
|
15289
|
+
var import_jsx_runtime125 = require("react/jsx-runtime");
|
|
13711
15290
|
function AuthenticatedLayoutContent({ children }) {
|
|
13712
15291
|
const { showInlineNotFound, setShowInlineNotFound } = useLayout();
|
|
13713
15292
|
const pathname = (0, import_navigation6.usePathname)();
|
|
13714
|
-
(0,
|
|
15293
|
+
(0, import_react26.useEffect)(() => {
|
|
13715
15294
|
setShowInlineNotFound(false);
|
|
13716
15295
|
}, [pathname, setShowInlineNotFound]);
|
|
13717
|
-
return /* @__PURE__ */ (0,
|
|
13718
|
-
/* @__PURE__ */ (0,
|
|
13719
|
-
/* @__PURE__ */ (0,
|
|
13720
|
-
/* @__PURE__ */ (0,
|
|
15296
|
+
return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_jsx_runtime125.Fragment, { children: [
|
|
15297
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(SkipToMain, {}),
|
|
15298
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(AppSidebar2, {}),
|
|
15299
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
13721
15300
|
SidebarInset,
|
|
13722
15301
|
{
|
|
13723
15302
|
className: cn(
|
|
@@ -13725,7 +15304,7 @@ function AuthenticatedLayoutContent({ children }) {
|
|
|
13725
15304
|
"has-[[data-layout=fixed]]:h-svh has-data-[layout=fixed]:h-svh",
|
|
13726
15305
|
"peer-data-[variant=inset]:has-data-[layout=fixed]:h-[calc(100svh-(var(--spacing)*4))]"
|
|
13727
15306
|
),
|
|
13728
|
-
children: showInlineNotFound ? /* @__PURE__ */ (0,
|
|
15307
|
+
children: showInlineNotFound ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
13729
15308
|
NotFoundError,
|
|
13730
15309
|
{
|
|
13731
15310
|
embedded: true,
|
|
@@ -13737,24 +15316,24 @@ function AuthenticatedLayoutContent({ children }) {
|
|
|
13737
15316
|
] });
|
|
13738
15317
|
}
|
|
13739
15318
|
function AuthenticatedLayout({ children }) {
|
|
13740
|
-
const [defaultOpen, setDefaultOpen] = (0,
|
|
13741
|
-
const [isMounted, setIsMounted] = (0,
|
|
13742
|
-
(0,
|
|
15319
|
+
const [defaultOpen, setDefaultOpen] = (0, import_react26.useState)(true);
|
|
15320
|
+
const [isMounted, setIsMounted] = (0, import_react26.useState)(false);
|
|
15321
|
+
(0, import_react26.useEffect)(() => {
|
|
13743
15322
|
setDefaultOpen(getCookie("sidebar_state") !== "false");
|
|
13744
15323
|
setIsMounted(true);
|
|
13745
15324
|
}, []);
|
|
13746
15325
|
if (!isMounted) {
|
|
13747
15326
|
return null;
|
|
13748
15327
|
}
|
|
13749
|
-
return /* @__PURE__ */ (0,
|
|
15328
|
+
return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(SearchProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(LayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(SidebarProvider, { defaultOpen, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(AuthenticatedLayoutContent, { children }) }) }) });
|
|
13750
15329
|
}
|
|
13751
15330
|
|
|
13752
15331
|
// src/design-system/templates/header.tsx
|
|
13753
|
-
var
|
|
13754
|
-
var
|
|
15332
|
+
var import_react27 = require("react");
|
|
15333
|
+
var import_jsx_runtime126 = require("react/jsx-runtime");
|
|
13755
15334
|
function Header2({ className, fixed, children, ...props }) {
|
|
13756
|
-
const [offset, setOffset] = (0,
|
|
13757
|
-
(0,
|
|
15335
|
+
const [offset, setOffset] = (0, import_react27.useState)(0);
|
|
15336
|
+
(0, import_react27.useEffect)(() => {
|
|
13758
15337
|
const onScroll = () => {
|
|
13759
15338
|
setOffset(document.body.scrollTop || document.documentElement.scrollTop);
|
|
13760
15339
|
};
|
|
@@ -13763,7 +15342,7 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13763
15342
|
}, []);
|
|
13764
15343
|
return (
|
|
13765
15344
|
// Page header container: fixed mode me top par sticky behavior deta hai.
|
|
13766
|
-
/* @__PURE__ */ (0,
|
|
15345
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
13767
15346
|
"header",
|
|
13768
15347
|
{
|
|
13769
15348
|
className: cn(
|
|
@@ -13773,7 +15352,7 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13773
15352
|
className
|
|
13774
15353
|
),
|
|
13775
15354
|
...props,
|
|
13776
|
-
children: /* @__PURE__ */ (0,
|
|
15355
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
|
|
13777
15356
|
"div",
|
|
13778
15357
|
{
|
|
13779
15358
|
className: cn(
|
|
@@ -13782,7 +15361,7 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13782
15361
|
offset > 10 && fixed && "after:absolute after:inset-0 after:-z-10 after:bg-background/20 after:backdrop-blur-lg"
|
|
13783
15362
|
),
|
|
13784
15363
|
children: [
|
|
13785
|
-
/* @__PURE__ */ (0,
|
|
15364
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(AppLogo, { className: "shrink-0 md:hidden" }),
|
|
13786
15365
|
children
|
|
13787
15366
|
]
|
|
13788
15367
|
}
|
|
@@ -13793,9 +15372,9 @@ function Header2({ className, fixed, children, ...props }) {
|
|
|
13793
15372
|
}
|
|
13794
15373
|
|
|
13795
15374
|
// src/design-system/templates/main.tsx
|
|
13796
|
-
var
|
|
15375
|
+
var import_jsx_runtime127 = require("react/jsx-runtime");
|
|
13797
15376
|
function Main({ fixed, className, fluid, ...props }) {
|
|
13798
|
-
return /* @__PURE__ */ (0,
|
|
15377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
|
|
13799
15378
|
"main",
|
|
13800
15379
|
{
|
|
13801
15380
|
"data-layout": fixed ? "fixed" : "auto",
|
|
@@ -13813,21 +15392,21 @@ function Main({ fixed, className, fluid, ...props }) {
|
|
|
13813
15392
|
}
|
|
13814
15393
|
|
|
13815
15394
|
// src/design-system/templates/sidebar-search.tsx
|
|
13816
|
-
var
|
|
13817
|
-
var
|
|
15395
|
+
var import_lucide_react66 = require("lucide-react");
|
|
15396
|
+
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
13818
15397
|
function SidebarSearch() {
|
|
13819
15398
|
const { setOpen } = useSearch();
|
|
13820
|
-
return /* @__PURE__ */ (0,
|
|
15399
|
+
return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
|
|
13821
15400
|
SidebarMenuButton,
|
|
13822
15401
|
{
|
|
13823
15402
|
onClick: () => setOpen(true),
|
|
13824
15403
|
tooltip: "Search (\u2318K)",
|
|
13825
15404
|
className: "bg-sidebar-accent/50 hover:bg-sidebar-accent border border-sidebar-border/60 text-muted-foreground hover:text-foreground",
|
|
13826
15405
|
children: [
|
|
13827
|
-
/* @__PURE__ */ (0,
|
|
13828
|
-
/* @__PURE__ */ (0,
|
|
13829
|
-
/* @__PURE__ */ (0,
|
|
13830
|
-
/* @__PURE__ */ (0,
|
|
15406
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react66.SearchIcon, { className: "size-4 shrink-0" }),
|
|
15407
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "flex-1 text-left text-xs font-normal group-data-[collapsible=icon]:hidden", children: "Search..." }),
|
|
15408
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.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: [
|
|
15409
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "text-[10px]", children: "\u2318" }),
|
|
13831
15410
|
"K"
|
|
13832
15411
|
] })
|
|
13833
15412
|
]
|
|
@@ -13837,8 +15416,8 @@ function SidebarSearch() {
|
|
|
13837
15416
|
|
|
13838
15417
|
// src/design-system/templates/top-nav.tsx
|
|
13839
15418
|
var import_link5 = __toESM(require("next/link"));
|
|
13840
|
-
var
|
|
13841
|
-
var
|
|
15419
|
+
var import_lucide_react67 = require("lucide-react");
|
|
15420
|
+
var import_jsx_runtime129 = require("react/jsx-runtime");
|
|
13842
15421
|
function TopNav({ className, links, ...props }) {
|
|
13843
15422
|
const renderLink = ({
|
|
13844
15423
|
title,
|
|
@@ -13849,7 +15428,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
13849
15428
|
}) => {
|
|
13850
15429
|
const className2 = `text-sm font-medium transition-colors hover:text-primary ${isActive ? "" : "text-muted-foreground"}`;
|
|
13851
15430
|
if (onClick) {
|
|
13852
|
-
return /* @__PURE__ */ (0,
|
|
15431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
13853
15432
|
"button",
|
|
13854
15433
|
{
|
|
13855
15434
|
type: "button",
|
|
@@ -13861,7 +15440,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
13861
15440
|
title
|
|
13862
15441
|
);
|
|
13863
15442
|
}
|
|
13864
|
-
return /* @__PURE__ */ (0,
|
|
15443
|
+
return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
13865
15444
|
import_link5.default,
|
|
13866
15445
|
{
|
|
13867
15446
|
href,
|
|
@@ -13872,9 +15451,9 @@ function TopNav({ className, links, ...props }) {
|
|
|
13872
15451
|
title
|
|
13873
15452
|
);
|
|
13874
15453
|
};
|
|
13875
|
-
return /* @__PURE__ */ (0,
|
|
13876
|
-
/* @__PURE__ */ (0,
|
|
13877
|
-
/* @__PURE__ */ (0,
|
|
15454
|
+
return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_jsx_runtime129.Fragment, { children: [
|
|
15455
|
+
/* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(DropdownMenu, { modal: false, children: [
|
|
15456
|
+
/* @__PURE__ */ (0, import_jsx_runtime129.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
|
|
13878
15457
|
Button,
|
|
13879
15458
|
{
|
|
13880
15459
|
size: "icon",
|
|
@@ -13884,18 +15463,18 @@ function TopNav({ className, links, ...props }) {
|
|
|
13884
15463
|
className
|
|
13885
15464
|
),
|
|
13886
15465
|
children: [
|
|
13887
|
-
/* @__PURE__ */ (0,
|
|
13888
|
-
/* @__PURE__ */ (0,
|
|
15466
|
+
/* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_lucide_react67.Menu, {}),
|
|
15467
|
+
/* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "sr-only", children: "Toggle navigation menu" })
|
|
13889
15468
|
]
|
|
13890
15469
|
}
|
|
13891
15470
|
) }),
|
|
13892
|
-
/* @__PURE__ */ (0,
|
|
15471
|
+
/* @__PURE__ */ (0, import_jsx_runtime129.jsx)(DropdownMenuContent, { side: "bottom", align: "start", children: links.map((link) => /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
13893
15472
|
DropdownMenuItem,
|
|
13894
15473
|
{
|
|
13895
15474
|
disabled: link.disabled,
|
|
13896
15475
|
onClick: link.onClick,
|
|
13897
15476
|
asChild: !link.onClick,
|
|
13898
|
-
children: link.onClick ? /* @__PURE__ */ (0,
|
|
15477
|
+
children: link.onClick ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: !link.isActive ? "text-muted-foreground" : "", children: link.title }) : /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
13899
15478
|
import_link5.default,
|
|
13900
15479
|
{
|
|
13901
15480
|
href: link.href,
|
|
@@ -13908,7 +15487,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
13908
15487
|
link.title
|
|
13909
15488
|
)) })
|
|
13910
15489
|
] }),
|
|
13911
|
-
/* @__PURE__ */ (0,
|
|
15490
|
+
/* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
13912
15491
|
"nav",
|
|
13913
15492
|
{
|
|
13914
15493
|
className: cn(
|
|
@@ -14091,7 +15670,10 @@ function TopNav({ className, links, ...props }) {
|
|
|
14091
15670
|
FieldSeparator,
|
|
14092
15671
|
FieldSet,
|
|
14093
15672
|
FieldTitle,
|
|
15673
|
+
FileCardItem,
|
|
15674
|
+
FileUploadForm,
|
|
14094
15675
|
FilterBar,
|
|
15676
|
+
FolderTreeItem,
|
|
14095
15677
|
Form,
|
|
14096
15678
|
FormControl,
|
|
14097
15679
|
FormDescription,
|
|
@@ -14244,6 +15826,7 @@ function TopNav({ className, links, ...props }) {
|
|
|
14244
15826
|
Spinner,
|
|
14245
15827
|
Stats01,
|
|
14246
15828
|
StatusBadge,
|
|
15829
|
+
StorageStatCard,
|
|
14247
15830
|
Switch,
|
|
14248
15831
|
Table,
|
|
14249
15832
|
TableBody,
|
|
@@ -14271,12 +15854,15 @@ function TopNav({ className, links, ...props }) {
|
|
|
14271
15854
|
TooltipTrigger,
|
|
14272
15855
|
TopNav,
|
|
14273
15856
|
TypingIndicator,
|
|
15857
|
+
UserFileCardsView,
|
|
14274
15858
|
WizardTemplate,
|
|
14275
15859
|
WorkspaceTemplate,
|
|
14276
15860
|
badgeVariants,
|
|
14277
15861
|
buttonGroupVariants,
|
|
14278
15862
|
buttonVariants,
|
|
14279
15863
|
downloadQrCode,
|
|
15864
|
+
formatBytes,
|
|
15865
|
+
getFileCategoryTheme,
|
|
14280
15866
|
navigationMenuTriggerStyle,
|
|
14281
15867
|
sidebarData,
|
|
14282
15868
|
statusBadgeVariants,
|