"""Map config section keys to Settings UI navigation paths."""

# Derived from web/src/pages/Settings.tsx section mappings
# and web/public/locales/en/views/settings.json menu labels.
#
# Format: section_key -> (group_label, page_label)
# Navigation path: "Settings > {group_label} > {page_label}"

GLOBAL_NAV: dict[str, tuple[str, str]] = {
    "detect": ("Global configuration", "Object detection"),
    "ffmpeg": ("Global configuration", "FFmpeg"),
    "record": ("Global configuration", "Recording"),
    "snapshots": ("Global configuration", "Snapshots"),
    "motion": ("Global configuration", "Motion detection"),
    "objects": ("Global configuration", "Objects"),
    "review": ("Global configuration", "Review"),
    "audio": ("Global configuration", "Audio events"),
    "live": ("Global configuration", "Live playback"),
    "timestamp_style": ("Global configuration", "Timestamp style"),
    "notifications": ("Notifications", "Notifications"),
}

CAMERA_NAV: dict[str, tuple[str, str]] = {
    "detect": ("Camera configuration", "Object detection"),
    "ffmpeg": ("Camera configuration", "FFmpeg"),
    "record": ("Camera configuration", "Recording"),
    "snapshots": ("Camera configuration", "Snapshots"),
    "motion": ("Camera configuration", "Motion detection"),
    "objects": ("Camera configuration", "Objects"),
    "review": ("Camera configuration", "Review"),
    "audio": ("Camera configuration", "Audio events"),
    "audio_transcription": ("Camera configuration", "Audio transcription"),
    "notifications": ("Camera configuration", "Notifications"),
    "live": ("Camera configuration", "Live playback"),
    "birdseye": ("Camera configuration", "Birdseye"),
    "face_recognition": ("Camera configuration", "Face recognition"),
    "lpr": ("Camera configuration", "License plate recognition"),
    "mqtt": ("Camera configuration", "MQTT"),
    "onvif": ("Camera configuration", "ONVIF"),
    "ui": ("Camera configuration", "Camera UI"),
    "timestamp_style": ("Camera configuration", "Timestamp style"),
}

ENRICHMENT_NAV: dict[str, tuple[str, str]] = {
    "semantic_search": ("Enrichments", "Semantic search"),
    "genai": ("Enrichments", "Generative AI"),
    "face_recognition": ("Enrichments", "Face recognition"),
    "lpr": ("Enrichments", "License plate recognition"),
    "classification": ("Enrichments", "Object classification"),
    "audio_transcription": ("Enrichments", "Audio transcription"),
}

SYSTEM_NAV: dict[str, tuple[str, str]] = {
    "go2rtc_streams": ("System", "go2rtc streams"),
    "database": ("System", "Database"),
    "mqtt": ("System", "MQTT"),
    "tls": ("System", "TLS"),
    "auth": ("System", "Authentication"),
    "networking": ("System", "Networking"),
    "proxy": ("System", "Proxy"),
    "ui": ("System", "UI"),
    "logger": ("System", "Logging"),
    "environment_vars": ("System", "Environment variables"),
    "telemetry": ("System", "Telemetry"),
    "birdseye": ("System", "Birdseye"),
    "detectors": ("System", "Detectors and model"),
    "model": ("System", "Detectors and model"),
}

# All known top-level config section keys
ALL_CONFIG_SECTIONS = (
    set(GLOBAL_NAV)
    | set(CAMERA_NAV)
    | set(ENRICHMENT_NAV)
    | set(SYSTEM_NAV)
    | {"cameras"}
)


def get_nav_path(section_key: str, level: str = "global") -> str | None:
    """Get the full navigation path for a config section.

    Args:
        section_key: Config section key (e.g., "record")
        level: "global", "camera", "enrichment", or "system"

    Returns:
        NavPath string like "Settings > Global configuration > Recording",
        or None if not found.
    """
    nav_tables = {
        "global": GLOBAL_NAV,
        "camera": CAMERA_NAV,
        "enrichment": ENRICHMENT_NAV,
        "system": SYSTEM_NAV,
    }

    table = nav_tables.get(level)
    if table is None:
        return None

    entry = table.get(section_key)
    if entry is None:
        return None

    group, page = entry
    return f"Settings > {group} > {page}"


def detect_level(section_key: str) -> str:
    """Detect whether a config section is global, camera, enrichment, or system."""
    if section_key in SYSTEM_NAV:
        return "system"
    if section_key in ENRICHMENT_NAV:
        return "enrichment"
    if section_key in GLOBAL_NAV:
        return "global"
    if section_key in CAMERA_NAV:
        return "camera"
    return "global"
