import AppKit import SwiftUI struct ContentView: View { @Environment(WizardModel.self) private var model @State private var showingHelp = false var body: some View { VStack(spacing: 0) { VStack(spacing: 8) { HStack { appBadge VStack(alignment: .leading, spacing: 1) { Text("Rebreak Magic") .font(.headline) Text("iPhone bind ohne Werks-Reset") .font(.caption) .foregroundStyle(.secondary) } Spacer() // Help-Button Button(action: { showingHelp = true }) { Image(systemName: "questionmark.circle") .font(.title3) .foregroundStyle(.secondary) } .buttonStyle(.plain) .help("Hilfe & FAQ (⌘?)") .keyboardShortcut("?", modifiers: .command) if model.step != .done { Text("Schritt \(model.step.stepNumber) von \(WizardStep.total)") .font(.caption) .foregroundStyle(.secondary) .padding(.leading, 12) } } .padding(.horizontal, 20) .padding(.top, 16) StepIndicator(current: model.step) } .background(Color(NSColor.windowBackgroundColor)) Divider() .sheet(isPresented: $showingHelp) { HelpView() } // Main content Group { switch model.step { case .welcome: WelcomeView() case .preflight: PreflightView() case .supervise: SuperviseView() case .enroll: EnrollView() case .configure: ConfigureView() case .done: DoneView() } } .frame(maxWidth: .infinity, maxHeight: .infinity) } } @ViewBuilder private var appBadge: some View { if let icon = resolvedAppIcon { Image(nsImage: icon) .resizable() .frame(width: 28, height: 28) .clipShape(RoundedRectangle(cornerRadius: 7, style: .continuous)) .overlay( RoundedRectangle(cornerRadius: 7, style: .continuous) .strokeBorder(.white.opacity(0.25), lineWidth: 1) ) } else { ZStack { RoundedRectangle(cornerRadius: 7, style: .continuous) .fill(Color.accentColor.opacity(0.15)) Image(systemName: "shield.lefthalf.filled") .foregroundStyle(.tint) } .frame(width: 28, height: 28) } } private var resolvedAppIcon: NSImage? { if let icon = NSApplication.shared.applicationIconImage, icon.size.width > 2, icon.size.height > 2 { return icon } let bundleIcon = NSWorkspace.shared.icon(forFile: Bundle.main.bundlePath) if bundleIcon.size.width > 2, bundleIcon.size.height > 2 { return bundleIcon } return nil } }