87 lines · 4.4 KB · Swift
RawDownload
import SwiftUI @MainActorstruct DisplayPane: View {    @Bindable var settings: SettingsStore     var body: some View {        ScrollView(.vertical, showsIndicators: true) {            VStack(alignment: .leading, spacing: 16) {                SettingsSection(contentSpacing: 12) {                    Text("Menu bar")                        .font(.caption)                        .foregroundStyle(.secondary)                        .textCase(.uppercase)                    PreferenceToggleRow(                        title: "Merge Icons",                        subtitle: "Use a single menu bar icon with a provider switcher.",                        binding: self.$settings.mergeIcons)                    PreferenceToggleRow(                        title: "Switcher shows icons",                        subtitle: "Show provider icons in the switcher (otherwise show a weekly progress line).",                        binding: self.$settings.switcherShowsIcons)                        .disabled(!self.settings.mergeIcons)                        .opacity(self.settings.mergeIcons ? 1 : 0.5)                    PreferenceToggleRow(                        title: "Show most-used provider",                        subtitle: "Menu bar auto-shows the provider closest to its rate limit.",                        binding: self.$settings.menuBarShowsHighestUsage)                        .disabled(!self.settings.mergeIcons)                        .opacity(self.settings.mergeIcons ? 1 : 0.5)                    PreferenceToggleRow(                        title: "Menu bar shows percent",                        subtitle: "Replace critter bars with provider branding icons and a percentage.",                        binding: self.$settings.menuBarShowsBrandIconWithPercent)                    HStack(alignment: .top, spacing: 12) {                        VStack(alignment: .leading, spacing: 4) {                            Text("Display mode")                                .font(.body)                            Text("Choose what to show in the menu bar (Pace shows usage vs. expected).")                                .font(.footnote)                                .foregroundStyle(.tertiary)                        }                        Spacer()                        Picker("Display mode", selection: self.$settings.menuBarDisplayMode) {                            ForEach(MenuBarDisplayMode.allCases) { mode in                                Text(mode.label).tag(mode)                            }                        }                        .labelsHidden()                        .pickerStyle(.menu)                        .frame(maxWidth: 200)                    }                    .disabled(!self.settings.menuBarShowsBrandIconWithPercent)                    .opacity(self.settings.menuBarShowsBrandIconWithPercent ? 1 : 0.5)                }                 Divider()                 SettingsSection(contentSpacing: 12) {                    Text("Menu content")                        .font(.caption)                        .foregroundStyle(.secondary)                        .textCase(.uppercase)                    PreferenceToggleRow(                        title: "Show usage as used",                        subtitle: "Progress bars fill as you consume quota (instead of showing remaining).",                        binding: self.$settings.usageBarsShowUsed)                    PreferenceToggleRow(                        title: "Show reset time as clock",                        subtitle: "Display reset times as absolute clock values instead of countdowns.",                        binding: self.$settings.resetTimesShowAbsolute)                    PreferenceToggleRow(                        title: "Show credits + extra usage",                        subtitle: "Show Codex Credits and Claude Extra usage sections in the menu.",                        binding: self.$settings.showOptionalCreditsAndExtraUsage)                    PreferenceToggleRow(                        title: "Show all token accounts",                        subtitle: "Stack token accounts in the menu (otherwise show an account switcher bar).",                        binding: self.$settings.showAllTokenAccountsInMenu)                }            }            .frame(maxWidth: .infinity, alignment: .leading)            .padding(.horizontal, 20)            .padding(.vertical, 12)        }    }}