diff --git a/Sources/Core/View/Card.swift b/Sources/Core/View/Card.swift new file mode 100644 index 0000000..fda8500 --- /dev/null +++ b/Sources/Core/View/Card.swift @@ -0,0 +1,56 @@ +// +// Card.swift +// MacBackend +// +// Created by david-swift on 05.01.2025. +// + +import SwiftUI + +/// The card wrapper. +public struct Card: SwiftUIWidget { + + /// The wrapped view. + var content: Body + + /// The wrapped views. + public var wrappedViews: [String: Meta.AnyView] { + [.mainContent: content] + } + + /// Initialize a card view. + /// - Parameter content: The card's content. + public init(@Meta.ViewBuilder content: () -> Body) { + self.content = content() + } + + /// Get the SwiftUI view. + /// - Parameter properties: The widget data. + /// - Returns: The SwiftUI view. + public static func view(properties: Self) -> some SwiftUI.View { + CardView() + } + +} + +/// The card view in SwiftUI. +struct CardView: SwiftUI.View { + + /// The color scheme. + @SwiftUI.Environment(\.colorScheme) + var colorScheme + + /// The view's body. + var body: some SwiftUI.View { + MacBackendView(.mainContent) + .padding(20) + .background( + Color( + colorScheme == .dark ? NSColor.darkGray : NSColor.white + ), + in: .rect(cornerRadius: 10) + ) + .shadow(color: .black.opacity(0.2), radius: 25) + } + +} diff --git a/Sources/MacBackend/AnyView.swift b/Sources/MacBackend/AnyView.swift index 993c0c5..22984d0 100644 --- a/Sources/MacBackend/AnyView.swift +++ b/Sources/MacBackend/AnyView.swift @@ -104,4 +104,10 @@ extension AnyView { } } + /// Make the view a card. + /// - Returns: The view. + public func card() -> AnyView { + Card { self } + } + }