import SwiftUI

struct OpenSettingsButton: View {
    @Environment(\.presentationMode) private var presentationMode

    #if !os(macOS)
        private var navigation: NavigationModel { .shared }
    #endif

    var body: some View {
        let button = Button {
            presentationMode.wrappedValue.dismiss()

            #if os(macOS)
                NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil)
            #else
                navigation.presentingSettings = true
            #endif
        } label: {
            Label("Open Settings", systemImage: "gearshape.2")
        }
        .buttonStyle(.plain)

        if #available(iOS 15.0, macOS 12.0, tvOS 15.0, *) {
            button
                .buttonStyle(.borderedProminent)
        } else {
            button
        }
    }
}

struct OpenSettingsButton_Previews: PreviewProvider {
    static var previews: some View {
        OpenSettingsButton()
    }
}