import SwiftUI struct SettingsView: View { @Bindable var viewModel: BookmarksViewModel let onDisconnect: () -> Void @State private var claudeKey = UserDefaults.standard.string(forKey: ClaudeService.defaultsKey) ?? "" @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { List { Section("AI Features") { VStack(alignment: .leading, spacing: 6) { Text("OpenRouter API Key") .font(.system(size: 13, weight: .medium)) .foregroundStyle(.secondary) SecureField("sk-or-…", text: $claudeKey) .textContentType(.password) .autocorrectionDisabled() .textInputAutocapitalization(.never) .onChange(of: claudeKey) { _, new in ClaudeService.save(apiKey: new) viewModel.updateClaude(new.isEmpty ? nil : ClaudeService(apiKey: new)) } } .padding(.vertical, 4) if viewModel.claude != nil { Label("AI enabled — semantic search, auto-tagging, and smart collections active.", systemImage: "sparkles") .font(.system(size: 13)) .foregroundStyle(.secondary) } else { Text("Add an OpenRouter API key to enable AI features. Uses Gemini 2.0 Flash Lite — very cheap.") .font(.system(size: 13)) .foregroundStyle(.secondary) } } Section("Server") { Button(role: .destructive) { dismiss() onDisconnect() } label: { Label("Disconnect", systemImage: "person.crop.circle.badge.minus") } } } .navigationTitle("Settings") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Done") { dismiss() } } } } } }