ChatToolbarView.swift
1 // 2 // ChatToolbarView.swift 3 // MLXChatExample 4 // 5 // Created by İbrahim Çetin on 21.04.2025. 6 // 7 8 import SwiftUI 9 10 /// Toolbar view for the chat interface that displays error messages, download progress, 11 /// generation statistics, and model selection controls. 12 struct ChatToolbarView: View { 13 /// View model containing the chat state and controls 14 @Bindable var vm: ChatViewModel 15 16 var body: some View { 17 // Display error message if present 18 if let errorMessage = vm.errorMessage { 19 ErrorView(errorMessage: errorMessage) 20 } 21 22 // Show download progress for model loading 23 if let progress = vm.modelDownloadProgress, !progress.isFinished { 24 DownloadProgressView(progress: progress) 25 } 26 27 // Button to clear chat history, displays generation statistics 28 Button { 29 vm.clear([.chat, .meta]) 30 } label: { 31 GenerationInfoView( 32 tokensPerSecond: vm.tokensPerSecond 33 ) 34 } 35 36 // Model selection picker 37 Picker("Model", selection: $vm.selectedModel) { 38 ForEach(MLXService.availableModels) { model in 39 Text(model.displayName) 40 .tag(model) 41 } 42 } 43 } 44 }