feat: Adds more flagged view style options.

This commit is contained in:
2024-06-07 10:00:42 -04:00
parent 75fa3b55ae
commit 280cb3b863
8 changed files with 116 additions and 17 deletions

View File

@@ -0,0 +1,24 @@
import Styleguide
import SwiftUI
private struct FlaggedMessageLabelStyleKey: EnvironmentKey {
static var defaultValue = AnyTextLabelStyle(style: .font(.caption))
}
extension EnvironmentValues {
var flaggedMessageLabelStyle: AnyTextLabelStyle {
get { self[FlaggedMessageLabelStyleKey.self] }
set { self[FlaggedMessageLabelStyleKey.self] = newValue }
}
}
extension View {
public func flaggedMessageLabelStyle(_ style: AnyTextLabelStyle) -> some View {
environment(\.flaggedMessageLabelStyle, style)
}
public func flaggedMessageLabelStyle<S: TextLabelStyle>(_ style: S) -> some View {
flaggedMessageLabelStyle(AnyTextLabelStyle(style: style))
}
}

View File

@@ -40,16 +40,15 @@ public struct AnyFlaggedMessageViewStyle: FlaggedMessageViewStyle {
public struct DefaultFlaggedMessageViewStyle: FlaggedMessageViewStyle {
@ViewBuilder
public func makeBody(configuration: Configuration) -> some View {
if let message = configuration.message {
if configuration.message != nil {
HStack {
Text(configuration.status.title)
.bold()
.foregroundStyle(configuration.status.flagColor)
TextLabel(message)
FlaggedStatusLabel(status: configuration.status)
FlaggedMessageLabel(message: configuration.message)
}
.font(.caption)
}
}
}
@@ -58,14 +57,11 @@ public struct VerticalFlaggedMessageViewStyle: FlaggedMessageViewStyle {
@ViewBuilder
public func makeBody(configuration: Configuration) -> some View {
if let message = configuration.message {
if configuration.message != nil {
VStack(alignment: .leading) {
Text(configuration.status.title)
.bold()
.foregroundStyle(configuration.status.flagColor)
TextLabel(message)
FlaggedStatusLabel(status: configuration.status)
FlaggedMessageLabel(message: configuration.message)
}
.font(.caption)
}
}
}

View File

@@ -0,0 +1,24 @@
import SharedModels
import Styleguide
import SwiftUI
private struct FlaggedStatusLabelStyleKey: EnvironmentKey {
static var defaultValue = AnyTextLabelStyle(style: .font(.caption, fontWeight: .bold))
}
extension EnvironmentValues {
public var flaggedStatusLabelStyle: AnyTextLabelStyle {
get { self[FlaggedStatusLabelStyleKey.self] }
set { self[FlaggedStatusLabelStyleKey.self] = newValue }
}
}
extension View {
public func flaggedStatusLabelStyle(_ style: AnyTextLabelStyle) -> some View {
environment(\.flaggedStatusLabelStyle, style)
}
public func flaggedStatusLabelStyle<S: TextLabelStyle>(_ style: S) -> some View {
flaggedStatusLabelStyle(AnyTextLabelStyle(style: style))
}
}