From f04cac8e2f108ffe3a637675a53f1ddff4d831cd Mon Sep 17 00:00:00 2001
From: Cody Seibert
Date: Mon, 15 Dec 2025 09:59:20 -0500
Subject: [PATCH] style: refine sidebar and dropdown menu components for
improved UI
- Simplified the sidebar button's class structure by removing unnecessary overflow styling.
- Enhanced the visual representation of the trashed projects count with updated styling for better visibility.
- Wrapped the dropdown menu's subcontent in a portal for improved rendering and performance.
---
.DS_Store | Bin 10244 -> 0 bytes
.../layout/project-setup-dialog.tsx | 64 ++++++++++++++++--
apps/app/src/components/layout/sidebar.tsx | 24 +++++--
apps/app/src/components/ui/dropdown-menu.tsx | 18 ++---
apps/app/src/components/views/board-view.tsx | 2 +-
apps/app/src/lib/electron.ts | 24 ++++---
apps/app/src/lib/http-api-client.ts | 12 ++--
apps/app/src/types/electron.d.ts | 8 ++-
.../app-spec/generate-features-from-spec.ts | 9 ++-
.../src/routes/app-spec/generate-spec.ts | 7 +-
.../src/routes/app-spec/routes/create.ts | 7 +-
.../app-spec/routes/generate-features.ts | 13 +++-
.../src/routes/app-spec/routes/generate.ts | 6 +-
13 files changed, 148 insertions(+), 46 deletions(-)
delete mode 100644 .DS_Store
diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 21a2444b66188de34d1e90ece55499acfbc0ec1e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 10244
zcmeHMU2GIp6u#%S&>1?=0a_{8fk_u4;1-q^`omAM{Zsx6Y)iMLu*~j^bYMEO?96V#
zQq!3D!jHx$jepT6e~3J&DDg!TMbSq^6O8czqw(iK6Ma#6@Z7nxEwpG%L|&A(3aO%5uy@81gwn85;oTg$5E4DWE=avuVpoBX=&HoiaKU
zgdPYz5PBf=K3F$lw8^F*q&zEM$T6-bpwYC^qRKr47WLXTX%ik1n&?;K}^Zj
zBO?v5RZ+FRan)#49cihLMb*^}jiaNYP!(CZZddA%HDo)-xd9M-1jx)u2A!C&Qeo
z{5GN_kPJ7?
zo_U{XW7xWBALto2b#Jh@V7g}7GP-ST$Pi~kRJ>SGJ%7QSHHyLqOehqGCi7|Y
zaNhKe$`L{E*HD#OX+X!9+vezO6UPlvLDu-d
z6;e#Jj59QZCb}Y*wJPn(
zKDO*u&GovnhRt5-0`I#A`}*BMEoXEMBLIUp+Kf_vOHt00I(5@?{7&@7_F6^hW7DiHE)Lg^9Yj|AKz(=M0@dfZlyeIXK0yzTE!B)**QQlz+9+|iMEED#7pA@!t#
zY$f|ij*O5~`L~5KK4-E*ycQFapQmAvg{v;1oOzkHORM3_J_Z!AtN8yb5RGb$AOdzz6Uld<>W2
zOZW=Dh9BTp_zkYmX>=Z~rt@hnjnX>0f;Q1+x|Xh^+i4d~QjH#@4h^pFXfe?C77gT-
z9z_~_HZahFYd?DC`hiw+@5W7=rLDJ2pk12fhgN0P9rM&B%U7;$-q1P@L5|rXOs@vN
zkN9ii#7Df3h)HO@=*OV6a8WVnCc==1WeQI1Mi&&fkD@@Fu(i@4|U_KS2EFi1+W{`v9v&3~##@!|?M2
zh6{b
zp$9?_{B;jNX-A@?4aXNxN|RODUAu~PKUP-QxG_$B6>P5gBLEq89lsPS8(X{#VbAeE
gHpZ#1j&ffe>A&=6z@J~Vh3Eh9{Le1LZ|n2_?~u-Zo&W#<
diff --git a/apps/app/src/components/layout/project-setup-dialog.tsx b/apps/app/src/components/layout/project-setup-dialog.tsx
index 3683b5cc..82453203 100644
--- a/apps/app/src/components/layout/project-setup-dialog.tsx
+++ b/apps/app/src/components/layout/project-setup-dialog.tsx
@@ -1,6 +1,6 @@
"use client";
-import { Sparkles } from "lucide-react";
+import { Sparkles, Clock } from "lucide-react";
import {
Dialog,
DialogContent,
@@ -11,6 +11,19 @@ import {
} from "@/components/ui/dialog";
import { Button } from "@/components/ui/button";
import { Checkbox } from "@/components/ui/checkbox";
+import { cn } from "@/lib/utils";
+
+// Feature count options
+export type FeatureCount = 20 | 50 | 100;
+const FEATURE_COUNT_OPTIONS: {
+ value: FeatureCount;
+ label: string;
+ warning?: string;
+}[] = [
+ { value: 20, label: "20" },
+ { value: 50, label: "50", warning: "May take up to 5 minutes" },
+ { value: 100, label: "100", warning: "May take up to 5 minutes" },
+];
interface ProjectSetupDialogProps {
open: boolean;
@@ -19,6 +32,8 @@ interface ProjectSetupDialogProps {
onProjectOverviewChange: (value: string) => void;
generateFeatures: boolean;
onGenerateFeaturesChange: (value: boolean) => void;
+ featureCount: FeatureCount;
+ onFeatureCountChange: (value: FeatureCount) => void;
onCreateSpec: () => void;
onSkip: () => void;
isCreatingSpec: boolean;
@@ -31,6 +46,8 @@ export function ProjectSetupDialog({
onProjectOverviewChange,
generateFeatures,
onGenerateFeaturesChange,
+ featureCount,
+ onFeatureCountChange,
onCreateSpec,
onSkip,
isCreatingSpec,
@@ -94,16 +111,52 @@ export function ProjectSetupDialog({
+
+ {/* Feature Count Selection - only shown when generateFeatures is enabled */}
+ {generateFeatures && (
+
+
+
+ {FEATURE_COUNT_OPTIONS.map((option) => (
+
+ ))}
+
+ {FEATURE_COUNT_OPTIONS.find((o) => o.value === featureCount)
+ ?.warning && (
+
+
+ {
+ FEATURE_COUNT_OPTIONS.find((o) => o.value === featureCount)
+ ?.warning
+ }
+
+ )}
+
+ )}
-