import SwiftUI

struct PageSettingsDetailView: View {

    @Environment(\.language)
    private var language

    @ObservedObject
    var pageSettings: PageSettings

    var body: some View {
        ScrollView {
            VStack(alignment: .leading) {
                DetailTitle(
                    title: "Page Settings",
                    text: "Change the way pages are displayed")

                IntegerPropertyView(
                    title: "Content Width",
                    value: $pageSettings.contentWidth,
                    footer: "The maximum width of the content in pages (in pixels)")

                IntegerPropertyView(
                    title: "Fullscreen Image Width",
                    value: $pageSettings.largeImageWidth,
                    footer: "The maximum width of images that are diplayed fullscreen")

                IntegerPropertyView(
                    title: "Page Link Image Width",
                    value: $pageSettings.pageLinkImageSize,
                    footer: "The maximum width of images diplayed as thumbnails on page links")

                FilePropertyView(
                    title: "Default CSS File",
                    footer: "The CSS file containing the styling of all pages",
                    selectedFile: $pageSettings.defaultCssFile,
                    allowedType: .asset)

                FilePropertyView(
                    title: "Code Highlighting File",
                    footer: "The JavaScript file to provide syntax highlighting of code blocks",
                    selectedFile: $pageSettings.codeHighlightingJsFile,
                    allowedType: .asset)

                FilePropertyView(
                    title: "3D Model Viewer File",
                    footer: "The JavaScript file to provide the functionality for the 3D model viewer",
                    selectedFile: $pageSettings.modelViewerJsFile,
                    allowedType: .asset)


                FilePropertyView(
                    title: "Image Comparison CSS File",
                    footer: "The CSS file to provide image comparisons",
                    selectedFile: $pageSettings.imageCompareCssFile,
                    allowedType: .asset)

                FilePropertyView(
                    title: "Image Comparison JaveScript File",
                    footer: "The JavaScript file to provide image comparisons",
                    selectedFile: $pageSettings.imageCompareJsFile,
                    allowedType: .asset)

                LocalizedPageSettingsView(settings: pageSettings.localized(in: language))
                    .id(language)
            }
            .padding()
        }
    }
}


#Preview {
    PageSettingsDetailView(pageSettings: .default)
        .padding()
}
