chore: remove scraper, add docs, add marketing-videos gitignore
- Remove Scripts/ directory (scraper no longer needed) - Add themed background documentation to CLAUDE.md - Add .gitignore for marketing-videos to prevent node_modules tracking Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,7 @@ enum PlanningMode: String, Codable, CaseIterable, Identifiable {
|
||||
case gameFirst // Pick games first, trip around those games
|
||||
case locations // Start/end locations, optional games along route
|
||||
case followTeam // Follow one team's schedule (home + away)
|
||||
case teamFirst // Select teams, find optimal trip windows across season
|
||||
|
||||
var id: String { rawValue }
|
||||
|
||||
@@ -37,6 +38,7 @@ enum PlanningMode: String, Codable, CaseIterable, Identifiable {
|
||||
case .gameFirst: return "By Games"
|
||||
case .locations: return "By Route"
|
||||
case .followTeam: return "Follow Team"
|
||||
case .teamFirst: return "By Teams"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +48,7 @@ enum PlanningMode: String, Codable, CaseIterable, Identifiable {
|
||||
case .gameFirst: return "Build trip around specific games"
|
||||
case .locations: return "Plan route between locations"
|
||||
case .followTeam: return "Follow your team on the road"
|
||||
case .teamFirst: return "Select teams, find best trip windows"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +58,7 @@ enum PlanningMode: String, Codable, CaseIterable, Identifiable {
|
||||
case .gameFirst: return "sportscourt"
|
||||
case .locations: return "map"
|
||||
case .followTeam: return "person.3.fill"
|
||||
case .teamFirst: return "person.2.badge.gearshape"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -258,6 +262,9 @@ struct TripPreferences: Codable, Hashable {
|
||||
/// Trip duration for gameFirst mode sliding windows (number of days)
|
||||
var gameFirstTripDuration: Int
|
||||
|
||||
/// Teams to visit (for Team-First mode) - canonical team IDs
|
||||
var selectedTeamIds: Set<String> = []
|
||||
|
||||
init(
|
||||
planningMode: PlanningMode = .dateRange,
|
||||
startLocation: LocationInput? = nil,
|
||||
@@ -281,7 +288,8 @@ struct TripPreferences: Codable, Hashable {
|
||||
selectedRegions: Set<Region> = [.east, .central, .west],
|
||||
followTeamId: String? = nil,
|
||||
useHomeLocation: Bool = true,
|
||||
gameFirstTripDuration: Int = 7
|
||||
gameFirstTripDuration: Int = 7,
|
||||
selectedTeamIds: Set<String> = []
|
||||
) {
|
||||
self.planningMode = planningMode
|
||||
self.startLocation = startLocation
|
||||
@@ -306,6 +314,7 @@ struct TripPreferences: Codable, Hashable {
|
||||
self.followTeamId = followTeamId
|
||||
self.useHomeLocation = useHomeLocation
|
||||
self.gameFirstTripDuration = gameFirstTripDuration
|
||||
self.selectedTeamIds = selectedTeamIds
|
||||
}
|
||||
|
||||
var totalDriverHoursPerDay: Double {
|
||||
@@ -318,4 +327,9 @@ struct TripPreferences: Codable, Hashable {
|
||||
let days = Calendar.current.dateComponents([.day], from: startDate, to: endDate).day ?? 7
|
||||
return max(1, days)
|
||||
}
|
||||
|
||||
/// Maximum trip duration for Team-First mode (2 days per selected team)
|
||||
var teamFirstMaxDays: Int {
|
||||
selectedTeamIds.count * 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,7 +122,6 @@ struct AnimatedSportsIcon: View {
|
||||
(0.9, 0.85, "mappin.circle.fill", -8, 0.75),
|
||||
(0.5, 0.03, "car.fill", 0, 0.7),
|
||||
(0.5, 0.97, "map.fill", 3, 0.75),
|
||||
(0.25, 0.93, "stadium.fill", -5, 0.7),
|
||||
(0.75, 0.95, "flag.checkered", 7, 0.7),
|
||||
// Middle area icons (will appear behind cards)
|
||||
(0.35, 0.22, "tennisball.fill", -8, 0.65),
|
||||
|
||||
Reference in New Issue
Block a user