diff --git a/DailyTracker_UI.xcodeproj/project.pbxproj b/DailyTracker_UI.xcodeproj/project.pbxproj index 301e53e..3912352 100644 --- a/DailyTracker_UI.xcodeproj/project.pbxproj +++ b/DailyTracker_UI.xcodeproj/project.pbxproj @@ -28,6 +28,7 @@ 51A901FE2AE3BCB800AEFEE6 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A901FD2AE3BCB800AEFEE6 /* TodayView.swift */; }; 51A902012AE3C2AC00AEFEE6 /* MainViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A902002AE3C2AC00AEFEE6 /* MainViewModel.swift */; }; 86023F102AE686C2004AC376 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86023F0F2AE686C2004AC376 /* HapticsManager.swift */; }; + 861DFE4C2AEEA059009865B0 /* NavigationButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 861DFE4B2AEEA059009865B0 /* NavigationButtonView.swift */; }; 86FE6DCE2AE9558600340411 /* AlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86FE6DCD2AE9558600340411 /* AlertView.swift */; }; E59FBB112ADAC664002B6F16 /* UserImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E59FBB102ADAC664002B6F16 /* UserImageView.swift */; }; /* End PBXBuildFile section */ @@ -56,6 +57,7 @@ 51A901FD2AE3BCB800AEFEE6 /* TodayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayView.swift; sourceTree = ""; }; 51A902002AE3C2AC00AEFEE6 /* MainViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewModel.swift; sourceTree = ""; }; 86023F0F2AE686C2004AC376 /* HapticsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticsManager.swift; sourceTree = ""; }; + 861DFE4B2AEEA059009865B0 /* NavigationButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationButtonView.swift; sourceTree = ""; }; 86FE6DCD2AE9558600340411 /* AlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertView.swift; sourceTree = ""; }; E59FBB102ADAC664002B6F16 /* UserImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserImageView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -241,6 +243,7 @@ isa = PBXGroup; children = ( 51A901FD2AE3BCB800AEFEE6 /* TodayView.swift */, + 861DFE4B2AEEA059009865B0 /* NavigationButtonView.swift */, ); path = "Support Views"; sourceTree = ""; @@ -357,6 +360,7 @@ 51A63E0C2AD1AE2400901E2B /* FoundationExtensions.swift in Sources */, 51A901F92AE3BC4900AEFEE6 /* FontManager.swift in Sources */, 51A63DF22AD1ABD700901E2B /* Persistence.swift in Sources */, + 861DFE4C2AEEA059009865B0 /* NavigationButtonView.swift in Sources */, 51A63E122AD1B58E00901E2B /* UIApplicationExtension.swift in Sources */, 86FE6DCE2AE9558600340411 /* AlertView.swift in Sources */, 51A63DEB2AD1ABD600901E2B /* MainView.swift in Sources */, diff --git a/DailyTracker_UI/iOS/Code/Features/Main/Views/Support Views/NavigationButtonView.swift b/DailyTracker_UI/iOS/Code/Features/Main/Views/Support Views/NavigationButtonView.swift new file mode 100644 index 0000000..7d1c14a --- /dev/null +++ b/DailyTracker_UI/iOS/Code/Features/Main/Views/Support Views/NavigationButtonView.swift @@ -0,0 +1,63 @@ +// +// NavigationButtonView.swift +// DailyTracker_UI +// +// Created by Mark Golubev on 29/10/2023. +// + +import SwiftUI + +struct NavigationButtonView: View { + + let navigationButton: NavigationButton? + + var body: some View { + navigationButtonView + } + + init(navigationButton: NavigationButton? = NavigationButton(size: 25)) { + self.navigationButton = navigationButton + } + + // MARK: Primary Button View + @ViewBuilder + private var navigationButtonView: some View { + if let button = navigationButton { + NavigationButton(size: button.size) { + button.action?() + } + } + } +} + +struct NavigationButton: View { + let size: CGFloat + var action: (() -> Void)? = nil + + var body: some View { + Button(action: { + action?() + }, label: { + ZStack{ + Color.clear.opacity(0.7) + VStack(alignment: .leading, spacing: 5, content: { + RoundedRectangle(cornerRadius: 25.0, style: .continuous) + .frame(width: size, height: 2) + RoundedRectangle(cornerRadius: 25.0, style: .continuous) + .frame(width: size / 2, height: 2) + }) + } + .frame(width: 44, height: 44) + .padding(6) + .overlay { + RoundedRectangle(cornerRadius: 8) + .stroke(lineWidth: 1) + } + .foregroundStyle(.black) + }) + } +} + +#Preview { + NavigationButtonView() +}