@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 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 import_jsx_runtime94 = require("react/jsx-runtime");
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, import_jsx_runtime94.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
11407
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
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, import_jsx_runtime94.jsx)(
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, import_jsx_runtime94.jsx)("div", { className: "flex-1", children }),
11430
- footer && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "pt-2", children: footer })
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 import_lucide_react48 = require("lucide-react");
11436
- var import_jsx_runtime95 = require("react/jsx-runtime");
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, import_jsx_runtime95.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
11452
- /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex flex-col gap-2", children: [
11453
- onBack && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
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, import_jsx_runtime95.jsx)(import_lucide_react48.ArrowLeft, { className: "h-3.5 w-3.5" }),
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, import_jsx_runtime95.jsx)(
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, import_jsx_runtime95.jsx)("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: highlights }),
11478
- /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
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, import_jsx_runtime95.jsx)("div", { className: cn(sidebar ? "lg:col-span-2 space-y-6" : "space-y-6"), children }),
11487
- sidebar && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("aside", { className: "space-y-6 lg:col-span-1", children: sidebar })
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 import_lucide_react49 = require("lucide-react");
11496
- var import_jsx_runtime96 = require("react/jsx-runtime");
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, import_jsx_runtime96.jsxs)("div", { className: "flex flex-col gap-6 p-4 sm:p-6 md:p-8", children: [
11516
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex flex-col gap-2", children: [
11517
- onBack && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
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, import_jsx_runtime96.jsx)(import_lucide_react49.ArrowLeft, { className: "h-3.5 w-3.5" }),
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, import_jsx_runtime96.jsx)(
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, import_jsx_runtime96.jsxs)("form", { onSubmit, className: cn("space-y-8", className), ...props, children: [
11542
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "space-y-6", children }),
11543
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
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, import_jsx_runtime96.jsx)("div", { children: secondaryActions }),
11552
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-3", children: [
11553
- onCancel && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
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, import_jsx_runtime96.jsx)(Button, { type: "submit", disabled: isSubmitting, children: isSubmitting ? "Saving..." : submitLabel })
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 import_lucide_react50 = require("lucide-react");
11574
- var import_jsx_runtime97 = require("react/jsx-runtime");
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, import_jsx_runtime97.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
11596
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PageHeader, { title, description }),
11597
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("nav", { "aria-label": "Wizard Progress", className: "py-2", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("ol", { className: "flex items-center justify-between gap-2 overflow-x-auto pb-2", children: steps.map((step, idx) => {
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, import_jsx_runtime97.jsxs)(
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, import_jsx_runtime97.jsxs)(
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, import_jsx_runtime97.jsx)(
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, import_jsx_runtime97.jsx)(import_lucide_react50.Check, { className: "h-4 w-4" }) : idx + 1
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, import_jsx_runtime97.jsx)("div", { className: "hidden sm:block", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
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, import_jsx_runtime97.jsx)(
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, import_jsx_runtime97.jsx)("div", { className: "flex-1 rounded-lg border bg-card p-4 sm:p-6", children }),
11657
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center justify-between pt-2", children: [
11658
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
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, import_jsx_runtime97.jsx)(import_lucide_react50.ChevronLeft, { className: "mr-1 h-4 w-4" }),
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, import_jsx_runtime97.jsx)(
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, import_jsx_runtime97.jsxs)(
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, import_jsx_runtime97.jsx)(import_lucide_react50.ChevronRight, { className: "ml-1 h-4 w-4" })
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 import_jsx_runtime98 = require("react/jsx-runtime");
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, import_jsx_runtime98.jsxs)("div", { className: cn("flex flex-col gap-6 p-4 sm:p-6 md:p-8", className), ...props, children: [
11711
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
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, import_jsx_runtime98.jsx)("section", { "aria-label": "Key Metrics", className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: metrics }),
11722
- charts && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("section", { "aria-label": "Charts and Visualizations", className: "grid gap-4 md:grid-cols-2 lg:grid-cols-7", children: charts }),
11723
- activity && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("section", { "aria-label": "Recent Activity", className: "space-y-4", children: activity }),
11724
- children && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "space-y-6", children })
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 import_jsx_runtime99 = require("react/jsx-runtime");
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, import_jsx_runtime99.jsxs)(
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, import_jsx_runtime99.jsx)("header", { className: "flex h-14 shrink-0 items-center border-b px-4 bg-background z-10", children: header }),
11749
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex flex-1 overflow-hidden", children: [
11750
- leftSidebar && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("aside", { className: "hidden md:flex w-64 shrink-0 flex-col border-r bg-sidebar p-3 overflow-y-auto", children: leftSidebar }),
11751
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("main", { className: "flex flex-1 flex-col overflow-y-auto p-4 sm:p-6 bg-muted/20", children }),
11752
- rightSidebar && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("aside", { className: "hidden lg:flex w-80 shrink-0 flex-col border-l bg-background p-4 overflow-y-auto", children: rightSidebar })
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, import_jsx_runtime99.jsx)("footer", { className: "flex h-10 shrink-0 items-center border-t px-4 text-xs text-muted-foreground bg-background", children: footer })
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 import_react18 = require("react");
11762
- var import_lucide_react52 = require("lucide-react");
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 import_react17 = require("react");
11767
- var import_jsx_runtime100 = require("react/jsx-runtime");
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, import_react17.useState)(0);
11770
- (0, import_react17.useEffect)(() => {
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, import_jsx_runtime100.jsx)(
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, import_jsx_runtime100.jsxs)(
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, import_jsx_runtime100.jsx)(AppLogo, { className: "shrink-0 md:hidden" }),
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 import_lucide_react51 = require("lucide-react");
11810
- var import_jsx_runtime101 = require("react/jsx-runtime");
11811
- function Search6({
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, import_jsx_runtime101.jsx)(
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, import_jsx_runtime101.jsx)(import_lucide_react51.SearchIcon, { className: "size-5", "aria-hidden": "true" })
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 import_jsx_runtime102 = require("react/jsx-runtime");
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, import_react18.useEffect)(() => {
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, import_jsx_runtime102.jsx)(Header, { fixed, className: "border-b bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "flex flex-1 items-center justify-between w-full", children: iconsPosition === "left" ? /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex items-center gap-2 sm:gap-3 min-w-0", children: [
12022
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("h1", { className: "min-w-0 truncate text-base font-semibold sm:text-lg", children: title }),
12023
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex items-center gap-1 sm:gap-2 shrink-0 ml-1", children: [
12024
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Search6, { iconOnly: true }),
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, import_jsx_runtime102.jsxs)(
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, import_jsx_runtime102.jsx)(import_lucide_react52.Bell, { className: "size-5" }),
12036
- unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime102.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 })
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, import_jsx_runtime102.jsxs)(import_jsx_runtime102.Fragment, { children: [
12042
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("h1", { className: "min-w-0 truncate text-base font-semibold sm:text-lg", children: title }),
12043
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "ml-auto flex items-center gap-2 sm:gap-3", children: [
12044
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Search6, { iconOnly: true }),
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, import_jsx_runtime102.jsxs)(
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, import_jsx_runtime102.jsx)(import_lucide_react52.Bell, { className: "size-5" }),
12056
- unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime102.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 })
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 import_lucide_react53 = require("lucide-react");
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: import_lucide_react53.Command,
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: import_lucide_react53.Mail
13665
+ icon: import_lucide_react59.Mail
12087
13666
  },
