import SwiftUI struct PathSettingsView: View { @Environment(\.language) private var language @AppStorage("contentPath") private var contentPath: String = "" @EnvironmentObject private var content: Content var body: some View { ScrollView { VStack(alignment: .leading) { DetailTitle( title: "Folder Settings", text: "Select the folders for the app to work.") FolderOnDiskPropertyView( title: "Content Folder", folder: $contentPath, footer: "The folder where the raw content of the website is stored") { url in guard content.storage.save(folderUrl: url, in: .contentPath) else { return } contentPath = url.path() } FolderOnDiskPropertyView( title: "Output Folder", folder: $content.settings.paths.outputDirectoryPath, footer: "The folder where the generated website is stored") { url in guard content.storage.save(folderUrl: url, in: .outputPath) else { return } content.settings.paths.outputDirectoryPath = url.path() } StringPropertyView( title: "Pages output folder", text: $content.settings.paths.pagesOutputFolderPath, footer: "The path in the output folder where the generated pages are stored") StringPropertyView( title: "Tags output folder", text: $content.settings.paths.tagsOutputFolderPath, footer: "The path in the output folder where the generated tag pages are stored") StringPropertyView( title: "Files output folder", text: $content.settings.paths.filesOutputFolderPath, footer: "The path in the output folder where the copied files are stored") StringPropertyView( title: "Images output folder", text: $content.settings.paths.imagesOutputFolderPath, footer: "The path in the output folder where the generated images are stored") StringPropertyView( title: "Videos output folder", text: $content.settings.paths.videosOutputFolderPath, footer: "The path in the output folder where the generated videos are stored") StringPropertyView( title: "Assets output folder", text: $content.settings.paths.assetsOutputFolderPath, footer: "The path in the output folder where assets are stored") } .padding() } } } #Preview { PathSettingsView() .environmentObject(Content.mock) .padding() }