import SwiftUI struct FrontPageView: View { @State private var viewModel = FrontPageViewModel() @State private var postGeneratorViewModel = PostGeneratorViewModel() @State private var titleOptimizerViewModel = TitleOptimizerViewModel() @State private var commentWriterViewModel = CommentWriterViewModel() var body: some View { HStack(spacing: 0) { SidebarView(viewModel: viewModel) mainContent .frame(maxWidth: .infinity, maxHeight: .infinity) } .frame(minWidth: AppWindow.minWidth, minHeight: AppWindow.minHeight) .background(AppTheme.background) } @ViewBuilder private var mainContent: some View { ZStack { RedditWebView( url: viewModel.redditLoadURL, reloadTrigger: viewModel.redditReloadTrigger ) .id("reddit-webview") .frame(maxWidth: .infinity, maxHeight: .infinity) .allowsHitTesting(viewModel.isRedditActive) .accessibilityHidden(!viewModel.isRedditActive) if viewModel.isSettingsActive { SettingsView() } else if !viewModel.isRedditActive, let item = viewModel.selectedNavItem { toolContent(for: item) } } .background(AppTheme.background) } @ViewBuilder private func toolContent(for item: SidebarNavItem) -> some View { switch item.iconKind { case .postGenerator: PostGeneratorView(viewModel: postGeneratorViewModel) { url in viewModel.openReddit(at: url) } case .titleOptimizer: TitleOptimizerView(viewModel: titleOptimizerViewModel) case .commentWriter: CommentWriterView(viewModel: commentWriterViewModel) { url in viewModel.openReddit(at: url) } default: ToolPlaceholderView(item: item) } } } private struct ToolPlaceholderView: View { let item: SidebarNavItem var body: some View { VStack(spacing: 12) { ModernSidebarIconView(kind: item.iconKind, size: 56) Text(item.title) .font(.system(size: 20, weight: .semibold)) .foregroundStyle(AppTheme.textPrimary) Text(item.subtitle) .font(.system(size: 13)) .foregroundStyle(AppTheme.textSecondary) } .frame(maxWidth: .infinity, maxHeight: .infinity) .background(AppTheme.background) } } #Preview { FrontPageView() .frame(width: AppWindow.width, height: AppWindow.height) }