/ Jade / Views / Toolbar / ChatToolbarView.swift
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  }