import Foundation /// A transient in-app notification, posted and dismissed by a ``Notifier``. public struct AppNotification: Equatable, Identifiable, Sendable { // MARK: Properties /// The unique identifier of the notification. public let id: UUID /// The kind of the notification, driving its visual weight. public let kind: Kind /// The localized message of the notification. public let message: String /// The system symbol of the notification's icon. public let symbol: String // MARK: Initializers /// Creates a notification of a given kind, with a localized message and a system symbol. /// /// - Parameters: /// - id: The unique identifier of the notification. Defaults to a newly generated identifier. /// - kind: The kind of the notification. /// - message: The localized message of the notification. /// - symbol: The system symbol of the notification's icon. public init( id: UUID = .init(), kind: Kind, message: String, symbol: String ) { self.id = id self.kind = kind self.message = message self.symbol = symbol } } // MARK: - Enumerations extension AppNotification { /// The kind of a notification, driving its visual weight. public enum Kind: Sendable { /// The notification reports an error. case error /// The notification reports an informational event. case info /// The notification reports a warning. case warning } }