|
@@ -0,0 +1,66 @@
|
|
|
|
|
+import SwiftUI
|
|
|
|
|
+
|
|
|
|
|
+struct WidgetBobble: View {
|
|
|
|
|
+ @Environment(\.colorScheme) var colorScheme
|
|
|
|
|
+
|
|
|
|
|
+ let gradient: AngularGradient
|
|
|
|
|
+ let color: Color
|
|
|
|
|
+
|
|
|
|
|
+ var body: some View {
|
|
|
|
|
+ HStack(alignment: .center) {
|
|
|
|
|
+ ZStack {
|
|
|
|
|
+ Group {
|
|
|
|
|
+ CircleShapeWidget(gradient: gradient)
|
|
|
|
|
+ TriangleShapeWidget(color: color)
|
|
|
|
|
+ }
|
|
|
|
|
+ CircleShapeWidget(gradient: gradient)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+struct CircleShapeWidget: View {
|
|
|
|
|
+ @Environment(\.colorScheme) var colorScheme
|
|
|
|
|
+
|
|
|
|
|
+ let gradient: AngularGradient
|
|
|
|
|
+
|
|
|
|
|
+ var body: some View {
|
|
|
|
|
+// let colorBackground: Color = colorScheme == .dark ? Color(
|
|
|
|
|
+// red: 0.05490196078,
|
|
|
|
|
+// green: 0.05490196078,
|
|
|
|
|
+// blue: 0.05490196078
|
|
|
|
|
+// ) : .white
|
|
|
|
|
+
|
|
|
|
|
+ Circle()
|
|
|
|
|
+ .stroke(gradient, lineWidth: 10)
|
|
|
|
|
+ .background(Circle().fill(.clear))
|
|
|
|
|
+ .frame(width: 130, height: 130)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+struct TriangleShapeWidget: View {
|
|
|
|
|
+ let color: Color
|
|
|
|
|
+
|
|
|
|
|
+ var body: some View {
|
|
|
|
|
+ TriangleWidget()
|
|
|
|
|
+ .fill(color)
|
|
|
|
|
+ .frame(width: 35, height: 35)
|
|
|
|
|
+ .rotationEffect(.degrees(90))
|
|
|
|
|
+ .offset(x: 78)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+struct TriangleWidget: Shape {
|
|
|
|
|
+ func path(in rect: CGRect) -> Path {
|
|
|
|
|
+ var path = Path()
|
|
|
|
|
+
|
|
|
|
|
+ let cornerRadius: CGFloat = 2
|
|
|
|
|
+
|
|
|
|
|
+ path.move(to: CGPoint(x: rect.midX, y: rect.minY))
|
|
|
|
|
+ path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY - cornerRadius))
|
|
|
|
|
+ path.addQuadCurve(to: CGPoint(x: rect.minX, y: rect.maxY - cornerRadius), control: CGPoint(x: rect.midX, y: rect.maxY))
|
|
|
|
|
+ path.closeSubpath()
|
|
|
|
|
+
|
|
|
|
|
+ return path
|
|
|
|
|
+ }
|
|
|
|
|
+}
|