import SwiftUI /// A torn-calendar-page date badge: month header over a day number and /// weekday, used to give note rows an at-a-glance date. struct CalendarBadge: View { let date: Date @Environment(\.colorScheme) private var colorScheme var body: some View { VStack(spacing: 0) { Text(month) .font(.system(size: 8, weight: .semibold)) .foregroundColor(.white) .frame(maxWidth: .infinity) .padding(.top, 6) .padding(.bottom, 2) .background(Color.accentColor) VStack(spacing: 1) { Text(dayNumber) .font(.system(size: 16, weight: .bold)) Text(dayOfWeek) .font(.system(size: 7)) .foregroundColor(.secondary) } .frame(maxWidth: .infinity) .padding(.top, 3) .padding(.bottom, 5) .background(.quaternary) } .frame(width: 36, height: 44) .clipShape(RoundedRectangle(cornerRadius: 5)) .overlay( RoundedRectangle(cornerRadius: 5) .strokeBorder( colorScheme == .dark ? Color.white.opacity(0.1) : Color.clear, lineWidth: 0.5 ) ) } private var month: String { date.formatted(.dateTime.month(.abbreviated)).uppercased() } private var dayNumber: String { date.formatted(.dateTime.day()) } private var dayOfWeek: String { date.formatted(.dateTime.weekday(.abbreviated)).uppercased() } }