import SwiftUI struct ProfileSetupView: View { @ObservedObject private var auth = AuthManager.shared @Environment(\.colorScheme) private var cs @State private var name = "" @FocusState private var focused: Bool var body: some View { ZStack { AppColors.background(cs).ignoresSafeArea() VStack(spacing: 0) { Spacer() VStack(spacing: 24) { ZStack { RoundedRectangle(cornerRadius: 24) .fill(AppColors.accentSoft) .frame(width: 88, height: 88) Image(systemName: "person.fill") .font(.system(size: 36, weight: .light)) .foregroundColor(AppColors.accent) } VStack(spacing: 8) { Text("What's your name?") .font(AppFonts.sans(26, weight: .bold)) .foregroundColor(AppColors.text(cs)) Text("This is how you'll appear in the app.") .font(AppFonts.sans(15)) .foregroundColor(AppColors.text2(cs)) .multilineTextAlignment(.center) } } Spacer() VStack(spacing: 16) { TextField("Your name", text: $name) .font(AppFonts.sans(17)) .foregroundColor(AppColors.text(cs)) .padding(.horizontal, 18) .padding(.vertical, 16) .background( RoundedRectangle(cornerRadius: 14) .fill(Color(uiColor: cs == .dark ? .secondarySystemBackground : .systemGray6)) ) .padding(.horizontal, 28) .focused($focused) .submitLabel(.done) .onSubmit { save() } Button(action: save) { Text("Continue") .font(AppFonts.sans(17, weight: .semibold)) .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(height: 54) .background( RoundedRectangle(cornerRadius: 14) .fill(name.trimmingCharacters(in: .whitespaces).isEmpty ? AppColors.accent.opacity(0.4) : AppColors.accent) ) } .disabled(name.trimmingCharacters(in: .whitespaces).isEmpty) .padding(.horizontal, 28) Button("Skip for now") { auth.updateDisplayName("User") } .font(AppFonts.sans(14)) .foregroundColor(AppColors.text3(cs)) } .padding(.bottom, 56) } } .onAppear { focused = true } } private func save() { auth.updateDisplayName(name) } }