SettingsStepperRow.swift 1002 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // LoopFollow
  2. // SettingsStepperRow.swift
  3. // Created by Jonas Björkert on 2025-05-26.
  4. import SwiftUI
  5. struct SettingsStepperRow<Value>: View
  6. where Value: Strideable & Comparable,
  7. Value.Stride: SignedNumeric & Comparable
  8. {
  9. let title: String
  10. let range: ClosedRange<Value>
  11. let step: Value.Stride
  12. private let format: (Value) -> String
  13. @Binding private var value: Value
  14. init(
  15. title: String,
  16. range: ClosedRange<Value>,
  17. step: Value.Stride,
  18. value: Binding<Value>,
  19. format: @escaping (Value) -> String = { "\($0)" }
  20. ) {
  21. self.title = title
  22. self.range = range
  23. self.step = step
  24. _value = value
  25. self.format = format
  26. }
  27. var body: some View {
  28. Stepper(value: $value, in: range, step: step) {
  29. HStack {
  30. Text(title)
  31. Spacer()
  32. Text(format(value))
  33. .foregroundColor(.secondary)
  34. }
  35. }
  36. }
  37. }