ListlessiOS/Helpers/ItemCardModifier.swift (1025B)
1import SwiftUI
2
3struct ItemCardModifier: ViewModifier {
4 var accentColor: Color
5 var isSelected: Bool
6
7 static let shape = UnevenRoundedRectangle(
8 topLeadingRadius: 0, bottomLeadingRadius: 0,
9 bottomTrailingRadius: ItemRowMetrics.trailingCornerRadius,
10 topTrailingRadius: ItemRowMetrics.trailingCornerRadius
11 )
12
13 func body(content: Content) -> some View {
14 content
15 .clipShape(Self.shape)
16 .overlay(alignment: .leading) {
17 Rectangle()
18 .fill(accentColor)
19 .frame(width: ItemRowMetrics.accentBarWidth)
20 }
21 .overlay(
22 isSelected
23 ? Self.shape
24 .strokeBorder(accentColor.opacity(0.40), lineWidth: 2)
25 : nil
26 )
27 }
28}
29
30extension View {
31 func itemCard(accentColor: Color, isSelected: Bool) -> some View {
32 modifier(ItemCardModifier(accentColor: accentColor, isSelected: isSelected))
33 }
34}