105 lines
3.5 KiB
Swift
105 lines
3.5 KiB
Swift
//
|
|
// SettingsView.swift
|
|
// MagicCounter
|
|
//
|
|
// Created by Atridad Lahiji on 2025-12-06.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct SettingsView: View {
|
|
@AppStorage("accentColorName") private var accentColorName = "Blue"
|
|
@AppStorage("hapticFeedbackEnabled") private var hapticFeedbackEnabled = true
|
|
|
|
private let colors: [(name: String, color: Color)] = [
|
|
("Blue", .blue),
|
|
("Purple", .purple),
|
|
("Pink", .pink),
|
|
("Red", .red),
|
|
("Orange", .orange),
|
|
("Green", .green),
|
|
("Teal", .teal),
|
|
("Indigo", .indigo),
|
|
("Mint", .mint),
|
|
("Brown", .brown),
|
|
("Cyan", .cyan)
|
|
]
|
|
|
|
private var currentVersion: String {
|
|
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0"
|
|
}
|
|
|
|
private var buildNumber: String {
|
|
Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "1"
|
|
}
|
|
|
|
private func foregroundColor(for colorName: String) -> Color {
|
|
switch colorName {
|
|
case "Mint", "Cyan", "Yellow":
|
|
return .black
|
|
default:
|
|
return .white
|
|
}
|
|
}
|
|
|
|
var body: some View {
|
|
NavigationStack {
|
|
Form {
|
|
Section("General") {
|
|
Toggle("Haptic Feedback", isOn: $hapticFeedbackEnabled)
|
|
}
|
|
|
|
Section("Appearance") {
|
|
VStack(alignment: .leading, spacing: 16) {
|
|
Text("ACCENT COLOR")
|
|
.font(.caption)
|
|
.foregroundStyle(.secondary)
|
|
|
|
LazyVGrid(columns: [GridItem(.adaptive(minimum: 44))], spacing: 12) {
|
|
ForEach(colors, id: \.name) { item in
|
|
Circle()
|
|
.fill(item.color)
|
|
.frame(width: 44, height: 44)
|
|
.overlay {
|
|
if accentColorName == item.name {
|
|
Image(systemName: "checkmark")
|
|
.font(.headline)
|
|
.foregroundStyle(foregroundColor(for: item.name))
|
|
}
|
|
}
|
|
.onTapGesture {
|
|
accentColorName = item.name
|
|
}
|
|
}
|
|
}
|
|
|
|
Divider()
|
|
|
|
Button("Reset to Default") {
|
|
accentColorName = "Blue"
|
|
}
|
|
.foregroundStyle(.red)
|
|
}
|
|
.padding(.vertical, 8)
|
|
}
|
|
|
|
Section("About") {
|
|
HStack {
|
|
Text("App Name")
|
|
Spacer()
|
|
Text("Magic Counter")
|
|
.foregroundStyle(.secondary)
|
|
}
|
|
HStack {
|
|
Text("Version")
|
|
Spacer()
|
|
Text("\(currentVersion) (\(buildNumber))")
|
|
.foregroundStyle(.secondary)
|
|
}
|
|
}
|
|
}
|
|
.navigationTitle("Settings")
|
|
}
|
|
}
|
|
}
|