Button {
// Action
} label: {
Text("Continue")
.frame(maxWidth: .infinity)
.akPrimaryButton(
tint: Color.blue,
margin: .medium,
onLoading: false
)
}Button {
// Action
} label: {
Text("Cancel")
.frame(maxWidth: .infinity)
.akSecondaryButton(
tint: Color.gray,
margin: .medium
)
}Button {
// Action
} label: {
HStack {
Image(systemName: "arrow.left")
Text("Back")
}
.akGhostButton(tint: Color.primary)
}Button {
// Delete action
} label: {
Text("Delete Account")
.frame(maxWidth: .infinity)
.akDestructiveButton(
filled: true,
margin: .medium
)
}Button {
// Action
} label: {
Text("Other Action")
.frame(maxWidth: .infinity)
.akOtherButton(tint: Color.secondary)
}AKButtonModifierProtocol which ensures consistent interface across different button types.public protocol AKButtonModifierProtocol {
associatedtype S: ShapeStyle
var tint: S { get set }
var margin: Double { get set }
var onLoading: Bool { get set }
}