diff --git a/App/Features/Settings/DiagnosticsView.swift b/App/Features/Settings/DiagnosticsView.swift index 38d96ee..57c0de2 100644 --- a/App/Features/Settings/DiagnosticsView.swift +++ b/App/Features/Settings/DiagnosticsView.swift @@ -37,17 +37,20 @@ struct DiagnosticsView: View { Button("Copy diagnostics") { copyDiagnostics() } + .accessibilityHint("Copies diagnostic information to clipboard") .listRowBackground(AppColors.surface) Button("Force widget refresh") { let store = TenXStore(context: modelContext) WidgetSnapshotService(store: store).refreshSnapshot(todayKey: DayKey.make()) } + .accessibilityHint("Regenerates the widget snapshot from current data") .listRowBackground(AppColors.surface) Button("Reload widget timelines") { WidgetCenter.shared.reloadTimelines(ofKind: SharedConstants.widgetKind) } + .accessibilityHint("Tells the system to reload all widget timelines") .listRowBackground(AppColors.surface) } } diff --git a/App/Features/Settings/NotificationTimePickerView.swift b/App/Features/Settings/NotificationTimePickerView.swift index 97ee7de..fc68dad 100644 --- a/App/Features/Settings/NotificationTimePickerView.swift +++ b/App/Features/Settings/NotificationTimePickerView.swift @@ -24,6 +24,9 @@ struct NotificationTimePickerView: View { } } .buttonStyle(.plain) + .accessibilityLabel("Morning reminder time") + .accessibilityValue(formattedTime) + .accessibilityHint("Opens a time picker to change the morning reminder time") .sheet(isPresented: $isPickerPresented) { TimePickerSheet(hour: $hour, minute: $minute) .presentationDetents([.height(320)]) @@ -70,6 +73,7 @@ private struct TimePickerSheet: View { dismiss() } .font(.tenxBody) + .accessibilityHint("Closes the time picker") } .padding(.horizontal, 20) diff --git a/App/Features/Settings/SettingsSheetView.swift b/App/Features/Settings/SettingsSheetView.swift index bd05fcb..0710f24 100644 --- a/App/Features/Settings/SettingsSheetView.swift +++ b/App/Features/Settings/SettingsSheetView.swift @@ -45,12 +45,14 @@ struct SettingsSheetView: View { Toggle("Midday check-in", isOn: $middayReminderEnabled) .font(.tenxBody) + .accessibilityHint(middayReminderEnabled ? "Disables the midday check-in reminder" : "Enables a midday reminder to check your focus progress") .onChange(of: middayReminderEnabled) { _, _ in scheduleNotifications() } Toggle("Evening reflection", isOn: $eveningReminderEnabled) .font(.tenxBody) + .accessibilityHint(eveningReminderEnabled ? "Disables the evening reflection reminder" : "Enables an evening reminder to reflect on your day") .onChange(of: eveningReminderEnabled) { _, _ in scheduleNotifications() } @@ -68,6 +70,7 @@ struct SettingsSheetView: View { NotificationScheduler.shared.openSystemSettings() } .buttonStyle(PrimaryButtonStyle()) + .accessibilityHint("Opens the system notification settings for this app") } #if DEBUG @@ -75,6 +78,7 @@ struct SettingsSheetView: View { viewModel.scheduleTest() } .buttonStyle(PrimaryButtonStyle()) + .accessibilityHint("Sends a test notification to verify delivery") #endif } @@ -87,6 +91,7 @@ struct SettingsSheetView: View { dismiss() } .buttonStyle(PrimaryButtonStyle()) + .accessibilityHint("Returns to the onboarding carousel immediately") Text("Returns to the onboarding carousel immediately.") .font(.tenxCaption) @@ -132,6 +137,8 @@ struct SettingsSheetView: View { .clipShape(Circle()) } .buttonStyle(.plain) + .accessibilityLabel("Close") + .accessibilityHint("Dismisses the settings screen") } }