import AppKit import CodexBarCore import SwiftUI extension ProviderSwitcherSelection { var provider: UsageProvider? { switch self { case .overview: nil case let .provider(provider): provider } } } struct OverviewMenuCardRowView: View { let model: UsageMenuCardView.Model let width: CGFloat var body: some View { VStack(alignment: .leading, spacing: 0) { UsageMenuCardHeaderSectionView( model: self.model, showDivider: self.hasUsageBlock, width: self.width) if self.hasUsageBlock { UsageMenuCardUsageSectionView( model: self.model, showBottomDivider: false, bottomPadding: 6, width: self.width) } } .frame(width: self.width, alignment: .leading) } private var hasUsageBlock: Bool { !self.model.metrics.isEmpty || !self.model.usageNotes.isEmpty || self.model.placeholder != nil } } struct OpenAIWebMenuItems { let hasUsageBreakdown: Bool let hasCreditsHistory: Bool let hasCostHistory: Bool let canShowBuyCredits: Bool } struct TokenAccountMenuDisplay { let provider: UsageProvider let accounts: [ProviderTokenAccount] let snapshots: [TokenAccountUsageSnapshot] let activeIndex: Int let showAll: Bool let showSwitcher: Bool } struct CodexAccountMenuDisplay: Equatable { let accounts: [CodexVisibleAccount] let activeVisibleAccountID: String? }