commit 48c5fd77672cd6a488fc982acd142cdd59518f64
parent 5557e0b1ac94d552717ac89cd93e9746af45220d
Author: Marc Stibane <marc@taler.net>
Date: Tue, 2 Sep 2025 01:04:51 +0200
Shape+style
Diffstat:
1 file changed, 50 insertions(+), 0 deletions(-)
diff --git a/TalerWallet1/Views/ViewModifier/Shape+style.swift b/TalerWallet1/Views/ViewModifier/Shape+style.swift
@@ -0,0 +1,50 @@
+// MIT License
+// Copyright © John Sundell
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+// and associated documentation files (the "Software"), to deal in the Software without restriction,
+// including without limitation the rights to use, copy, modify, merge, publish, distribute,
+// sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+// BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+import SwiftUI
+
+extension Shape {
+ func style<S: ShapeStyle, F: ShapeStyle>(
+ withStroke strokeContent: S,
+ lineWidth: CGFloat = 1,
+ fill fillContent: F
+ ) -> some View {
+ self.stroke(strokeContent, lineWidth: lineWidth)
+ .background(fill(fillContent))
+ }
+}
+
+/// use like this
+// struct CreateAccountButton: View {
+// var action: () -> Void
+//
+// var body: some View {
+// Button("Create account", action: action)
+// .padding()
+// .foregroundColor(.white)
+// .background(RoundedRectangle(cornerRadius: 20).style(
+// withStroke: Color.primary,
+// lineWidth: 2,
+// fill: LinearGradient(
+// gradient: Gradient(colors: [.blue, .black]),
+// startPoint: .top,
+// endPoint: .bottom
+// )
+// ))
+// }
+// }