From e9a79b828032c0a0e2a619d8cd0dff6e605f9aff Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Wed, 20 May 2026 23:00:05 -0700 Subject: [PATCH] Polish workspace board settings --- .../sidebar/WorkspaceKanbanDrawer.tsx | 15 +--- .../sidebar/WorkspaceKanbanDrawerHeader.tsx | 30 +------ .../sidebar/WorkspaceKanbanSettingsMenu.tsx | 79 +++++++++++++------ 3 files changed, 59 insertions(+), 65 deletions(-) diff --git a/src/renderer/src/components/sidebar/WorkspaceKanbanDrawer.tsx b/src/renderer/src/components/sidebar/WorkspaceKanbanDrawer.tsx index 4826153cc..a17d4d838 100644 --- a/src/renderer/src/components/sidebar/WorkspaceKanbanDrawer.tsx +++ b/src/renderer/src/components/sidebar/WorkspaceKanbanDrawer.tsx @@ -48,8 +48,6 @@ export default function WorkspaceKanbanDrawer({ const updateWorktreesMeta = useAppStore((s) => s.updateWorktreesMeta) const workspaceStatuses = useAppStore((s) => s.workspaceStatuses) const setWorkspaceStatuses = useAppStore((s) => s.setWorkspaceStatuses) - const workspaceBoardOpacity = useAppStore((s) => s.workspaceBoardOpacity) - const setWorkspaceBoardOpacity = useAppStore((s) => s.setWorkspaceBoardOpacity) const workspaceBoardCompact = useAppStore((s) => s.workspaceBoardCompact) const setWorkspaceBoardCompact = useAppStore((s) => s.setWorkspaceBoardCompact) const workspaceBoardColumnWidth = useAppStore((s) => s.workspaceBoardColumnWidth) @@ -219,13 +217,6 @@ export default function WorkspaceKanbanDrawer({ onOpenChange(false) }, [onOpenChange]) - const handleOpacityChange = useCallback( - (event: React.ChangeEvent) => { - setWorkspaceBoardOpacity(Number(event.target.value) / 100) - }, - [setWorkspaceBoardOpacity] - ) - const handleRenameStatus = useCallback( (statusId: string, label: string) => { const trimmed = label.trim() @@ -341,7 +332,6 @@ export default function WorkspaceKanbanDrawer({ return () => document.removeEventListener('pointerdown', clearSelectionOutsideBoard, true) }, [clearSelection, open, selectedWorktreeIds.size]) - const opacityPercent = Math.round(workspaceBoardOpacity * 100) const drawerLeft = sidebarOpen ? sidebarWidth : 0 const drawerLeftCss = sidebarOpen ? `var(--workspace-sidebar-live-width, ${sidebarWidth}px)` @@ -361,8 +351,7 @@ export default function WorkspaceKanbanDrawer({ left: drawerLeftCss, top: 36, height: 'calc(100% - 36px)', - width: `min(calc(100vw - ${drawerLeftCss}), 1294px)`, - opacity: workspaceBoardOpacity + width: `min(calc(100vw - ${drawerLeftCss}), 1294px)` } as React.CSSProperties } data-workspace-board-compact={workspaceBoardCompact ? 'true' : 'false'} @@ -397,10 +386,8 @@ export default function WorkspaceKanbanDrawer({ void - onOpacityChange: (event: React.ChangeEvent) => void onRenameStatus: (statusId: string, label: string) => void onChangeStatusColor: (statusId: string, color: string) => void onChangeStatusIcon: (statusId: string, icon: string) => void @@ -26,10 +23,8 @@ type WorkspaceKanbanDrawerHeaderProps = { export default function WorkspaceKanbanDrawerHeader({ selectedCount, compact, - opacityPercent, workspaceStatuses, onCompactChange, - onOpacityChange, onRenameStatus, onChangeStatusColor, onChangeStatusIcon, @@ -38,8 +33,6 @@ export default function WorkspaceKanbanDrawerHeader({ onAddStatus, onFilterMenuOpenChange }: WorkspaceKanbanDrawerHeaderProps): React.JSX.Element { - const BoardModeIcon = compact ? Rows3 : LayoutList - return ( <> @@ -63,27 +56,10 @@ export default function WorkspaceKanbanDrawerHeader({ contentSide="bottom" onMenuOpenChange={onFilterMenuOpenChange} /> - - - - - - {compact ? 'Show detailed cards' : 'Show compact cards'} - - ) => void + onCompactChange: (compact: boolean) => void onRenameStatus: (statusId: string, label: string) => void onChangeStatusColor: (statusId: string, color: string) => void onChangeStatusIcon: (statusId: string, icon: string) => void @@ -26,9 +28,9 @@ type WorkspaceKanbanSettingsMenuProps = { } export default function WorkspaceKanbanSettingsMenu({ - opacityPercent, + compact, workspaceStatuses, - onOpacityChange, + onCompactChange, onRenameStatus, onChangeStatusColor, onChangeStatusIcon, @@ -38,14 +40,27 @@ export default function WorkspaceKanbanSettingsMenu({ }: WorkspaceKanbanSettingsMenuProps): React.JSX.Element { return ( - - - + + + + + + + + Board settings + + { const target = event.target @@ -57,21 +72,37 @@ export default function WorkspaceKanbanSettingsMenu({ } }} > - Board opacity + Card density
-
- Pane opacity - {opacityPercent}% -
- + { + if (value) { + onCompactChange(value === 'compact') + } + }} + variant="outline" + size="sm" + className="h-7 w-full justify-stretch" + > + + + Detailed + + + + Compact + +
Statuses