From 77d8c6c77423b065e69043a7fd67584190b7c21f Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Sat, 16 Aug 2025 18:54:18 +0200 Subject: [PATCH] style: sort button in /projects --- apps/web/src/app/projects/page.tsx | 88 +++++++++++++++++++++------ apps/web/src/components/ui/button.tsx | 2 +- 2 files changed, 72 insertions(+), 18 deletions(-) diff --git a/apps/web/src/app/projects/page.tsx b/apps/web/src/app/projects/page.tsx index 4276ecc7..3d66a3c5 100644 --- a/apps/web/src/app/projects/page.tsx +++ b/apps/web/src/app/projects/page.tsx @@ -5,6 +5,7 @@ import { ChevronLeft, Loader2, MoreHorizontal, + ArrowDown01, Plus, Search, Trash2, @@ -29,12 +30,11 @@ import { } from "@/components/ui/dropdown-menu"; import { Input } from "@/components/ui/input"; import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { Skeleton } from "@/components/ui/skeleton"; import { useProjectStore } from "@/stores/project-store"; import { useTimelineStore } from "@/stores/timeline-store"; @@ -228,17 +228,71 @@ export default function ProjectsPage() { onChange={(e) => setSearchQuery(e.target.value)} /> - +
+ + + + + + + + + + { + if (sortOption.startsWith("createdAt")) { + setSortOption( + sortOption.endsWith("asc") + ? "createdAt-desc" + : "createdAt-asc" + ); + } else { + setSortOption("createdAt-asc"); + } + }} + > + Created{" "} + {sortOption.startsWith("createdAt") && + (sortOption.endsWith("asc") ? "↑" : "↓")} + + { + if (sortOption.startsWith("name")) { + setSortOption( + sortOption.endsWith("asc") + ? "name-desc" + : "name-asc" + ); + } else { + setSortOption("name-asc"); + } + }} + > + Name{" "} + {sortOption.startsWith("name") && + (sortOption.endsWith("asc") ? "↑" : "↓")} + + + + +

+ Sort by{" "} + {sortOption.startsWith("createdAt") ? "date" : "name"} ( + {sortOption.endsWith("asc") ? "ascending" : "descending"}) +

+
+
+
+
{isSelectionMode && sortedProjects.length > 0 && ( diff --git a/apps/web/src/components/ui/button.tsx b/apps/web/src/components/ui/button.tsx index 9096e415..0e07ccb8 100644 --- a/apps/web/src/components/ui/button.tsx +++ b/apps/web/src/components/ui/button.tsx @@ -20,7 +20,7 @@ const buttonVariants = cva( outline: "border border-input bg-background shadow-xs hover:opacity-75 transition-opacity hover:text-accent-foreground", secondary: - "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", + "bg-secondary text-secondary-foreground shadow-xs hover:bg-foreground/15 border border-input", text: "bg-transparent p-0 rounded-none opacity-100 hover:opacity-50 transition-opacity", // Instead of ghost (matches app better) link: "text-primary underline-offset-4 hover:underline", },