style(settings): grid the short cards, keep the tall ones stacked

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.
This commit is contained in:
2026-08-15 00:23:37 +01:00
parent 4f423ef971
commit e991f4ed4c
+14 -6
View File
@@ -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) {
// 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)
}