Files
openclaw/apps/macos/Sources/OpenClaw/DashboardGatewayCommands.swift
Peter Steinberger f0b7542a22 feat(mac): gateway menu-bar surfaces and Gateways main menu (#114038)
* feat(mac): add gateway menu surfaces

* docs(mac): document gateway menu surfaces

* test(mac): make dashboard frame assertions display-independent
2026-07-26 02:13:13 -04:00

35 lines
1.3 KiB
Swift

import SwiftUI
@MainActor
struct DashboardGatewayCommands: Commands {
@Bindable private var dashboardManager: DashboardManager
init(dashboardManager: DashboardManager) {
self._dashboardManager = Bindable(wrappedValue: dashboardManager)
}
var body: some Commands {
let items = DashboardGatewayMenuModel.items(from: self.dashboardManager.gatewayEntries)
if !items.isEmpty {
CommandMenu("Gateways") {
ForEach(items) { item in
if let shortcutNumber = item.shortcutNumber {
Toggle(item.name, isOn: self.selectionBinding(for: item.target))
.keyboardShortcut(
KeyEquivalent(Character(String(shortcutNumber))),
modifiers: .command)
} else {
Toggle(item.name, isOn: self.selectionBinding(for: item.target))
}
}
}
}
}
private func selectionBinding(for target: DashboardGatewayTarget) -> Binding<Bool> {
Binding(
get: { self.dashboardManager.frontmostDashboardTarget == target },
set: { _ in self.dashboardManager.switchFrontmostDashboard(to: target) })
}
}