summaryrefslogtreecommitdiff
path: root/Hutch/Views/Settings
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Settings')
-rw-r--r--Hutch/Views/Settings/SettingsView.swift25
1 files changed, 25 insertions, 0 deletions
diff --git a/Hutch/Views/Settings/SettingsView.swift b/Hutch/Views/Settings/SettingsView.swift
index 4fb3f9c..5abac90 100644
--- a/Hutch/Views/Settings/SettingsView.swift
+++ b/Hutch/Views/Settings/SettingsView.swift
@@ -2,16 +2,20 @@ import SwiftUI
struct SettingsView: View {
@Environment(AppState.self) private var appState
+ @AppStorage(AppStorageKeys.appTheme) private var appTheme: AppTheme = .system
+ @AppStorage(AppStorageKeys.displayDensity) private var displayDensity: DisplayDensity = .standard
@AppStorage(AppStorageKeys.swipeActionsEnabled) private var swipeActionsEnabled = true
@AppStorage(AppStorageKeys.contributionGraphsEnabled) private var contributionGraphsEnabled = true
@State private var pendingDestructiveAction: SettingsDestructiveAction?
var body: some View {
Form {
+ appearanceSection()
behaviorSection()
authenticationSection()
aboutSection()
}
+ .themedList()
.navigationTitle("Settings")
.alert(
pendingDestructiveAction?.title ?? "",
@@ -45,6 +49,26 @@ struct SettingsView: View {
}
@ViewBuilder
+ private func appearanceSection() -> some View {
+ Section {
+ Picker("Theme", selection: $appTheme) {
+ ForEach(AppTheme.allCases) { theme in
+ Text(theme.label).tag(theme)
+ }
+ }
+ Picker("Density", selection: $displayDensity) {
+ ForEach(DisplayDensity.allCases) { density in
+ Text(density.label).tag(density)
+ }
+ }
+ } header: {
+ Text("Appearance")
+ } footer: {
+ Text("Compact density reduces spacing throughout the app.")
+ }
+ }
+
+ @ViewBuilder
private func behaviorSection() -> some View {
Section {
Toggle("Swipe actions", isOn: $swipeActionsEnabled)
@@ -192,6 +216,7 @@ private struct AboutView: View {
.foregroundStyle(.secondary)
}
}
+ .themedList()
.navigationTitle("About")
.navigationBarTitleDisplayMode(.inline)
}