From 25cdda94924f2e25673ae9ea3657be58580057f7 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Tue, 21 Jul 2026 15:46:53 +0200 Subject: [PATCH] feat(app): label sidebar add project action --- packages/app/src/components/left-sidebar.tsx | 100 +++++++++++++++++-- 1 file changed, 90 insertions(+), 10 deletions(-) diff --git a/packages/app/src/components/left-sidebar.tsx b/packages/app/src/components/left-sidebar.tsx index 0e36f9c78..54a601203 100644 --- a/packages/app/src/components/left-sidebar.tsx +++ b/packages/app/src/components/left-sidebar.tsx @@ -341,6 +341,64 @@ function FooterIconButton({ ); } +function footerAddProjectButtonStyle({ + hovered, +}: PressableStateCallbackType & { hovered?: boolean }) { + return [styles.footerAddProjectButton, Boolean(hovered) && styles.footerAddProjectButtonHovered]; +} + +function FooterAddProjectButton({ + onPress, + label, + shortcutKeys, + theme, +}: { + onPress: () => void; + label: string; + shortcutKeys: ReturnType; + theme: SidebarTheme; +}) { + return ( + + + + {({ hovered }) => { + const isHovered = Boolean(hovered); + return ( + <> + + + {label} + + + ); + }} + + + + + + + ); +} + function SidebarHostPicker({ theme, label, @@ -494,6 +552,12 @@ function SidebarFooter({ return ( + - ({ sidebarFooter: { flexDirection: "row", alignItems: "center", - justifyContent: "flex-start", - paddingHorizontal: theme.spacing[4], + gap: theme.spacing[2], + paddingHorizontal: theme.spacing[2], paddingVertical: theme.spacing[3], borderTopWidth: 1, borderTopColor: theme.colors.border, @@ -1020,6 +1076,30 @@ const styles = StyleSheet.create((theme) => ({ gap: theme.spacing[2], flexShrink: 0, }, + footerAddProjectButton: { + minWidth: 0, + minHeight: 32, + flex: 1, + flexDirection: "row", + alignItems: "center", + gap: theme.spacing[2], + paddingVertical: theme.spacing[1.5], + paddingHorizontal: theme.spacing[2], + borderRadius: theme.borderRadius.lg, + }, + footerAddProjectButtonHovered: { + backgroundColor: theme.colors.surfaceSidebarHover, + }, + footerAddProjectLabel: { + minWidth: 0, + flexShrink: 1, + fontSize: theme.fontSize.sm, + fontWeight: theme.fontWeight.normal, + color: theme.colors.foregroundMuted, + }, + footerAddProjectLabelHovered: { + color: theme.colors.foreground, + }, footerIconButton: { width: 28, height: 28,