litellm/apps/macos-usage/Sources/LiteLLMUsageMenuBar/LiteLLMUsageMenuBarApp.swift

34 lines
952 B
Swift

import SwiftUI
@main
struct LiteLLMUsageMenuBarApp: App {
@StateObject private var store = UsageStore()
var body: some Scene {
MenuBarExtra {
UsagePopover().environmentObject(store)
} label: {
MenuBarLabel().environmentObject(store)
}
.menuBarExtraStyle(.window)
Window("로그인 설정", id: "login-settings") {
SettingsView().environmentObject(store)
}
.windowResizability(.contentSize)
.defaultPosition(.center)
}
}
private struct MenuBarLabel: View {
@EnvironmentObject private var store: UsageStore
var body: some View {
switch store.state {
case let .ready(snapshot): Text("🚅 \(snapshot.percentage.formatted(.number.precision(.fractionLength(0))))%")
case .loading: Text("🚅 ...")
case .needsKey: Text("🚅 --")
case .unavailable, .failure: Text("🚅 !")
}
}
}