| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //
- // ActionButtonStyle.swift
- // LoopKitUI
- //
- // Created by Michael Pangburn on 4/15/20.
- // Copyright © 2020 LoopKit Authors. All rights reserved.
- //
- import SwiftUI
- public struct ActionButtonStyle: ButtonStyle {
- public enum ButtonType {
- case primary
- case secondary
- case destructive
- }
- private let fontColor: Color
- private let backgroundColor: Color
- private let edgeColor: Color
- private let cornerRadius: CGFloat = 10
- private let squidge: CGFloat = 1
- public init(_ style: ButtonType = .primary) {
- switch style {
- case .primary:
- fontColor = .white
- backgroundColor = .accentColor
- edgeColor = .clear
- case .destructive:
- fontColor = .white
- backgroundColor = .red
- edgeColor = .clear
- case .secondary:
- fontColor = .accentColor
- backgroundColor = .clear
- edgeColor = .accentColor
- }
- }
- public func makeBody(configuration: Configuration) -> some View {
- configuration.label
- .padding(configuration.isPressed ? -squidge : 0)
- .padding()
- .foregroundColor(fontColor)
- .font(.headline)
- .frame(maxWidth: .infinity)
- .background(backgroundColor)
- .overlay(Color(.secondarySystemBackground).opacity(configuration.isPressed ? 0.35 : 0))
- .cornerRadius(cornerRadius)
- .padding(configuration.isPressed ? squidge : 0)
- .overlay(RoundedRectangle(cornerRadius: cornerRadius)
- .stroke(edgeColor))
- .contentShape(Rectangle())
- }
- }
|