fix(itinerary): add empty state and single-line date format to DayHeaderRow

- Add isEmpty parameter to show "No items yet, tap + to add" text
- Change date format to single line: "Day 1 - Friday, January 17"
- Update preview to test both empty and non-empty states

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-17 21:32:18 -06:00
parent 7700104597
commit 3a4b9f23e8

View File

@@ -10,6 +10,7 @@ import SwiftUI
struct DayHeaderRow: View { struct DayHeaderRow: View {
let dayNumber: Int let dayNumber: Int
let date: Date let date: Date
let isEmpty: Bool
let onAddTapped: () -> Void let onAddTapped: () -> Void
@Environment(\.colorScheme) private var colorScheme @Environment(\.colorScheme) private var colorScheme
@@ -19,24 +20,26 @@ struct DayHeaderRow: View {
} }
var body: some View { var body: some View {
HStack { VStack(alignment: .leading, spacing: 4) {
VStack(alignment: .leading, spacing: 2) { HStack {
Text("Day \(dayNumber)") Text("Day \(dayNumber) - \(formattedDate)")
.font(.title3) .font(.title3)
.fontWeight(.semibold) .fontWeight(.semibold)
.foregroundStyle(Theme.textPrimary(colorScheme)) .foregroundStyle(Theme.textPrimary(colorScheme))
Text(formattedDate) Spacer()
.font(.subheadline)
.foregroundStyle(Theme.textSecondary(colorScheme)) Button(action: onAddTapped) {
Image(systemName: "plus.circle.fill")
.font(.title2)
.foregroundStyle(Theme.warmOrange)
}
} }
Spacer() if isEmpty {
Text("No items yet, tap + to add")
Button(action: onAddTapped) { .font(.subheadline)
Image(systemName: "plus.circle.fill") .foregroundStyle(Theme.textSecondary(colorScheme))
.font(.title2)
.foregroundStyle(Theme.warmOrange)
} }
} }
.padding(.vertical, Theme.Spacing.sm) .padding(.vertical, Theme.Spacing.sm)
@@ -45,9 +48,14 @@ struct DayHeaderRow: View {
} }
#Preview { #Preview {
VStack { VStack(spacing: 16) {
DayHeaderRow(dayNumber: 1, date: Date(), onAddTapped: {}) // Day with items (not empty)
DayHeaderRow(dayNumber: 2, date: Date().addingTimeInterval(86400), onAddTapped: {}) DayHeaderRow(dayNumber: 1, date: Date(), isEmpty: false, onAddTapped: {})
Divider()
// Empty day
DayHeaderRow(dayNumber: 2, date: Date().addingTimeInterval(86400), isEmpty: true, onAddTapped: {})
} }
.padding() .padding()
.background(Color.gray.opacity(0.1)) .background(Color.gray.opacity(0.1))