diff --git a/Libraries/UI/Kit/Sources/Components/FakeLabel.swift b/Libraries/UI/Kit/Sources/Components/FakeLabel.swift new file mode 100644 index 0000000..a365342 --- /dev/null +++ b/Libraries/UI/Kit/Sources/Components/FakeLabel.swift @@ -0,0 +1,95 @@ +// +// FakeLabel.swift +// ReviewsUIKit +// +// Created by Javier Cicchelli on 20/03/2024. +// Copyright © 2024 Röck+Cöde. All rights reserved. +// + +import ReviewsFoundationKit +import SwiftUI + +public struct FakeLabel: View { + + // MARK: Constants + private let systemIcon: String + private let title: String + + // MARK: Initialisers + public init( + systemIcon: String, + title: String + ) { + self.systemIcon = systemIcon + self.title = title + } + + // MARK: Body + public var body: some View { + HStack( + alignment: .bottom, + spacing: 8 + ) { + iconOrQuestionMark + + Text(titleOrDash) + .font(.body) + } + } + +} + +// MARK: - Helpers +private extension FakeLabel { + + // MARK: Computed + var iconOrQuestionMark: Image { + .init(systemName: systemIcon.isEmpty + ? .Icon.questionMark + : systemIcon + ) + } + + var titleOrDash: String { + title.isEmpty + ? .Title.none + : title + } + +} + +// MARK: - String+Constants +private extension String { + enum Title { + static let none = "-" + } +} + +// MARK: - Previews +#Preview("Fake Label with system icon and title") { + FakeLabel( + systemIcon: .Icon.person, + title: "Some title goes here..." + ) +} + +#Preview("Fake Label with empty system icon and title") { + FakeLabel( + systemIcon: .empty, + title: "Some title goes here..." + ) +} + +#Preview("Fake Label with system icon and empty title") { + FakeLabel( + systemIcon: .Icon.person, + title: .empty + ) +} + +#Preview("Fake Label with both empty system icon and title") { + FakeLabel( + systemIcon: .empty, + title: .empty + ) +} diff --git a/Libraries/UI/Kit/Sources/Components/StarRating.swift b/Libraries/UI/Kit/Sources/Components/StarRating.swift index 70f41c7..ec7f189 100644 --- a/Libraries/UI/Kit/Sources/Components/StarRating.swift +++ b/Libraries/UI/Kit/Sources/Components/StarRating.swift @@ -1,6 +1,6 @@ // // StarRating.swift -// Feed +// ReviewsUIKit // // Created by Javier Cicchelli on 19/03/2024. // Copyright © 2024 Röck+Cöde. All rights reserved. @@ -62,9 +62,11 @@ private extension StarRating { } // MARK: - Image+Constants -private extension Image.Icon { - static let star: Image = .init(systemName: "star") - static let starFill: Image = .init(systemName: "star.fill") +private extension Image { + enum Icon { + static let star: Image = .init(systemName: "star") + static let starFill: Image = .init(systemName: "star.fill") + } } // MARK: - Previews diff --git a/Libraries/UI/Kit/Sources/Extensions/Image+Icons.swift b/Libraries/UI/Kit/Sources/Extensions/Image+Icons.swift deleted file mode 100644 index 74ec6a3..0000000 --- a/Libraries/UI/Kit/Sources/Extensions/Image+Icons.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// Image+Icons.swift -// ReviewsUIKit -// -// Created by Javier Cicchelli on 20/03/2024. -// Copyright © 2024 Röck+Cöde VoF. All rights reserved. -// - -import SwiftUI - -public extension Image { - enum Icon { - - // MARK: Constants - public static let info = Image(systemName: .Icon.info) - public static let person = Image(systemName: .Icon.person) - - } -} diff --git a/Libraries/UI/Kit/Sources/Extensions/String+Icons.swift b/Libraries/UI/Kit/Sources/Extensions/String+Icons.swift index b535928..bfe3ffc 100644 --- a/Libraries/UI/Kit/Sources/Extensions/String+Icons.swift +++ b/Libraries/UI/Kit/Sources/Extensions/String+Icons.swift @@ -6,12 +6,13 @@ // Copyright © 2024 Röck+Cöde VoF. All rights reserved. // -extension String { +public extension String { enum Icon { // MARK: Constants - static let info = "info.circle.fill" - static let person = "person.crop.circle.fill" - + static let questionMark = "questionmark.circle.fill" + + public static let info = "info.circle.fill" + public static let person = "person.crop.circle.fill" } } diff --git a/Libraries/UI/Kit/Sources/Extensions/UIImage+Icons.swift b/Libraries/UI/Kit/Sources/Extensions/UIImage+Icons.swift deleted file mode 100644 index 93cbb37..0000000 --- a/Libraries/UI/Kit/Sources/Extensions/UIImage+Icons.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// UIImage+Icons.swift -// ReviewsUIKit -// -// Created by Javier Cicchelli on 20/03/2024. -// Copyright © 2024 Röck+Cöde VoF. All rights reserved. -// - -import UIKit - -public extension UIImage { - enum Icon { - - // MARK: Constants - public static let info = UIImage(systemName: .Icon.info) - public static let person = UIImage(systemName: .Icon.person) - - } -}