feat: add WCAG AA accessibility app-wide, fix CloudKit container config, remove debug logs
- Add VoiceOver labels, hints, and element grouping across all 60+ views - Add Reduce Motion support (Theme.Animation.prefersReducedMotion) to all animations - Replace fixed font sizes with semantic Dynamic Type styles - Hide decorative elements from VoiceOver with .accessibilityHidden(true) - Add .minimumHitTarget() modifier ensuring 44pt touch targets - Add AccessibilityAnnouncer utility for VoiceOver announcements - Improve color contrast values in Theme.swift for WCAG AA compliance - Extract CloudKitContainerConfig for explicit container identity - Remove PostHog debug console log from AnalyticsManager Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -66,12 +66,36 @@ struct RegionMapSelector: View {
|
||||
HStack(spacing: 0) {
|
||||
Button { onToggle(.west) } label: { Color.clear }
|
||||
.accessibilityIdentifier("wizard.regions.west")
|
||||
.accessibilityLabel("West region")
|
||||
.accessibilityValue(selectedRegions.contains(.west) ? "Selected" : "Not selected")
|
||||
.accessibilityHint(
|
||||
selectedRegions.contains(.west)
|
||||
? "Double-tap to deselect this region"
|
||||
: "Double-tap to select this region"
|
||||
)
|
||||
.accessibilityAddTraits(selectedRegions.contains(.west) ? .isSelected : [])
|
||||
.frame(maxWidth: .infinity)
|
||||
Button { onToggle(.central) } label: { Color.clear }
|
||||
.accessibilityIdentifier("wizard.regions.central")
|
||||
.accessibilityLabel("Central region")
|
||||
.accessibilityValue(selectedRegions.contains(.central) ? "Selected" : "Not selected")
|
||||
.accessibilityHint(
|
||||
selectedRegions.contains(.central)
|
||||
? "Double-tap to deselect this region"
|
||||
: "Double-tap to select this region"
|
||||
)
|
||||
.accessibilityAddTraits(selectedRegions.contains(.central) ? .isSelected : [])
|
||||
.frame(maxWidth: .infinity)
|
||||
Button { onToggle(.east) } label: { Color.clear }
|
||||
.accessibilityIdentifier("wizard.regions.east")
|
||||
.accessibilityLabel("East region")
|
||||
.accessibilityValue(selectedRegions.contains(.east) ? "Selected" : "Not selected")
|
||||
.accessibilityHint(
|
||||
selectedRegions.contains(.east)
|
||||
? "Double-tap to deselect this region"
|
||||
: "Double-tap to select this region"
|
||||
)
|
||||
.accessibilityAddTraits(selectedRegions.contains(.east) ? .isSelected : [])
|
||||
.frame(maxWidth: .infinity)
|
||||
}
|
||||
}
|
||||
@@ -166,6 +190,7 @@ struct RegionMapSelector: View {
|
||||
Circle()
|
||||
.stroke(Color.white.opacity(0.5), lineWidth: isSelected ? 2 : 0)
|
||||
)
|
||||
.accessibilityHidden(true)
|
||||
|
||||
VStack(alignment: .leading, spacing: 1) {
|
||||
Text(region.shortName)
|
||||
|
||||
Reference in New Issue
Block a user