import SwiftUI

struct SettingsSheet: View {

    private let sidebarWidth: CGFloat = 250

    private let contentWidth: CGFloat = 300

    @Environment(\.dismiss)
    private var dismiss

    @Binding
    var language: ContentLanguage

    @State
    var section: SettingsSection = .general

    private var title: String {
        switch section {
        case .general: "General Settings"
        case .paths: "Folder Settings"
        case .navigationBar: "Navigation Bar Settings"
        case .postFeed: "Post Feed Settings"
        case .pages: "Pages Settings"
        case .tagOverview: "Tag Overview Settings"
        case .audioPlayer: "Audio Player Settings"
        }
    }

    private var text: String {
        switch section {
        case .general: "General settings for the webpage"
        case .paths: "Select the folders for the app to work."
        case .navigationBar: "Customize the navigation bar for all pages at the top of the website"
        case .postFeed: "Change the way the posts are displayed"
        case .pages: "Change the way pages are displayed"
        case .tagOverview: "Configure the page showing all tags"
        case .audioPlayer: "Configure the files and settings for the audio player components"
        }
    }

    var body: some View {
        VStack(spacing: 0) {
            VStack(alignment: .leading) {
                HStack(alignment: .top) {
                    Text(title)
                        .font(.largeTitle)
                        .bold()
                    Spacer()
                    HStack(alignment: .center) {
                        Picker("", selection: $language) {
                            Text("English")
                                .tag(ContentLanguage.english)
                            Text("German")
                                .tag(ContentLanguage.german)
                        }
                        .pickerStyle(.segmented)
                        Button(action: { dismiss() }) {
                            Text("Close")
                        }
                    }.frame(width: 200)
                }
                Text(text)
                    .foregroundStyle(.secondary)
                    .padding(.bottom, 30)

            }
            .frame(height: 100)
            .padding()
            .background(Color(NSColor.windowBackgroundColor))
            NavigationSplitView {
                SettingsListView(section: $section)
                    .navigationSplitViewColumnWidth(min: sidebarWidth, ideal: sidebarWidth, max: sidebarWidth)
            } detail: {
                SettingsContentView(language: $language, section: $section)
            }
        }.frame(width: 600, height: 600)
    }
}
