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:
@@ -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")
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user