// // FooterView.swift // oAI // // Footer bar with session summary // import SwiftUI struct FooterView: View { let stats: SessionStats var body: some View { HStack(spacing: 20) { // Session summary HStack(spacing: 16) { FooterItem( icon: "message", label: "Messages", value: "\(stats.messageCount)" ) FooterItem( icon: "chart.bar.xaxis", label: "Tokens", value: "\(stats.totalTokens) (\(stats.totalInputTokens) in, \(stats.totalOutputTokens) out)" ) FooterItem( icon: "dollarsign.circle", label: "Cost", value: stats.totalCostDisplay ) } Spacer() // Shortcuts hint #if os(macOS) Text("⌘M Model • ⌘K Clear • ⌘S Stats") .font(.caption2) .foregroundColor(.oaiSecondary) #endif } .padding(.horizontal, 16) .padding(.vertical, 8) .background(.ultraThinMaterial) .overlay( Rectangle() .fill(Color.oaiBorder.opacity(0.5)) .frame(height: 1), alignment: .top ) } } struct FooterItem: View { let icon: String let label: String let value: String private let guiSize = SettingsService.shared.guiTextSize var body: some View { HStack(spacing: 6) { Image(systemName: icon) .font(.system(size: guiSize - 2)) .foregroundColor(.oaiSecondary) Text(label + ":") .font(.system(size: guiSize - 2)) .foregroundColor(.oaiSecondary) Text(value) .font(.system(size: guiSize - 2, weight: .medium)) .foregroundColor(.oaiPrimary) } } } #Preview { VStack { Spacer() FooterView(stats: SessionStats( totalInputTokens: 1250, totalOutputTokens: 3420, totalCost: 0.0152, messageCount: 12 )) } .background(Color.oaiBackground) }