native macOS codings agent orchestrator prowl.onev.cat
Something went wrong. Try again.
Swift
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788import SwiftUI
enum TerminalTabContextMenuVariant { /// Horizontal tab bar — shows all items; "Close Tabs to the Right". case tabBar /// Vertical shelf spine — shows all items; "Close Tabs Below". case shelf /// 2D canvas cards — worktree-scoped labels; hides "Close Tabs to the Right". case canvas}
extension View { func terminalTabContextMenu( tabId: TerminalTabID, tabs: [TerminalTabItem], actions: TerminalTabContextMenuActions, variant: TerminalTabContextMenuVariant = .tabBar ) -> some View { modifier( TerminalTabContextMenu( tabId: tabId, tabs: tabs, actions: actions, variant: variant ) ) }}
struct TerminalTabContextMenu: ViewModifier { let tabId: TerminalTabID let tabs: [TerminalTabItem] let actions: TerminalTabContextMenuActions let variant: TerminalTabContextMenuVariant
func body(content: Content) -> some View { content.contextMenu { if let currentTab, !currentTab.isTitleLocked { Button("Rename Tab") { actions.renameTab(tabId) } }
Button("Change Tab Icon...") { actions.changeIcon(tabId) }
Divider()
Button("Close Tab") { actions.closeTab(tabId) }
Button(variant == .canvas ? "Close Other Tabs in This Worktree" : "Close Other Tabs") { actions.closeOthers(tabId) } .disabled(tabs.count <= 1)
if variant != .canvas { Button(closeToTrailingLabel) { actions.closeToRight(tabId) } .disabled(isLastTab) }
Button(variant == .canvas ? "Close All Tabs in This Worktree" : "Close All") { actions.closeAll() } } }
private var closeToTrailingLabel: LocalizedStringKey { switch variant { case .shelf: "Close Tabs Below" case .tabBar, .canvas: "Close Tabs to the Right" } }
private var isLastTab: Bool { guard let last = tabs.last else { return true } return last.id == tabId }
private var currentTab: TerminalTabItem? { tabs.first { $0.id == tabId } }}