12088
13667
  {
12089
13668
  title: "Email Settings",
12090
13669
  url: "/email-settings",
12091
- icon: import_lucide_react53.Settings
13670
+ icon: import_lucide_react59.Settings
12092
13671
  },
12093
13672
  {
12094
13673
  title: "Design System",
12095
13674
  url: "/",
12096
- icon: import_lucide_react53.Settings
13675
+ icon: import_lucide_react59.Settings
12097
13676
  },
12098
13677
  {
12099
13678
  title: "Vouchers",
12100
13679
  url: "/vouchers",
12101
- icon: import_lucide_react53.Ticket
13680
+ icon: import_lucide_react59.Ticket
12102
13681
  },
12103
13682
  {
12104
13683
  title: "AI Chat",
12105
13684
  url: "/ai_chat",
12106
- icon: import_lucide_react53.Bot
13685
+ icon: import_lucide_react59.Bot
12107
13686
  },
12108
13687
  {
12109
13688
  title: "AI Search",
12110
13689
  url: "/ai_search",
12111
- icon: import_lucide_react53.SearchIcon
13690
+ icon: import_lucide_react59.SearchIcon
12112
13691
  },
12113
13692
  {
12114
13693
  title: "Chart Template",
12115
13694
  url: "/charttemplate",
12116
- icon: import_lucide_react53.ChartArea
13695
+ icon: import_lucide_react59.ChartArea
12117
13696
  },
