Add support for cards
All checks were successful
Deploy Docs / publish (push) Successful in 3m46s
SwiftLint / SwiftLint (push) Successful in 4s

This commit is contained in:
david-swift 2025-01-05 11:40:18 +01:00
parent faffc6da0f
commit 6794e6922e
2 changed files with 62 additions and 0 deletions

View File

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

View File

@ -104,4 +104,10 @@ extension AnyView {
}
}
/// Make the view a card.
/// - Returns: The view.
public func card() -> AnyView {
Card { self }
}
}