Add searchable instrument browser

This commit is contained in:
diyaa
2026-09-14 00:55:41 +02:00
parent b2bf04e78b
commit ecbf07d1ea
5 changed files with 102 additions and 1 deletions
@@ -0,0 +1,50 @@
import MusicAssistantCore
import SwiftUI
struct InstrumentBrowserView: View {
private let catalog: LocalInstrumentCatalog
@State private var searchText = ""
@Environment(\.dismiss) private var dismiss
init(catalog: LocalInstrumentCatalog = LocalInstrumentCatalog()) {
self.catalog = catalog
}
var body: some View {
NavigationStack {
List(catalog.instruments(matching: searchText), id: \.id) { instrument in
VStack(alignment: .leading, spacing: 4) {
Text(instrument.name)
.font(.body.weight(.medium))
HStack(spacing: 6) {
Text(instrument.familyCategory)
if let regionOrigin = instrument.regionOrigin {
Text(regionOrigin)
}
}
.font(.caption)
.foregroundStyle(.secondary)
.lineLimit(1)
}
.padding(.vertical, 2)
}
.navigationTitle("Instrument Catalog")
.searchable(text: $searchText, prompt: "Search instruments")
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Done") {
dismiss()
}
}
}
}
.frame(minWidth: 460, minHeight: 520)
}
}
#Preview {
InstrumentBrowserView()
}