Bubble/Threaded/Components/ButtonStyles.swift

46 lines
1.3 KiB
Swift
Raw Normal View History

2023-12-29 11:17:37 +01:00
//Made by Lumaa
import SwiftUI
struct LargeButton: ButtonStyle {
var filled: Bool = false
var height: CGFloat? = nil
2023-12-29 11:17:37 +01:00
func makeBody(configuration: Configuration) -> some View {
configuration.label
.padding(.horizontal)
.padding(.vertical, height)
2023-12-29 11:17:37 +01:00
.background {
if filled {
Color(uiColor: UIColor.label)
}
}
.foregroundStyle(filled ? Color(uiColor: UIColor.systemBackground) : Color(uiColor: UIColor.label))
.bold(filled)
.clipShape(.rect(cornerRadius: 15))
.opacity(configuration.isPressed ? 0.3 : 1)
.overlay {
if !filled {
RoundedRectangle(cornerRadius: 15)
.stroke(Color(uiColor: UIColor.tertiaryLabel))
.opacity(configuration.isPressed ? 0.3 : 1)
}
}
}
}
struct NoTapAnimationStyle: PrimitiveButtonStyle {
func makeBody(configuration: Configuration) -> some View {
configuration.label
.contentShape(Rectangle())
.onTapGesture(perform: configuration.trigger)
}
}
#Preview {
Button {} label: {
Text("Hello world")
}
.buttonStyle(NoTapAnimationStyle())
}