From 6794e6922e90f2ca8512823185a115bc4251fbf3 Mon Sep 17 00:00:00 2001 From: david-swift Date: Sun, 5 Jan 2025 11:40:18 +0100 Subject: [PATCH] Add support for cards --- Sources/Core/View/Card.swift | 56 ++++++++++++++++++++++++++++++++ Sources/MacBackend/AnyView.swift | 6 ++++ 2 files changed, 62 insertions(+) create mode 100644 Sources/Core/View/Card.swift 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 } + } + }