12118
13697
  {
12119
13698
  title: "Map Template",
12120
13699
  url: "/map",
12121
- icon: import_lucide_react53.Map
13700
+ icon: import_lucide_react59.Map
12122
13701
  },
12123
13702
  {
12124
13703
  title: "Route Doc",
12125
13704
  url: "/routedoc",
12126
- icon: import_lucide_react53.Route
13705
+ icon: import_lucide_react59.Route
12127
13706
  },
12128
13707
  {
12129
13708
  title: "Link Maker",
12130
13709
  url: "/link-maker",
12131
- icon: import_lucide_react53.Link
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: import_lucide_react53.Settings,
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: import_lucide_react53.HelpCircle
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 import_jsx_runtime103 = require("react/jsx-runtime");
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, import_jsx_runtime103.jsx)(
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, import_jsx_runtime103.jsx)("div", { className: "flex size-full items-center justify-center rounded-lg bg-primary text-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Logo, { className: "size-4" }) })
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 import_react19 = require("react");
12191
- var import_jsx_runtime104 = require("react/jsx-runtime");
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, import_react19.createContext)(null);
13776
+ var LayoutContext = (0, import_react22.createContext)(null);
12198
13777
  function LayoutProvider({ children }) {
12199
- const [collapsible, _setCollapsible] = (0, import_react19.useState)(() => {
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, import_react19.useState)(() => {
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, import_react19.useState)(false);
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, import_jsx_runtime104.jsx)(LayoutContext, { value: contextValue, children });
13814
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(LayoutContext, { value: contextValue, children });
12236
13815
  }
12237
13816
  function useLayout() {
12238
- const context = (0, import_react19.useContext)(LayoutContext);
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 import_lucide_react54 = require("lucide-react");
12263
- var import_jsx_runtime105 = require("react/jsx-runtime");
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, import_jsx_runtime105.jsxs)(SidebarGroup, { className: cn(title === "Menu" && "pt-0"), children: [
12268
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
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, import_jsx_runtime105.jsx)("span", { children: title }),
12277
- title === "Menu" && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
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, import_jsx_runtime105.jsx)(
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, import_jsx_runtime105.jsx)(import_lucide_react54.X, { className: "size-4", "aria-hidden": "true" })
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, import_jsx_runtime105.jsx)(SidebarMenu, { children: items.map((item) => {
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, import_jsx_runtime105.jsx)(SidebarMenuLink, { item, href }, key);
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, import_jsx_runtime105.jsx)(SidebarMenuSettings, { item }, key);
13884
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuSettings, { item }, key);
12306
13885
  if (state === "collapsed" && !isMobile)
12307
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(SidebarMenuCollapsedDropdown, { item, href }, key);
12308
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(SidebarMenuCollapsible, { item, href }, key);
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, import_jsx_runtime105.jsx)(Badge, { className: "rounded-full px-1 py-0 text-xs", children });
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, import_jsx_runtime105.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
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, import_jsx_runtime105.jsxs)(
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, import_jsx_runtime105.jsx)(item.icon, {}),
12334
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { children: item.title }),
12335
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(NavBadge, { children: item.badge })
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, import_jsx_runtime105.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
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, import_jsx_runtime105.jsx)(item.icon, {}),
12356
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { children: item.title })
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, import_jsx_runtime105.jsx)(
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, import_jsx_runtime105.jsxs)(SidebarMenuItem, { children: [
12374
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(SidebarMenuButton, { tooltip: item.title, children: [
12375
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(item.icon, {}),
12376
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { children: item.title }),
12377
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(NavBadge, { children: item.badge }),
12378
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react54.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180" })
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, import_jsx_runtime105.jsx)(CollapsibleContent, { className: "CollapsibleContent", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(SidebarMenuSubItem, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
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, import_jsx_runtime105.jsxs)(
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, import_jsx_runtime105.jsx)(subItem.icon, {}),
12395
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { children: subItem.title }),
12396
- subItem.badge && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(NavBadge, { children: subItem.badge })
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, import_jsx_runtime105.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(DropdownMenu, { children: [
12411
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
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, import_jsx_runtime105.jsx)(item.icon, {}),
12418
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { children: item.title }),
12419
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(NavBadge, { children: item.badge }),
12420
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react54.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
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, import_jsx_runtime105.jsxs)(DropdownMenuContent, { side: "right", align: "start", sideOffset: 4, children: [
12425
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(DropdownMenuLabel, { children: [
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, import_jsx_runtime105.jsx)(DropdownMenuSeparator, {}),
12431
- item.items.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
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, import_jsx_runtime105.jsx)(sub.icon, {}),
12438
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "max-w-52 text-wrap", children: sub.title }),
12439
- sub.badge && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "ms-auto text-xs", children: sub.badge })
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 import_jsx_runtime106 = require("react/jsx-runtime");
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, import_jsx_runtime106.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
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, import_jsx_runtime106.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_runtime106.jsx)(activeTeam.logo, { className: "size-4" }) }),
12465
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
12466
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "truncate font-semibold", children: activeTeam.name }),
12467
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "truncate text-xs", children: activeTeam.plan })
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 import_lucide_react56 = require("lucide-react");
14054
+ var import_lucide_react62 = require("lucide-react");
12476
14055
 
