Customize action buttons to use letro gradient

This commit is contained in:
Letro Bot
2026-04-16 21:57:56 +04:00
parent d3083e7ed5
commit 303f58f94d
2 changed files with 31 additions and 1 deletions

View File

@@ -20,26 +20,42 @@ enum CompoundExtensions {
extension CompoundColors {
@MainActor
func applyLetroOverrides() {
override(\.gradientActionStop1, with: .letroGradient1)
override(\.gradientActionStop2, with: .letroGradient2)
override(\.gradientActionStop3, with: .letroGradient3)
override(\.gradientActionStop4, with: .letroGradient5)
override(\.gradientSubtleStop1, with: .letroGradient1.opacity(0.33))
override(\.gradientSubtleStop2, with: .letroGradient2.opacity(0.22))
override(\.gradientSubtleStop3, with: .letroGradient3.opacity(0.11))
override(\.gradientSubtleStop4, with: .letroGradient4.opacity(0.07))
override(\.gradientSubtleStop5, with: .letroGradient5.opacity(0.04))
override(\.bgActionPrimaryRest, with: .letroPrimary)
override(\.bgActionPrimaryPressed, with: .letroGradient1)
override(\.bgActionPrimaryDisabled, with: .letroGray.opacity(0.4))
override(\.iconAccentTertiary, with: .letroPrimary)
override(\.bgAccentRest, with: .letroPrimary)
override(\.textActionPrimary, with: .letroPrimary)
}
}
extension CompoundUIColors {
@MainActor
func applyLetroOverrides() {
override(\.gradientActionStop1, with: .letroGradient1)
override(\.gradientActionStop2, with: .letroGradient2)
override(\.gradientActionStop3, with: .letroGradient3)
override(\.gradientActionStop4, with: .letroGradient5)
override(\.gradientSubtleStop1, with: .letroGradient1.withAlphaComponent(0.33))
override(\.gradientSubtleStop2, with: .letroGradient2.withAlphaComponent(0.22))
override(\.gradientSubtleStop3, with: .letroGradient3.withAlphaComponent(0.11))
override(\.gradientSubtleStop4, with: .letroGradient4.withAlphaComponent(0.07))
override(\.gradientSubtleStop5, with: .letroGradient5.withAlphaComponent(0.04))
override(\.bgActionPrimaryRest, with: .letroPrimary)
override(\.bgActionPrimaryPressed, with: .letroGradient1)
override(\.bgActionPrimaryDisabled, with: .letroGray.withAlphaComponent(0.4))
override(\.iconAccentTertiary, with: .letroPrimary)
override(\.bgAccentRest, with: .letroPrimary)
override(\.textActionPrimary, with: .letroPrimary)
}
}

View File

@@ -138,7 +138,7 @@ public struct CompoundButtonStyle: ButtonStyle {
Capsule().strokeBorder(strokeColor(configuration: configuration))
}
case .primary:
Capsule().fill(fillColor(configuration: configuration))
makePrimaryBackground(configuration: configuration)
case .secondary:
Capsule().strokeBorder(strokeColor(configuration: configuration))
case .tertiary:
@@ -148,6 +148,20 @@ public struct CompoundButtonStyle: ButtonStyle {
}
}
// Letro: custom action buttons
@ViewBuilder
private func makePrimaryBackground(configuration: Self.Configuration) -> some View {
if !isEnabled || configuration.role == .destructive {
Capsule().fill(fillColor(configuration: configuration))
} else {
Capsule()
.fill(LinearGradient(gradient: .compound.action,
startPoint: .bottomLeading,
endPoint: .topTrailing))
.opacity(configuration.isPressed ? pressedOpacity : 1)
}
}
private var contentShape: AnyShape {
switch kind {
case .super, .primary, .secondary, .tertiary: