import SwiftUI struct WaveformView: View { var audioLevel: Float var isBotReady: Bool var voiceClientStatus: String @State private var audioLevels: [Float] = Array(repeating: 0, count: 5) private let dotCount = 5 var body: some View { GeometryReader { geometry in VStack { Spacer() HStack { Spacer() ZStack { // Outer gray border Circle() .stroke(Color.gray, lineWidth: 1) .frame(width: geometry.size.width * 0.9, height: geometry.size.width * 0.9) // Gray middle Circle() .fill(isBotReady ? Color.backgroundCircle : Color.backgroundCircleNotConnected) .frame(width: geometry.size.width * 0.82, height: geometry.size.width * 0.82) if isBotReady { if audioLevel > 0 { // Waveform bars inside the circle HStack(spacing: 10) { ForEach(0.. 1) { audioLevel = 1 } // Update the array and shift values audioLevels.removeFirst() audioLevels.append(newLevel) } } } #Preview { WaveformView(audioLevel: 0, isBotReady: false, voiceClientStatus: "idle") }