fix: improve text contrast for badges, category chips, and separators

- Change attraction category color from .yellow to orange variant for
  readable text in both light and dark mode (QuickAddItemSheet, POIDetailSheet)
- Fix "optional" badge to use textPrimary-based colors for strong contrast
- Bump paywall dashed separator from 0.4 to 0.6 opacity
- Fix SuggestedTripCard bullet separator from textMuted(0.5) to textSecondary

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-20 14:26:21 -06:00
parent c52b70089e
commit b062ced000
4 changed files with 8 additions and 12 deletions

View File

@@ -51,7 +51,7 @@ struct SuggestedTripCard: View {
} }
Text("") Text("")
.foregroundStyle(Theme.textMuted(colorScheme).opacity(0.5)) .foregroundStyle(Theme.textSecondary(colorScheme))
Label { Label {
Text(suggestedTrip.trip.stops.count == 1 ? "1 city" : "\(suggestedTrip.trip.stops.count) cities") Text(suggestedTrip.trip.stops.count == 1 ? "1 city" : "\(suggestedTrip.trip.stops.count) cities")

View File

@@ -66,7 +66,7 @@ struct PaywallView: View {
// Dashed ticket perforation separator // Dashed ticket perforation separator
Line() Line()
.stroke(style: StrokeStyle(lineWidth: 1.5, dash: [6, 4])) .stroke(style: StrokeStyle(lineWidth: 1.5, dash: [6, 4]))
.foregroundStyle(Theme.textMuted(colorScheme).opacity(0.4)) .foregroundStyle(Theme.textMuted(colorScheme).opacity(0.6))
.frame(height: 1) .frame(height: 1)
.padding(.horizontal, Theme.Spacing.lg) .padding(.horizontal, Theme.Spacing.lg)
.padding(.top, Theme.Spacing.lg) .padding(.top, Theme.Spacing.lg)

View File

@@ -175,7 +175,7 @@ struct POIDetailSheet: View {
case .coffee: return .brown case .coffee: return .brown
case .hotel: return .blue case .hotel: return .blue
case .parking: return .green case .parking: return .green
case .attraction: return .yellow case .attraction: return Color.orange.opacity(0.85)
case .entertainment: return .purple case .entertainment: return .purple
} }
} }

View File

@@ -345,7 +345,7 @@ struct QuickAddItemSheet: View {
case .coffee: return .brown case .coffee: return .brown
case .hotel: return .blue case .hotel: return .blue
case .parking: return .green case .parking: return .green
case .attraction: return .yellow case .attraction: return Color.orange.opacity(0.85)
case .entertainment: return .purple case .entertainment: return .purple
} }
} }
@@ -366,16 +366,12 @@ struct QuickAddItemSheet: View {
if optional { if optional {
Text("optional") Text("optional")
.font(.caption) .font(.caption2.weight(.medium))
.foregroundStyle(Theme.textSecondary(colorScheme)) .foregroundStyle(Theme.textPrimary(colorScheme).opacity(0.7))
.padding(.horizontal, 8) .padding(.horizontal, 8)
.padding(.vertical, 3) .padding(.vertical, 3)
.background(Theme.surfaceGlow(colorScheme).opacity(1.5)) .background(Theme.textPrimary(colorScheme).opacity(0.1))
.clipShape(Capsule()) .clipShape(Capsule())
.overlay(
Capsule()
.strokeBorder(Theme.textMuted(colorScheme).opacity(0.3), lineWidth: 0.5)
)
} }
} }
} }
@@ -681,7 +677,7 @@ private struct POIRow: View {
case .coffee: return .brown case .coffee: return .brown
case .hotel: return .blue case .hotel: return .blue
case .parking: return .green case .parking: return .green
case .attraction: return .yellow case .attraction: return Color.orange.opacity(0.85)
case .entertainment: return .purple case .entertainment: return .purple
} }
} }