// // MainWindowView.swift // Zyquo Cloud // // Author: Simon-Pierre Boucher // Mail: contact@spboucher.ai // // Root split view: translucent sidebar + chat area. // import SwiftUI struct MainWindowView: View { @EnvironmentObject private var store: ConversationStore @EnvironmentObject private var appearance: AppearanceStore var body: some View { NavigationSplitView { SidebarView() .navigationSplitViewColumnWidth( min: ZyquoMetrics.sidebarWidth, ideal: ZyquoMetrics.sidebarWidth, max: 360 ) } detail: { if let id = store.selectedID, store.conversations.contains(where: { $0.id == id }) { ChatView(conversationID: id) .id(id) } else { EmptyStateView( model: store.catalog.defaultModel, onSelectModel: { model in store.newConversation(model: model) }, onSuggestion: { prompt in let conversation = store.newConversation() store.send(text: prompt, in: conversation.id) } ) } } .frame( minWidth: ZyquoMetrics.windowMinWidth, minHeight: ZyquoMetrics.windowMinHeight ) .preferredColorScheme(appearance.themeMode.colorScheme) .tint(appearance.accentColor) } }