// // CalendarListItem.swift // Workouts // // Created by rzen on 7/18/25 at 8:44 AM. // // Copyright 2025 Rouslan Zenetl. All Rights Reserved. // import SwiftUI struct CalendarListItem: View { var date: Date var title: String var subtitle: String? var subtitle2: String? var count: Int? var body: some View { HStack (alignment: .top) { ZStack { VStack { Text("\(date.abbreviatedWeekday)") .font(.caption) .foregroundColor(.secondary) Text("\(date.dayOfMonth)") .font(.headline) .foregroundColor(.accentColor) Text("\(date.abbreviatedMonth)") .font(.caption) .foregroundColor(.secondary) } .padding([.trailing], 10) } HStack (alignment: .top) { VStack (alignment: .leading) { Text("\(title)") .font(.headline) if let subtitle = subtitle { Text("\(subtitle)") .font(.footnote) } if let subtitle = subtitle2 { Text("\(subtitle)") .font(.footnote) } } if let count = count { Spacer() Text("\(count)") .font(.caption) .foregroundColor(.gray) } } } .frame(maxWidth: .infinity, alignment: .leading) .contentShape(Rectangle()) } } extension Date { private static let monthFormatter: DateFormatter = { let formatter = DateFormatter() formatter.locale = Locale.current formatter.dateFormat = "MMM" return formatter }() private static let dayFormatter: DateFormatter = { let formatter = DateFormatter() formatter.locale = Locale.current formatter.dateFormat = "d" return formatter }() private static let weekdayFormatter: DateFormatter = { let formatter = DateFormatter() formatter.locale = Locale.current formatter.dateFormat = "E" return formatter }() var abbreviatedMonth: String { Date.monthFormatter.string(from: self) } var dayOfMonth: String { Date.dayFormatter.string(from: self) } var abbreviatedWeekday: String { Date.weekdayFormatter.string(from: self) } }