//
//  DemoMode.swift
//  SportsTime
//
//  Environment key and configuration for automated demo mode.
//  When enabled, UI elements auto-select as they scroll into view.
//

import SwiftUI

// MARK: - Demo Mode Environment Key

private struct DemoModeKey: EnvironmentKey {
    static let defaultValue = false
}

extension EnvironmentValues {
    var isDemoMode: Bool {
        get { self[DemoModeKey.self] }
        set { self[DemoModeKey.self] = newValue }
    }
}

// MARK: - Demo Mode Configuration

/// Configuration for the demo flow
enum DemoConfig {
    /// Delay before auto-selecting an item (seconds)
    static let selectionDelay: Double = 0.5

    /// Demo mode date selections
    static let demoStartDate: Date = {
        var components = DateComponents()
        components.year = 2026
        components.month = 6
        components.day = 11
        return Calendar.current.date(from: components) ?? Date()
    }()

    static let demoEndDate: Date = {
        var components = DateComponents()
        components.year = 2026
        components.month = 6
        components.day = 16
        return Calendar.current.date(from: components) ?? Date()
    }()

    /// Demo mode planning mode selection
    static let demoPlanningMode: PlanningMode = .dateRange

    /// Demo mode sport selection
    static let demoSport: Sport = .mlb

    /// Demo mode region selection
    static let demoRegion: Region = .central

    /// Demo mode sort option
    static let demoSortOption: TripSortOption = .mostGames

    /// Demo mode trip index to select (0-indexed)
    static let demoTripIndex: Int = 3
}

// MARK: - Demo Mode Launch Argument

extension ProcessInfo {
    /// Check if app was launched in demo mode
    static var isDemoMode: Bool {
        ProcessInfo.processInfo.arguments.contains("-DemoMode")
    }
}
