tasks: rebalance row layout, countdown+icons move to right column (KC-62 follow-up)
The category icon column sat empty for most rows (default tasks have no glyph/alarm/series), leaving a lone repeat icon floating in dead space on the right per user's device screenshot. Move the countdown label out from under the title into a trailing column paired with the indicator icons, so both sides of the row carry equal weight. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2165,3 +2165,14 @@ imbalance confirmed via `git stash` to predate this change — a comment
|
||||
artifact, not introduced here). `TagChip` itself is left intact in
|
||||
`SharedComponents.swift` since it's a generic shared component, just no
|
||||
longer called from these two sites.
|
||||
|
||||
### Follow-up — right side was dead space
|
||||
Device screenshot of the "Later" list showed the icon column sitting empty
|
||||
for most rows (default `.reminder` tasks have no glyph, no alarm, no
|
||||
series), leaving a lone floating repeat icon on recurring rows and a big
|
||||
gap everywhere else. Rebalanced `TaskRowView`: the countdown (`in 1 wk`
|
||||
etc., previously crammed under the title on the left) moved to a trailing
|
||||
`VStack` on the right, with the icon row underneath it — so the row now
|
||||
reads title/date on the left, countdown/indicators on the right, instead of
|
||||
all metadata piled on the left and the right column empty. `TodayTLRow` was
|
||||
left as-is (its leading time-track column already fills that role there).
|
||||
|
||||
@@ -1355,40 +1355,41 @@ struct TaskRowView: View {
|
||||
.font(AppFonts.sans(13))
|
||||
.foregroundColor(AppColors.text(cs))
|
||||
if let d = task.dueDate, showDetails {
|
||||
HStack(spacing: 4) {
|
||||
Text("\(dueFmt.string(from: d))\(task.isRecurring ? " · \(task.recurrenceLabel ?? "Repeat")" : "")")
|
||||
.font(AppFonts.mono(9.5))
|
||||
.foregroundColor(AppColors.text3(cs))
|
||||
Text("·")
|
||||
.font(AppFonts.mono(9.5))
|
||||
.foregroundColor(AppColors.text3(cs).opacity(0.4))
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(minLength: 8)
|
||||
|
||||
// Right column mirrors the left: countdown metadata on top,
|
||||
// icon-only category/reminder/series indicators below — fills
|
||||
// what used to be dead space instead of a lone floating icon.
|
||||
VStack(alignment: .trailing, spacing: 3) {
|
||||
if let d = task.dueDate, showDetails {
|
||||
Text(countdownLabel(to: d))
|
||||
.font(AppFonts.mono(9.5, weight: .semibold))
|
||||
.foregroundColor(countdownColor(to: d))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
// ⏰ reminder · 🔁 recurring · tag icon indicators (TickTick-style — icon only, no text badge)
|
||||
HStack(spacing: 5) {
|
||||
if let glyph = task.category.glyph {
|
||||
Image(systemName: glyph)
|
||||
.font(.system(size: 11))
|
||||
.font(.system(size: 10.5))
|
||||
.foregroundColor(task.quadrant.color)
|
||||
}
|
||||
if task.reminderDate != nil || task.constantReminder {
|
||||
Image(systemName: "alarm")
|
||||
.font(.system(size: 11))
|
||||
.font(.system(size: 10.5))
|
||||
.foregroundColor(AppColors.text3(cs))
|
||||
}
|
||||
if task.isRecurring {
|
||||
Image(systemName: "repeat")
|
||||
.font(.system(size: 11))
|
||||
.font(.system(size: 10.5))
|
||||
.foregroundColor(AppColors.text3(cs))
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.trailing, 9)
|
||||
}
|
||||
.frame(minHeight: 48)
|
||||
|
||||
Reference in New Issue
Block a user