Sources/Source/Components/PaginationButtons.swift (50 lines of code) (raw):
import SwiftUI
public struct PaginationButtons: View {
let iconColor: Color
let borderColor: Color
@Binding var selectedIndex: Int
let canNavigateForward: Bool
public init(
iconColor: Color,
borderColor: Color,
selectedIndex: Binding<Int>,
canNavigateForward: Bool
) {
self.iconColor = iconColor
self.borderColor = borderColor
self._selectedIndex = selectedIndex
self.canNavigateForward = canNavigateForward
}
private var backDisabled: Bool {
return selectedIndex == 0
}
public var body: some View {
HStack {
IconButton(
icon: Image(.chevronLeftSingle),
size: .small,
iconColor: iconColor,
borderColor: borderColor,
disabled: backDisabled
) {
withAnimation {
self.selectedIndex = selectedIndex - 1
}
}
IconButton(
icon: Image(.chevronRightSingle),
size: .small,
iconColor: iconColor,
borderColor: borderColor,
disabled: !canNavigateForward
) {
withAnimation {
self.selectedIndex = selectedIndex + 1
}
}
}
}
}
#Preview {
PaginationButtons(iconColor: .blue, borderColor: .red, selectedIndex: .constant(0), canNavigateForward: true)
}