47 lines
1.3 KiB
Swift
47 lines
1.3 KiB
Swift
import SwiftUI
|
|
|
|
struct SearchOverlayView: View {
|
|
@Binding var query: String
|
|
let matchCount: Int
|
|
let currentIndex: Int
|
|
let onSearch: (String) -> Void
|
|
let onNext: () -> Void
|
|
let onPrev: () -> Void
|
|
let onClose: () -> Void
|
|
|
|
var body: some View {
|
|
HStack(spacing: 8) {
|
|
Image(systemName: "magnifyingglass")
|
|
.foregroundStyle(.secondary)
|
|
|
|
TextField("Search messages", text: $query)
|
|
.textFieldStyle(.roundedBorder)
|
|
.onChange(of: query) { _, newValue in
|
|
onSearch(newValue)
|
|
}
|
|
|
|
if matchCount > 0 {
|
|
Text("\(currentIndex + 1)/\(matchCount)")
|
|
.font(.caption)
|
|
.foregroundStyle(.secondary)
|
|
.fixedSize()
|
|
|
|
Button(action: onPrev) {
|
|
Image(systemName: "chevron.up")
|
|
}
|
|
Button(action: onNext) {
|
|
Image(systemName: "chevron.down")
|
|
}
|
|
}
|
|
|
|
Button(action: onClose) {
|
|
Image(systemName: "xmark.circle.fill")
|
|
.foregroundStyle(.secondary)
|
|
}
|
|
}
|
|
.padding(.horizontal)
|
|
.padding(.vertical, 6)
|
|
.background(.ultraThinMaterial)
|
|
}
|
|
}
|