From e991f4ed4c16a62f8bda7f109692fd806d33e2cb Mon Sep 17 00:00:00 2001 From: psavarmattas Date: Sat, 15 Aug 2026 00:23:37 +0100 Subject: [PATCH] style(settings): grid the short cards, keep the tall ones stacked MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Appearance and Account are both short — a LazyVGrid lets them sit side-by-side when the window's wide enough instead of each wasting a full-width row. Offline & Sync and About stay full-width: pairing those with anything in the same grid row looked worse (very uneven row heights) than just stacking them. Also widened the content column (640 -> 900) so the grid actually has room to go two-up. --- Outpost/Features/Account/SettingsView.swift | 24 ++++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Outpost/Features/Account/SettingsView.swift b/Outpost/Features/Account/SettingsView.swift index a35a71b..76f18b5 100644 --- a/Outpost/Features/Account/SettingsView.swift +++ b/Outpost/Features/Account/SettingsView.swift @@ -2,11 +2,11 @@ import SwiftUI import OutlineKit -/// Full-page Settings — rendered as a `RootView`-level overlay (see -/// `AppNavigation`), not a separate popup window. Replaces the old -/// `Settings {}` scene / `PreferencesView` and folds in what used to be the -/// standalone "About Outpost" window's content too, so everything about the -/// app lives in one place. +/// Full-page Settings — swapped into `ContentView_macOS`'s detail pane (see +/// `AppNavigation`), alongside the sidebar, not a separate popup window. +/// Replaces the old `Settings {}` scene / `PreferencesView` and folds in +/// what used to be the standalone "About Outpost" window's content too, so +/// everything about the app lives in one place. struct SettingsView: View { let onDone: () -> Void @@ -28,13 +28,21 @@ struct SettingsView: View { Divider() ScrollView { VStack(alignment: .leading, spacing: 20) { - appearanceSection - accountSection + // Appearance and Account are short — let them sit + // side-by-side when there's room instead of each + // claiming a full-width row on their own. Offline & Sync + // and About stay full-width, own row each: both are + // taller and visibly uneven height content, paired with + // an adaptive grid, looks worse than just stacking. + LazyVGrid(columns: [GridItem(.adaptive(minimum: 260), spacing: 20)], alignment: .leading, spacing: 20) { + appearanceSection + accountSection + } offlineSyncSection aboutSection } .padding(24) - .frame(maxWidth: 640) + .frame(maxWidth: 900) } .frame(maxWidth: .infinity) }