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:
@@ -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,18 +20,13 @@ struct DayHeaderRow: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
VStack(alignment: .leading, spacing: 4) {
|
||||||
HStack {
|
HStack {
|
||||||
VStack(alignment: .leading, spacing: 2) {
|
Text("Day \(dayNumber) - \(formattedDate)")
|
||||||
Text("Day \(dayNumber)")
|
|
||||||
.font(.title3)
|
.font(.title3)
|
||||||
.fontWeight(.semibold)
|
.fontWeight(.semibold)
|
||||||
.foregroundStyle(Theme.textPrimary(colorScheme))
|
.foregroundStyle(Theme.textPrimary(colorScheme))
|
||||||
|
|
||||||
Text(formattedDate)
|
|
||||||
.font(.subheadline)
|
|
||||||
.foregroundStyle(Theme.textSecondary(colorScheme))
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer()
|
Spacer()
|
||||||
|
|
||||||
Button(action: onAddTapped) {
|
Button(action: onAddTapped) {
|
||||||
@@ -39,15 +35,27 @@ struct DayHeaderRow: View {
|
|||||||
.foregroundStyle(Theme.warmOrange)
|
.foregroundStyle(Theme.warmOrange)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isEmpty {
|
||||||
|
Text("No items yet, tap + to add")
|
||||||
|
.font(.subheadline)
|
||||||
|
.foregroundStyle(Theme.textSecondary(colorScheme))
|
||||||
|
}
|
||||||
|
}
|
||||||
.padding(.vertical, Theme.Spacing.sm)
|
.padding(.vertical, Theme.Spacing.sm)
|
||||||
.padding(.horizontal, Theme.Spacing.md)
|
.padding(.horizontal, Theme.Spacing.md)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#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))
|
||||||
|
|||||||
Reference in New Issue
Block a user