From 0b01178f247496689331317b770e73e66ea06b89 Mon Sep 17 00:00:00 2001 From: Feror Date: Fri, 29 May 2026 19:17:34 +0200 Subject: [PATCH] refactor(ui): prioritize editor space --- Sources/SaplingApp/SaplingApp.swift | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Sources/SaplingApp/SaplingApp.swift b/Sources/SaplingApp/SaplingApp.swift index 46d9250..dc12d9d 100644 --- a/Sources/SaplingApp/SaplingApp.swift +++ b/Sources/SaplingApp/SaplingApp.swift @@ -155,16 +155,17 @@ private final class SaplingAppModel: ObservableObject { private struct MainWindow: View { @ObservedObject var model: SaplingAppModel @State private var isImportingMarkdown = false + @State private var columnVisibility: NavigationSplitViewVisibility = .all var body: some View { - NavigationSplitView { + NavigationSplitView(columnVisibility: $columnVisibility) { WorkspaceTreeView( workspace: model.workspace, onSelectFile: model.select(file:), onSelectProject: model.select(project:) ) - .frame(minWidth: 220) - } content: { + .navigationSplitViewColumnWidth(min: 180, ideal: 220, max: 260) + } detail: { if let editorViewModel = model.editorViewModel { HybridMarkdownEditor( viewModel: editorViewModel, @@ -174,16 +175,17 @@ private struct MainWindow: View { } else { EmptyEditorPlaceholder() } - } detail: { - SaplingInspectorView( - project: model.selectedProject, - document: model.editorViewModel?.document ?? model.selectedDocument, - statuses: model.gitStatuses - ) - .frame(minWidth: 260) } .toolbar { ToolbarItemGroup { + Button { + toggleSidebar() + } label: { + Label("Toggle Sidebar", systemImage: "sidebar.leading") + } + .help("Toggle Sidebar") + .keyboardShortcut("0", modifiers: [.command, .option]) + Button { isImportingMarkdown = true } label: { @@ -232,6 +234,10 @@ private struct MainWindow: View { private func navigationTitle(for viewModel: HybridMarkdownEditorViewModel) -> String { viewModel.hasUnsavedChanges ? "\(viewModel.document.title) *" : viewModel.document.title } + + private func toggleSidebar() { + columnVisibility = columnVisibility == .all ? .detailOnly : .all + } } private extension UTType {