From d5b20f5772c659cc14b5edd04accc96a0e0ec497 Mon Sep 17 00:00:00 2001 From: Matthew Lam Date: Sun, 8 Mar 2026 19:15:52 -0400 Subject: [PATCH 1/3] chore: add accessibility labels and hints to YearProgress views Add .accessibilityLabel() and .accessibilityHint() to all interactive elements in YearProgressView and YearProgressDetailView: close button, year selector menu, share button, day dot buttons, and previous/next day navigation buttons. Mark decorative chevron.down icon as accessibilityHidden. --- App/Features/YearProgress/YearProgressView.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/App/Features/YearProgress/YearProgressView.swift b/App/Features/YearProgress/YearProgressView.swift index 5cb94b4..5c7e8af 100644 --- a/App/Features/YearProgress/YearProgressView.swift +++ b/App/Features/YearProgress/YearProgressView.swift @@ -60,6 +60,8 @@ struct YearProgressView: View { .clipShape(Circle()) } .buttonStyle(.plain) + .accessibilityLabel("Close") + .accessibilityHint("Dismisses the year progress view") Spacer() @@ -79,8 +81,11 @@ struct YearProgressView: View { Image(systemName: "chevron.down") .font(.tenxMicroSemibold) .foregroundStyle(AppColors.textSecondary) + .accessibilityHidden(true) } } + .accessibilityLabel("Year \(viewModel.selectedYear)") + .accessibilityHint("Opens a menu to select a different year") Spacer() @@ -95,6 +100,8 @@ struct YearProgressView: View { .clipShape(Circle()) } .buttonStyle(.plain) + .accessibilityLabel("Share") + .accessibilityHint("Shares the year progress as an image") } } @@ -148,6 +155,7 @@ struct YearProgressView: View { } .buttonStyle(.plain) .accessibilityLabel(dayAccessibilityLabel(for: day)) + .accessibilityHint("Shows focus details for this day") } } .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) @@ -303,6 +311,8 @@ private struct YearProgressDetailView: View { .foregroundStyle(AppColors.textSecondary) } .buttonStyle(.plain) + .accessibilityLabel("Previous day") + .accessibilityHint("Shows the previous day's focuses") .disabled(!canMoveBackward) .opacity(canMoveBackward ? 1 : 0.3) @@ -322,6 +332,8 @@ private struct YearProgressDetailView: View { .foregroundStyle(AppColors.textSecondary) } .buttonStyle(.plain) + .accessibilityLabel("Next day") + .accessibilityHint("Shows the next day's focuses") .disabled(!canMoveForward) .opacity(canMoveForward ? 1 : 0.3) } From 5c383837e04c94f58d2ba68a1f53e2a523ed3982 Mon Sep 17 00:00:00 2001 From: Matthew Lam Date: Sun, 8 Mar 2026 20:02:11 -0400 Subject: [PATCH 2/3] fix: add accessibility label to footer text for natural VoiceOver reading --- App/Features/YearProgress/YearProgressView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/App/Features/YearProgress/YearProgressView.swift b/App/Features/YearProgress/YearProgressView.swift index 5c7e8af..88920f5 100644 --- a/App/Features/YearProgress/YearProgressView.swift +++ b/App/Features/YearProgress/YearProgressView.swift @@ -168,6 +168,7 @@ struct YearProgressView: View { .font(.tenxCaption) .foregroundStyle(AppColors.textSecondary) .padding(.top, 4) + .accessibilityLabel("\(summary.daysLeft) days left, \(String(format: "%.1f", summary.yearCompletionPercent)) percent complete") } private func dayAccessibilityLabel(for day: YearDayDot) -> String { From 3ebc01672ed1ffb764fe24500d0d17f3112ec4a5 Mon Sep 17 00:00:00 2001 From: Matthew Lam Date: Sun, 8 Mar 2026 20:14:05 -0400 Subject: [PATCH 3/3] fix: remove repetitive hint from 365 day dot buttons --- App/Features/YearProgress/YearProgressView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/App/Features/YearProgress/YearProgressView.swift b/App/Features/YearProgress/YearProgressView.swift index 88920f5..47faf83 100644 --- a/App/Features/YearProgress/YearProgressView.swift +++ b/App/Features/YearProgress/YearProgressView.swift @@ -155,7 +155,6 @@ struct YearProgressView: View { } .buttonStyle(.plain) .accessibilityLabel(dayAccessibilityLabel(for: day)) - .accessibilityHint("Shows focus details for this day") } } .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)