import SwiftUI struct ContentView: View { @Binding var selectedTab: Int @State private var tabs = [ "Posts", "Search History", "Bookmarks", ] @Binding var selectedPost: (post: BooruPost?, manager: BooruManager?) var body: some View { #if os(macOS) NavigationSplitView { List(selection: $selectedTab) { ForEach(Array(tabs.enumerated()), id: \.offset) { index, element in NavigationLink(value: index) { Text(element) } } } } content: { switch selectedTab { case 1: PostGridSearchHistoryView( selectedTab: $selectedTab, isPresented: .constant(false), manager: selectedPost.manager ?? .init() ) case 2: BookmarksView(selectedTab: $selectedTab, manager: selectedPost.manager ?? .init()) case 3: SettingsView() default: PostGridTabSwitcherView(selectedTab: $selectedTab, selectedPost: $selectedPost) } } detail: { if selectedPost.post != nil && selectedPost.manager != nil { PostDetailsView(selectedPost: $selectedPost) } else { Text("Select a Post") .foregroundColor(.secondary) } } #if DEBUG .onAppear { tabs.append("Settings") } #endif #else NavigationStack { PostGridTabSwitcherView(selectedTab: $selectedTab, selectedPost: $selectedPost) .navigationDestination( isPresented: Binding( get: { selectedPost.post != nil }, set: { if !$0 { selectedPost = (post: nil, manager: nil) } } ) ) { if let post = selectedPost.post, let manager = selectedPost.manager { PostDetailsView(selectedPost: $selectedPost) } } } #endif } }