12477
14056
  // src/hooks/use-dialog-state.tsx
12478
- var import_react20 = require("react");
14057
+ var import_react23 = require("react");
12479
14058
  function useDialogState(initialState2 = null) {
12480
- const [open, _setOpen] = (0, import_react20.useState)(initialState2);
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 import_react21 = require("react");
14065
+ var import_react24 = require("react");
12487
14066
  var import_react_radio_group = require("@radix-ui/react-radio-group");
12488
- var import_lucide_react55 = require("lucide-react");
14067
+ var import_lucide_react61 = require("lucide-react");
12489
14068
 
12490
14069
  // src/assets/custom/icon-theme-dark.tsx
12491
- var import_jsx_runtime107 = require("react/jsx-runtime");
14070
+ var import_jsx_runtime113 = require("react/jsx-runtime");
12492
14071
  function IconThemeDark(props) {
12493
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
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, import_jsx_runtime107.jsxs)("g", { fill: "#1d2b3f", children: [
12502
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("rect", { x: 0.53, y: 0.5, width: 78.83, height: 50.14, rx: 3.5, ry: 3.5 }),
12503
- /* @__PURE__ */ (0, import_jsx_runtime107.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" })
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, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsx)("circle", { cx: 6.7, cy: 7.04, r: 3.54, fill: "#426187" }),
12513
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsxs)("g", { fill: "#2a62bc", children: [
12521
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, fill: "#2f5491", opacity: 0.5 }),
12571
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
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, import_jsx_runtime107.jsx)(
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 import_jsx_runtime108 = require("react/jsx-runtime");
14176
+ var import_jsx_runtime114 = require("react/jsx-runtime");
12598
14177
  function IconThemeLight(props) {
12599
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
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, import_jsx_runtime108.jsxs)("g", { fill: "#d9d9d9", children: [
12608
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("rect", { x: 0.53, y: 0.5, width: 78.83, height: 50.14, rx: 3.5, ry: 3.5 }),
12609
- /* @__PURE__ */ (0, import_jsx_runtime108.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" })
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, import_jsx_runtime108.jsx)(
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, import_jsx_runtime108.jsx)("circle", { cx: 6.7, cy: 7.04, r: 3.54, fill: "#fff" }),
12619
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
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, import_jsx_runtime108.jsxs)("g", { fill: "#c0c4c4", children: [
12627
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
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, import_jsx_runtime108.jsx)(
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, import_jsx_runtime108.jsx)(
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, import_jsx_runtime108.jsx)(
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, import_jsx_runtime108.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, fill: "#fff" }),
12677
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("g", { fill: "#d9d9d9", children: [
12678
- /* @__PURE__ */ (0, import_jsx_runtime108.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" }),
12679
- /* @__PURE__ */ (0, import_jsx_runtime108.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" })
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, import_jsx_runtime108.jsx)(
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 import_jsx_runtime109 = require("react/jsx-runtime");
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, import_jsx_runtime109.jsxs)(
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, import_jsx_runtime109.jsx)("path", { opacity: 0.2, d: "M0 0.03H22.88V51.17H0z" }),
12718
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsxs)("g", { children: [
12820
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("circle", { cx: 62.74, cy: 16.32, r: 8, opacity: 0.25 }),
12821
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
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, import_jsx_runtime109.jsx)(
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 import_jsx_runtime110 = require("react/jsx-runtime");
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, import_jsx_runtime110.jsxs)(Sheet, { children: [
12861
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SheetTrigger, { asChild: true, children: trigger ?? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsx)(import_lucide_react55.Settings, { "aria-hidden": "true" })
14447
+ children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Settings, { "aria-hidden": "true" })
12869
14448
  }
12870
14449
  ) }),
12871
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(SheetContent, { className: "flex flex-col", children: [
12872
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(SheetHeader, { className: "pb-0 text-start", children: [
12873
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SheetTitle, { children: "Theme Settings" }),
12874
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(SheetDescription, { children: "Customize the look and feel of your dashboard." })
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, import_jsx_runtime110.jsxs)("div", { className: "flex flex-1 flex-col gap-6 overflow-hidden px-4", children: [
12877
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(ThemeConfig, {}),
12878
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(ThemeListSelector, {})
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, import_jsx_runtime110.jsx)(SheetFooter, { className: "gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsxs)(
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, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsx)(import_lucide_react55.RotateCcw, { className: "size-3" })
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, import_jsx_runtime110.jsxs)(
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, import_jsx_runtime110.jsxs)(
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, import_jsx_runtime110.jsx)(
12948
- import_lucide_react55.CircleCheck,
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, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsxs)("div", { children: [
12986
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsx)(RadioGroupItem2, { item, isTheme: true }, item.value))
14598
+ ].map((item) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(RadioGroupItem2, { item, isTheme: true }, item.value))
13020
14599
  }
13021
14600
  ),
13022
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { id: "theme-description", className: "sr-only", children: "Choose between system preference, light mode, or dark mode" })
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, import_react21.useState)("");
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, import_jsx_runtime110.jsxs)("div", { className: "flex min-h-0 flex-1 flex-col", children: [
13032
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsxs)("div", { className: "relative mb-2.5", children: [
13042
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react55.Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
13043
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsxs)("p", { className: "mb-2 text-xs text-muted-foreground font-medium", children: [
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, import_jsx_runtime110.jsxs)(
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, import_jsx_runtime110.jsx)("p", { className: "py-8 text-center text-sm text-muted-foreground", children: "No themes found" }),
13073
- filtered.map((ct) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
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, import_jsx_runtime110.jsx)("div", { className: "flex gap-1.5 shrink-0", children: ct.colors.map((color, i) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsxs)("div", { className: "flex items-center gap-1.5 truncate", children: [
13097
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-sm font-medium truncate", children: ct.label }),
13098
- ct.category === "tweakcn" && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
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, import_jsx_runtime110.jsx)(import_lucide_react55.Check, { className: "ml-auto size-4 shrink-0", strokeWidth: 3 })
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 import_jsx_runtime111 = require("react/jsx-runtime");
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, import_jsx_runtime111.jsxs)(import_jsx_runtime111.Fragment, { children: [
13130
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(DropdownMenu, { modal: false, children: [
13131
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
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, import_jsx_runtime111.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
13139
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
13140
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
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, import_jsx_runtime111.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
13143
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "truncate font-semibold", children: userName }),
13144
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
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, import_jsx_runtime111.jsx)(import_lucide_react56.ChevronsUpDown, { className: "ml-auto size-4 shrink-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, import_jsx_runtime111.jsxs)(
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, import_jsx_runtime111.jsx)(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)("div", { className: "flex items-center gap-2 px-1 py-1.5 text-start text-sm", children: [
13159
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
13160
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
13161
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
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, import_jsx_runtime111.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
13164
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "truncate font-semibold", children: userName }),
13165
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
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, import_jsx_runtime111.jsx)(DropdownMenuSeparator, {}),
13169
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
14747
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuSeparator, {}),
14748
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
13170
14749
  ConfigDrawer,
13171
14750
  {
13172
- trigger: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
13173
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react56.Palette, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime111.jsx)(
14757
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
13179
14758
  ConfigDrawer,
13180
14759
  {
13181
- trigger: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
13182
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react56.Settings, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime111.jsx)(DropdownMenuSeparator, {}),
13188
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
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, import_jsx_runtime111.jsx)(import_lucide_react56.LogOut, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime111.jsx)(SignOutDialog, { open: !!open, onOpenChange: setOpen })
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 import_jsx_runtime112 = require("react/jsx-runtime");
14787
+ var import_jsx_runtime118 = require("react/jsx-runtime");
13209
14788
  function AppSidebar() {
13210
14789
  const { collapsible } = useLayout();
13211
- return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(Sidebar, { collapsible, variant: "sidebar", children: [
13212
- /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(SidebarHeader, { className: "p-2 pb-1", children: [
13213
- /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center justify-between gap-1", children: [
13214
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(TeamSwitcher, { teams: sidebarData2.teams }) }),
13215
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "group-data-[collapsible=icon]:hidden shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
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, import_jsx_runtime112.jsx)("div", { className: "hidden group-data-[collapsible=icon]:flex justify-center pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
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, import_jsx_runtime112.jsx)(SidebarContent, { children: sidebarData2.navGroups.map((props) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(NavGroup, { ...props }, props.title)) }),
13234
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(NavUser, { user: sidebarData2.user }) })
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 import_lucide_react57 = require("lucide-react");
13241
- var import_jsx_runtime113 = require("react/jsx-runtime");
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, import_jsx_runtime113.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
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, import_jsx_runtime113.jsxs)("div", { children: [
13251
- /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
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, import_jsx_runtime113.jsx)("span", { className: "truncate font-bold", children: "Shadcn-Admin" }),
13259
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("span", { className: "truncate text-xs", children: "Vite + ShadcnUI" })
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, import_jsx_runtime113.jsx)(ToggleSidebar, {})
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, import_jsx_runtime113.jsxs)(
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, import_jsx_runtime113.jsx)(import_lucide_react57.X, { className: "md:hidden" }),
13289
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_lucide_react57.Menu, { className: "max-md:hidden" }),
13290
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
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 import_react23 = require("react");
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 import_react22 = require("react");
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 import_lucide_react58 = require("lucide-react");
13307
- var import_jsx_runtime114 = require("react/jsx-runtime");
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, import_jsx_runtime114.jsxs)(SidebarGroup, { className: cn(title === "Menu" && "pt-0"), children: [
13312
- /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
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, import_jsx_runtime114.jsx)("span", { children: title }),
13321
- title === "Menu" && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
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, import_jsx_runtime114.jsx)(
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, import_jsx_runtime114.jsx)(import_lucide_react58.X, { className: "size-4", "aria-hidden": "true" })
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, import_jsx_runtime114.jsx)(SidebarMenu, { children: items.map((item) => {
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, import_jsx_runtime114.jsx)(SidebarMenuLink2, { item, href }, key);
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, import_jsx_runtime114.jsx)(SidebarMenuSettings2, { item }, key);
14928
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SidebarMenuSettings2, { item }, key);
13350
14929
  if (state === "collapsed" && !isMobile)
13351
- return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(SidebarMenuCollapsedDropdown2, { item, href }, key);
13352
- return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(SidebarMenuCollapsible2, { item, href }, key);
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, import_jsx_runtime114.jsx)(Badge, { className: "rounded-full px-1 py-0 text-xs", children });
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, import_jsx_runtime114.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
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, import_jsx_runtime114.jsxs)(
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, import_jsx_runtime114.jsx)(item.icon, {}),
13378
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { children: item.title }),
13379
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(NavBadge2, { children: item.badge })
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, import_jsx_runtime114.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
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, import_jsx_runtime114.jsx)(item.icon, {}),
13400
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { children: item.title })
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, import_jsx_runtime114.jsx)(
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, import_jsx_runtime114.jsxs)(SidebarMenuItem, { children: [
13418
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(SidebarMenuButton, { tooltip: item.title, children: [
13419
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(item.icon, {}),
13420
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { children: item.title }),
13421
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(NavBadge2, { children: item.badge }),
13422
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_lucide_react58.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180" })
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, import_jsx_runtime114.jsx)(CollapsibleContent, { className: "CollapsibleContent", children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(SidebarMenuSubItem, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
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, import_jsx_runtime114.jsxs)(
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, import_jsx_runtime114.jsx)(subItem.icon, {}),
13439
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { children: subItem.title }),
13440
- subItem.badge && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(NavBadge2, { children: subItem.badge })
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, import_jsx_runtime114.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(DropdownMenu, { children: [
13455
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
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, import_jsx_runtime114.jsx)(item.icon, {}),
13462
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { children: item.title }),
13463
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(NavBadge2, { children: item.badge }),
13464
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_lucide_react58.ChevronRight, { className: "ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
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, import_jsx_runtime114.jsxs)(DropdownMenuContent, { side: "right", align: "start", sideOffset: 4, children: [
13469
- /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(DropdownMenuLabel, { children: [
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, import_jsx_runtime114.jsx)(DropdownMenuSeparator, {}),
13475
- item.items.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
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, import_jsx_runtime114.jsx)(sub.icon, {}),
13482
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { className: "max-w-52 text-wrap", children: sub.title }),
13483
- sub.badge && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { className: "ms-auto text-xs", children: sub.badge })
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 import_lucide_react59 = require("lucide-react");
15077
+ var import_lucide_react65 = require("lucide-react");
13499
15078
  var import_link4 = __toESM(require("next/link"));
13500
- var import_jsx_runtime115 = require("react/jsx-runtime");
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, import_jsx_runtime115.jsxs)(import_jsx_runtime115.Fragment, { children: [
13511
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenu, { modal: false, children: [
13512
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
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, import_jsx_runtime115.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
13520
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
13521
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
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, import_jsx_runtime115.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
13524
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("span", { className: "truncate font-semibold", children: userName }),
13525
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
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, import_jsx_runtime115.jsx)(import_lucide_react59.ChevronsUpDown, { className: "ml-auto size-4 shrink-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, import_jsx_runtime115.jsxs)(
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, import_jsx_runtime115.jsx)(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: "flex items-center gap-2 px-1 py-1.5 text-start text-sm", children: [
13540
- /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Avatar, { className: "h-8 w-8 rounded-lg", children: [
13541
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(AvatarImage, { src: userAvatar, alt: userName }),
13542
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(AvatarFallback, { className: "rounded-lg", children: userInitials })
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, import_jsx_runtime115.jsxs)("div", { className: "grid flex-1 text-start text-sm leading-tight", children: [
13545
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("span", { className: "truncate font-semibold", children: userName }),
13546
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
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, import_jsx_runtime115.jsx)(DropdownMenuSeparator, {}),
13550
- /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
13551
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.User, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
13555
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.Bell, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
13559
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.MessageCircle, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsx)(DropdownMenuSeparator, {}),
13563
- /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
13564
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.CreditCard, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_link4.default, { href: "/apps", children: [
13568
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.ShoppingBag, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsx)(
15150
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
13572
15151
  ConfigDrawer,
13573
15152
  {
13574
- trigger: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), children: [
13575
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.Palette, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsxs)(DropdownMenuItem, { onClick: () => setShowInlineNotFound(true), children: [
13581
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react59.Settings, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsx)(DropdownMenuSeparator, {}),
13585
- /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
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, import_jsx_runtime115.jsx)(import_lucide_react59.LogOut, { className: "mr-2 h-4 w-4" }),
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, import_jsx_runtime115.jsx)(SignOutDialog, { open: !!open, onOpenChange: setOpen })
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 import_jsx_runtime116 = (
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, import_react22.useEffect)(() => {
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, import_jsx_runtime116.jsxs)(Sidebar, { collapsible, variant: "sidebar", children: [
13638
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SidebarHeader, { className: "pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TeamSwitcher, { teams: dynamicSidebarData.teams }) }),
13639
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "hidden group-data-[state=collapsed]:flex justify-center py-2", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
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, import_jsx_runtime116.jsx)(SidebarContent, { children: dynamicSidebarData.navGroups.map((props) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(NavGroup2, { ...props }, props.title)) }),
13648
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(NavUser2, { user: dynamicSidebarData.user }) })
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 import_jsx_runtime117 = require("react/jsx-runtime");
15232
+ var import_jsx_runtime123 = require("react/jsx-runtime");
13654
15233
  function SkipToMain() {
13655
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
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 import_jsx_runtime118 = require("react/jsx-runtime");
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, import_jsx_runtime118.jsx)("div", { className: cn(embedded ? "min-h-96 w-full py-8" : "h-svh", className), children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "m-auto flex h-full w-full flex-col items-center justify-center gap-2", children: [
13686
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
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, import_jsx_runtime118.jsx)("span", { className: "font-medium", children: "Oops! Page Not Found :-(!" }),
13697
- /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("p", { className: "text-center text-muted-foreground", children: [
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, import_jsx_runtime118.jsx)("br", {}),
15278
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("br", {}),
13700
15279
  "does not exist or might have been removed."
13701
15280
  ] }),
13702
- /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "mt-6 flex gap-4", children: [
13703
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Button, { variant: "outline", onClick: handleGoBack, children: "Go Back" }),
13704
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Button, { onClick: handleGoHome, children: "Back to Home" })
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 import_jsx_runtime119 = require("react/jsx-runtime");
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, import_react23.useEffect)(() => {
15293
+ (0, import_react26.useEffect)(() => {
13715
15294
  setShowInlineNotFound(false);
13716
15295
  }, [pathname, setShowInlineNotFound]);
13717
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_jsx_runtime119.Fragment, { children: [
13718
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SkipToMain, {}),
13719
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(AppSidebar2, {}),
13720
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
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, import_jsx_runtime119.jsx)(
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, import_react23.useState)(true);
13741
- const [isMounted, setIsMounted] = (0, import_react23.useState)(false);
13742
- (0, import_react23.useEffect)(() => {
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, import_jsx_runtime119.jsx)(SearchProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(LayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(SidebarProvider, { defaultOpen, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(AuthenticatedLayoutContent, { children }) }) }) });
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 import_react24 = require("react");
13754
- var import_jsx_runtime120 = require("react/jsx-runtime");
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, import_react24.useState)(0);
13757
- (0, import_react24.useEffect)(() => {
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, import_jsx_runtime120.jsx)(
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, import_jsx_runtime120.jsxs)(
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, import_jsx_runtime120.jsx)(AppLogo, { className: "shrink-0 md:hidden" }),
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 import_jsx_runtime121 = require("react/jsx-runtime");
15375
+ var import_jsx_runtime127 = require("react/jsx-runtime");
13797
15376
  function Main({ fixed, className, fluid, ...props }) {
13798
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
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 import_lucide_react60 = require("lucide-react");
13817
- var import_jsx_runtime122 = require("react/jsx-runtime");
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, import_jsx_runtime122.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
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, import_jsx_runtime122.jsx)(import_lucide_react60.SearchIcon, { className: "size-4 shrink-0" }),
13828
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "flex-1 text-left text-xs font-normal group-data-[collapsible=icon]:hidden", children: "Search..." }),
13829
- /* @__PURE__ */ (0, import_jsx_runtime122.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: [
13830
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "text-[10px]", children: "\u2318" }),
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 import_lucide_react61 = require("lucide-react");
13841
- var import_jsx_runtime123 = require("react/jsx-runtime");
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, import_jsx_runtime123.jsx)(
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, import_jsx_runtime123.jsx)(
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, import_jsx_runtime123.jsxs)(import_jsx_runtime123.Fragment, { children: [
13876
- /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(DropdownMenu, { modal: false, children: [
13877
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
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, import_jsx_runtime123.jsx)(import_lucide_react61.Menu, {}),
13888
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("span", { className: "sr-only", children: "Toggle navigation menu" })
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, import_jsx_runtime123.jsx)(DropdownMenuContent, { side: "bottom", align: "start", children: links.map((link) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
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, import_jsx_runtime123.jsx)("span", { className: !link.isActive ? "text-muted-foreground" : "", children: link.title }) : /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
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, import_jsx_runtime123.jsx)(
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,