diff --git a/apps/macos/Sources/Clawdis/MenuBar.swift b/apps/macos/Sources/Clawdis/MenuBar.swift index 7b5ec29b3..2554529de 100644 --- a/apps/macos/Sources/Clawdis/MenuBar.swift +++ b/apps/macos/Sources/Clawdis/MenuBar.swift @@ -185,13 +185,7 @@ private struct MenuContent: View { private var voiceWakeMicMenu: some View { Menu { - Picker("Microphone", selection: self.$state.voiceWakeMicID) { - Text(self.defaultMicLabel).tag("") - ForEach(self.availableMics) { mic in - Text(mic.name).tag(mic.uid) - } - } - .labelsHidden() + self.microphoneMenuItems if self.loadingMics { Divider() @@ -206,9 +200,6 @@ private struct MenuContent: View { Spacer() Text(self.selectedMicLabel) .foregroundStyle(.secondary) - Image(systemName: "chevron.right") - .font(.caption.weight(.semibold)) - .foregroundStyle(.secondary) } } .task { await self.loadMicrophones() } @@ -222,6 +213,28 @@ private struct MenuContent: View { return "Unavailable" } + private var microphoneMenuItems: some View { + Group { + Button { + self.state.voiceWakeMicID = "" + } label: { + Label(self.defaultMicLabel, systemImage: self.state.voiceWakeMicID.isEmpty ? "checkmark" : "") + .labelStyle(.titleAndIcon) + } + .buttonStyle(.plain) + + ForEach(self.availableMics) { mic in + Button { + self.state.voiceWakeMicID = mic.uid + } label: { + Label(mic.name, systemImage: self.state.voiceWakeMicID == mic.uid ? "checkmark" : "") + .labelStyle(.titleAndIcon) + } + .buttonStyle(.plain) + } + } + } + private var defaultMicLabel: String { if let host = Host.current().localizedName, !host.isEmpty { return "Auto-detect (\(host))"