// // 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 ) }