Add nearby POIs to Add-to-Day sheet and improve PlaceSearchSheet empty state

- Add mapItem field to POISearchService.POI for Apple Maps integration
- Merge description + location into single combined card in QuickAddItemSheet
- Auto-load nearby POIs when regionCoordinate is available, with detail sheet
- Create POIDetailSheet with map preview, metadata, and one-tap add-to-day
- Add poiAddedToDay/poiDetailViewed analytics events
- Add initial state to PlaceSearchSheet with search suggestions and flow layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-19 10:45:36 -06:00
parent e7420061a5
commit e6c4b8e12b
5 changed files with 583 additions and 95 deletions

View File

@@ -75,6 +75,11 @@ enum AnalyticsEvent {
case onboardingPaywallViewed
case onboardingPaywallDismissed
// MARK: - POI
case poiAddedToDay(poiName: String, category: String, day: Int)
case poiDetailViewed(poiName: String, category: String)
// MARK: - Errors
case errorOccurred(domain: String, message: String, screen: String?)
@@ -122,6 +127,8 @@ enum AnalyticsEvent {
case .pollShared: return "poll_shared"
case .onboardingPaywallViewed: return "onboarding_paywall_viewed"
case .onboardingPaywallDismissed: return "onboarding_paywall_dismissed"
case .poiAddedToDay: return "poi_added_to_day"
case .poiDetailViewed: return "poi_detail_viewed"
case .errorOccurred: return "error_occurred"
}
}
@@ -249,6 +256,12 @@ enum AnalyticsEvent {
case .onboardingPaywallDismissed:
return [:]
case .poiAddedToDay(let poiName, let category, let day):
return ["poi_name": poiName, "category": category, "day": day]
case .poiDetailViewed(let poiName, let category):
return ["poi_name": poiName, "category": category]
case .errorOccurred(let domain, let message, let screen):
var props: [String: Any] = ["domain": domain, "message": message]
if let screen { props["screen"] = screen }